良いコード(リファクタというか書き直したコード)と悪いコード(元のコード)をミニマップで比較してみました。
環境
- ソースはPython2.7
- PyCharmのCodeGlanceというプラグインでミニマップを表示
- カラーテーマ:Darcula
- ミニマップは横幅110桁、1行の高さは1ピクセルと3ピクセルで表示
ミニマップ
AとB、どちらが良いコードでどちらが悪いコードでしょうか?
1行1ピクセルで表示
1行3ピクセルで表示
比較
全体の文字量
Aは全体的に文字がぎゅうぎゅうに詰め込まれている印象です。
空行が少なくて1行の文字数も多いからです。
Bは空行を適度に含んでいるためすっきりとした印象です。
コードの左側
Aは左側に空白が多くて凸凹が目立ちます。
forやifのネストが深く、且つその中でダラダラと処理を書いている箇所が多いからです。
Bはネストが浅く左側が全体的にフラットです。
コードの右側
Aは右側にも文字が多く、右端いっぱいまで文字がある行も目立ちます。
これは引数が多い関数の呼び出しなどが改行なしで1行で書かれている箇所が多いからです。
Bでは長い行には適切に改行を入れているので、右側に空白が目立ちます。
文字列リテラルの量
■■■の色は文字列リテラルを表しますが、Aではこれが非常に多いです。
これはデータの格納にdictを使いまくっているからです。
Bではデータの格納にクラスを使用しているので文字列リテラルは少なくなっています。
わかったこと
- 良いコードはミニマップで見ても美しい
- 悪いコードはミニマップで見ても汚さが滲み出ている