はじめに
アンリーダブルコード。
人には読めないけどコンピューターには読める奇跡のコード。
しばしば技術的負債と呼ばれ、リファクタリングすべきかどうかの議論がXなどを騒がせる。
人が書いているのに人には読めないコード。
なぜそのようなコードが生まれるのでしょう。
長くてまとまりがない話ってどうですか?
長くてまとまりがない話、どう思いますか?
その話を何度も聞かされることになったら、どう思いますか?
『長くてまとまりのない関数。』
『粒度の異なる脈絡のない処理がバラバラと書かれた関数。』
『あちこちからコピペしてきたのかチグハグなコメントや処理。』
『実際の処理と名称が全く異なる関数。』
コンピューター相手なら、平気で書けちゃいますね。
人間相手なら、途中で分からなそうな顔をしたり次回から話を聞いてくれなくなったりもしますが、コンピューター相手だと、それがないです。
もっと人間にとっては分かりやすいコードが存在していても、コンピューターは文法的にエラーが無い限りは黙って動きます。
構造的に『「人間が理解しやすいコード」ではないとコンピューターも動かない』、という状況にならない限りはアンリーダブルなコードが生まれてしまいそうです。
構成力・整理力・文章力
「人間が理解しやすいコード」は、分かりやすい日本語をプログラムに翻訳したものです。
分かりやすいプログラムを書くには構成力・整理力・文章力が必要ということになります。
理路整然と要点をまとめて、主語や述語を省略せずに話をトピック事に区切って伝える。
これができるだけで大分分かりやすいプログラムが書ける様になるのではないかと思います。
プログラミングは日本語で書かれた設計を、コンピューターの分かる言語に翻訳する仕事ですので。
わたし達は、日本語なら自由自在に使いこなせると思いがちですが、実はそうではないです。
Line等で短文のやり取りをするぐらいで、まとまった文章を書く機会がほとんどないので、構成力・整理力・文章力がないことは普通のことかと思います。不便なことに、人間は使わない能力が衰える様にできているので。
本屋に構成力・整理力・文章力をカイゼンするための書籍がたくさん並んでいることからも『できるようになりたい人』が一定数いると分かります。
それらの本を読めば翌日にはカイゼンしているかというとそんなことはないです。
ダイエット本を読んでも翌日に痩せてはいないのと同じです。
抽象化された法則やルールはシンプルですが、具体化して使いこなすには実践の反復が必要なのです。
本を読んで、法則やルールを覚えて、何らかのアウトプットをすることで実践の反復を行わないとカイゼンしません。
リーダブルコード
文章力がついてきたら、コードをリーダブルにする訓練をしたいところです。
こちらも当然、読んだだけでは効果がなく、年単位での実践の反復が必要かと思います。
以下に、ありがたい要約がありましたので添付しておきます。
おわりに
今回は構造的にアンリーダブルなコードが書かれるケースについて考察をしました。1
リーダブルなコードを書くには、今自分が書いているコードが「どのようなものか」の把握、カイゼンに向けての法則やルールの学習、および学習したことを定着させるための反復が必要かと思いました。
おまけ
-
kaku3 - Qiita記事一覧
ポエム多め。PM、メンター、未経験エンジニアや新卒向け記事など。 -
エンジニアのためのお仕事問題集
2030年にIT人材が最大79万人不足するとのことで、学習用の資料をgitで無料公開してます(不定期更新)。
よろしければどうぞ。
-
リリース優先、プロト、フィジビリなどのコードは考察外 ↩