2016/04/13
スパゲッティコードを整理してみる
vimで条件分岐を整理して書くコツ
プログラムを実装している際に
言語や環境によっては煩雑なコードをどうしても避けられない局面があります。
言語や環境によっては煩雑なコードをどうしても避けられない局面があります。
その際に、状態を整理して書くコツの一つとして
statementの処理内容を省いて単純化する方法を紹介します。
例えばこんなコード
適当に書いたふがふがコードです。
実際はもっと酷いコードを間に当たります。
実際はもっと酷いコードを間に当たります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | if (hoge == "fugafuga") { for (int i = 0 ; i < 10 ; i++) { switch (fuga) { case 1: case 2: case 3: typo = 3; break; case 4: case 5: case 6: typo = 6; break; case 7: case 8: case 9: typo = 9; break; default: 0; } foo = 0; while (foo < 10) { typo++; foo++; } } } else { foo = 1; } |
最初のif文が長すぎて下の方にスクロールしている間にも
他の制御構造があって混乱を招きます。
vimの折りたたみ機能を使ってみる
最初の条件分岐を中括弧3つで括るだけです。
実際は以下のように書き換えます。
1 2 3 4 5 6 7 8 9 | if (hoge == "fugafuga") { // {{{fugafuga_if for (int i = 0 ; i < 10 ; i++) { .... } // }}}fugafuga_if } else { foo = 1; } |
これを組み込んだ後で
1 2 | let php_folding=1 set foldmethod=marker |
のように設定を書き換えたのち、、
中括弧で括った部分で z-c と入力すると
以下のようなスクリーン・ショット画像のように短縮します。
最初の開き中括弧以降がコメントとして表示されます。
多重構造も可能なため、煩雑なコードも自分用に整理出来ます。
ただし中括弧自体はvim用のコメント文なので、これはこれで不要!
関数やクラスは、このような書き加えをしなくても開き閉じが出来ます。
Author Profile
スターフィールド編集部
SHARE