2023-12-09

最短時間理解可能コードとは

コードを書く上で重要なことは?という質問に対して、アスペならば「実行できること」と答えるだろう。

当たり前なことしか言っていない。「実行できること」という文からは全く有益な知見を得られない。

実行できることは重要性ではなく、必要性である重要性とは、必要なことをすべてやった上でなおやる価値のあることを意味する。

そう考えた時に私がよく思うのは「最短時間理解可能であることが重要であると思うわけである

しかしここに宗教がある。そもそも人間物事理解するプロセスは人それぞれである

私は一度、関数モジュールで適切に分離するためのリファクタリングというものを行ったことがある。

というのも、一つの関数に万を超える行が書かれていたため、上司リファクタリング命令したためである

具体的詳細はprivateメソッドに、公開する必要のあるものはpublicメソッドに移した。

そして当初働いていた職場での反応はどうだったかというと、「スパゲッティコード」だというのだ。

スパゲッティコード?一つの関数に万を超える行があるほうがスパゲッティだと普通は思うだろう。

ところが、彼らの脳内では、「常にコードの詳細が見えていなければ気がすまない」という、カプセル化無視する思想で動いていたため、関数化すると関数の最下層まで辿らないと気がすまないらしかったのである

このようにして、教育の無い人間コードの読み方もカプセル化も知らないので、非生産的方法が最短の方法になってしまうのである

コードを最短で理解するためにはどうするのか。基礎知識教育された集団の中に身を置くのがまず先決である

例えばcalc_monthly_salary_yen(Person p)という行が存在した時、いちいちcalc_monthly_salary_yenの中身を常に見に行くような人たちはダメだ。

人間データ入力すれば円単位で月の給料計算してくれるんだろう」とざっくりと自然言語的に読み進められる人たちでなければ「最短理解」は難しい。

まり最短理解するためのコードを書いた時に、それが本当に最短理解されるためには事前の教養必要なのである

教養のないところに生産性はない。悪いことは言わない。ゴッドオブジェクト管理するような会社からは逃げ出せ。

  • おそらくはcalc_monthly_salary_yen(Person p)がpに破壊的な変更を加えるようなメソッドを見てきた者達だ。 面構えが違う。

    • そんな変更ができる時点でカプセル化が徹底されてないんだよな

  • いきなり大規模なリファクタしてぶつけたのが良くないのでは、 どんなに先進的な開発手法を採用しているチームでも、誰にも相談せずに馬鹿でかい前衛的なものを作ってぶつけると上...

    • 誰にも相談せずに リファクタリングしろという命令があったんだよ 命令上司はリファクタリングして良くなったと言ったが、他のコーダーは意図を分かってなかったみたい

      • 上司に死ねって言われたら死ぬ社員かよ。職場変わっても上司にスケープゴートにされるぞ。 「誰にも相談せずに」ってのは「めんどくせえから細かいこと質問してくんな」ってのが相...

        • 職場を変わったのは5年前だけど、普通にエンジニアのレベルが高いのでゴッドオブジェクトもなければ1万行の関数もなくて仕事は超楽だよ

        • 横だが、なぜ君が上から助言を?

  • こういうの見ると、窓割れを放置する組織って確かにあるよなぁとしみじみする 自分が完全に管理下にあるコードというのは、誰かがpullリクを送っても、審美的観点から却下したりでき...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん