クソコードと認識することについて 〜ソースコードの解像度〜
2021/04/15
2022/07/06
プログラマなら、良いソースコードを書きたい。クソコードを書きたいプログラマは、居ないはず。 ソースコードを読んでクソコードと感じるのは、どうゆう時なんだろうか。
クソコードと感じる時
- 設計ミス(データベース設計/クラス設計)により本質的でない処理に、本当に実現したいことが埋もれてしまっている。
- 変数等の命名が適切でない、構造が適切でないために、意図が伝わりにくい。
- 自分のソースコード読解力、デザインパターンの知識が無いため、読めない。または読むのに苦労する。
クソコードと判断してしまう原因は、書き手の問題と読み手の問題が混じっていることもありそう。
ソースコードの解像度
コードの善し悪しを考える上で、「ソースコードの解像度」ってのが鍵になる気がしている。
— smeghead (@smeghead) April 13, 2021
熟練プログラマは、ソースコードを見る時の解像度が高いし、解像度の高いソースコードを書ける。
未熟なプログラマは、ソースコードから解像度の低い情報しか汲み取れないし、解像度の低いソースコードを書く。
音楽で例えると、特に音楽が好きでない人と、プロの人が同じ曲を1回聴いた場合、プロの人の方が曲の情報をより多く受け取ることができるのは、自然なこととして理解できると思う。これはプロの人の音楽に対する理解の解像度が高いと言えると思う。 音楽の作り手であるプロの人が十年以上培ってきた技術を駆使して表現したもの全てを、特に音楽が好きでない人が同じ解像度で把握できるはずがない。
プログラムでも同じことが起こっているはず。 初学者と中級者と熟練者がいた場合、熟練度が高い程、読む時のソースコード解釈の解像度が高いし、書く特は解像度が高いソースコードを書ける。
中級者は、最近の自分の成功体験のバイアスから初学者の書いたコードをクソコード扱いしがちだし、その割に熟練者のコードを読む時には自分の理解できる解像度までしか読めないので、熟練者の書いたコードの優れた点を理解できない。場合によっては熟練者が書いたコードでさえクソコード扱いしてしまうという状況が発生しがちなんでないかな?