コードを書く上で重要なことは?という質問に対して、アスペならば「実行できること」と答えるだろう。
当たり前なことしか言っていない。「実行できること」という文からは全く有益な知見を得られない。
実行できることは重要性ではなく、必要性である。重要性とは、必要なことをすべてやった上でなおやる価値のあることを意味する。
そう考えた時に私がよく思うのは「最短時間で理解可能」であることが重要であると思うわけである。
しかしここに宗教がある。そもそも、人間が物事を理解するプロセスは人それぞれである。
私は一度、関数やモジュールで適切に分離するためのリファクタリングというものを行ったことがある。
というのも、一つの関数に万を超える行が書かれていたため、上司がリファクタリングを命令したためである。
具体的詳細はprivateメソッドに、公開する必要のあるものはpublicメソッドに移した。
そして当初働いていた職場での反応はどうだったかというと、「スパゲッティコード」だというのだ。
スパゲッティコード?一つの関数に万を超える行があるほうがスパゲッティだと普通は思うだろう。
ところが、彼らの脳内では、「常にコードの詳細が見えていなければ気がすまない」という、カプセル化を無視する思想で動いていたため、関数化すると関数の最下層まで辿らないと気がすまないらしかったのである。
このようにして、教育の無い人間はコードの読み方もカプセル化も知らないので、非生産的な方法が最短の方法になってしまうのである。
コードを最短で理解するためにはどうするのか。基礎知識を教育された集団の中に身を置くのがまず先決である。
例えばcalc_monthly_salary_yen(Person p)という行が存在した時、いちいちcalc_monthly_salary_yenの中身を常に見に行くような人たちはダメだ。
「人間のデータを入力すれば円単位で月の給料を計算してくれるんだろう」とざっくりと自然言語的に読み進められる人たちでなければ「最短理解」は難しい。
おそらくはcalc_monthly_salary_yen(Person p)がpに破壊的な変更を加えるようなメソッドを見てきた者達だ。 面構えが違う。
そんな変更ができる時点でカプセル化が徹底されてないんだよな
いきなり大規模なリファクタしてぶつけたのが良くないのでは、 どんなに先進的な開発手法を採用しているチームでも、誰にも相談せずに馬鹿でかい前衛的なものを作ってぶつけると上...
誰にも相談せずに リファクタリングしろという命令があったんだよ 命令上司はリファクタリングして良くなったと言ったが、他のコーダーは意図を分かってなかったみたい
上司に死ねって言われたら死ぬ社員かよ。職場変わっても上司にスケープゴートにされるぞ。 「誰にも相談せずに」ってのは「めんどくせえから細かいこと質問してくんな」ってのが相...
職場を変わったのは5年前だけど、普通にエンジニアのレベルが高いのでゴッドオブジェクトもなければ1万行の関数もなくて仕事は超楽だよ
横だが、なぜ君が上から助言を?
こういうの見ると、窓割れを放置する組織って確かにあるよなぁとしみじみする 自分が完全に管理下にあるコードというのは、誰かがpullリクを送っても、審美的観点から却下したりでき...