2014-06-03

他人のコードを読むのは辛い

■他人のコードを読む(理解する)のは辛い。

自分で書くのとどちらが辛いかといえば、読むほうが3倍ぐらい辛い。

からプログラム勉強しようとして、コードリーディングから始めようとする人はまずいないし、おすすめできない。

■問題なのは行数じゃないのだ。理解できるかどうかなのだ。ここになぜこの変数があるのか、

なぜインクリメントしているのか。ここの配列はここで定義されているけど、どこにも使ってないのはなぜか。

ここの処理はなぜこんな場所にあるのか。

大体においてコメントは残されている。

/* ここでxにyを代入する */

いやそんなの見ればわかるって。私が聞きたいのは「ここで」「なぜ」「そんな」処理をしたかだ。

プログラムアーキテクチャに正解はない。あるのは哲学だけだ。

アルゴリズムとは違う。アルゴリズムには正解がある。最適解を出す最適な方法は1つしかない。

アーキテクチャ哲学とはシーケンスの流し方、データの扱い方であり、プログラムの骨格に当たるもので、

書いた人の人格のものである。だから他人のコードはわからなくて当たり前なのだ

現実問題として、プログラマはそんなコード対峙しなくてはならない。

書いた人は既に退職していない、そんことはザラにある。バグだらけ?大いに結構

重要なのは機能なのだ。中身がどうなっていようが、そんなの気にもとめられない。

もしかしてから作ったほうが速いのではないか、プログラマなら1度は思ったことがあるはずだ。

だがそんな工数はどこにも用意されない。

■流用だ。すべての問題を悪化させているのは、特化されたソフトウエアの流用だ。

前記の理由で1から作るのを諦めたプログラマはそこから地獄コードリーディングが始まる。

訳の分からない変数配列、処理の羅列。データはあっちに飛び、こっちに飛び。全体を理解したころには

既に開発は終了間近。機能を無理やり作りこみ、素知らぬ顔でプロダクトを送り出す。

それがリポジトリに登録されて、悲劇は繰り返す。

■だからこそ共通となるフレームワークライブラリ必要なのだ

ソフトウエアの優劣など正直どうでもいい。それを扱える人間汎用性こそが重要なのだ

から理解する必要がなくなるというだけで、どれほどの炎上プロジェクトが鎮火するだろうか。

間違っても社内フレームワークオレオレライブラリなどは作っちゃいけない。

■結論にいきたい。

他人のコードを読むのは辛い。だったら読まなくてもいいようにすればいいのだ。

用意された欄に数字や文字を書いて提出するお役所の書類のような、そんなコードライティングを目指すべきだ。

そして欄がない場合は、欄外に殴り書きするのではなくて、新たに欄を作るべきだ。そしてそれがプログラマ

本当の仕事になるべきだ。欄は共用の財産となり、テストして改良されるか、あるいは無用として削除されるだろう。

他人のコードを一行も読まずにプロダクトを完成させられる。早くそういう未来がくるといい。

  • いい加減コードなんて不要なもの作ればいいじゃない

  • 「クソコードの」コードリーディングは辛いって話でしょ。そりゃそうよ。 Linux、Apache、MySQLについては仕事上必要な箇所だけ斜め読みした経験があるが 十分に意図は汲み取れた。 Word...

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

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