プログラムの評価

書くことがないのでミクシから引っ張ってみる。


他人のプログラムを評価するのは、ひどく難しい。


ある文脈に対して絶対に間違っていると指摘するのは、非常に難しいからだ。



プログラミングにおいて最も重要なことは、正常に動作するかということだ。
もし、1億・10億人のユーザがそれを使って、バグが一つも報告されないのであれば、そのソフトは完璧だと言ってもいいだろう。
その中身が複雑に絡み合ってて、1行でも編集すると理解不能なバグが出てしまうような状況であってもだ。
なぜならそのプログラムは、正常に動作させるという目的を十分に達成しているからだ。


しかし、そんなことは現実的に考えてあり得ないので、この場合は次点の、バグが起きても修正しやすいか、という部分を見ることになる。


この、“修正しやすいか”というのが問題で、例えば「ソースが汚い(から修正しにくい)」とか言うのは個人の主観であり、それは「第三者から見ても、“絶対”にそのソースは汚い」とは言えないので、その評価はアウトだ。
同様に、「オブジェクト指向になってない」とか「goto を使っている」というのも、「オブジェクト指向の方が誰にとっても“絶対”に修正しやすいのか」、「goto を使った方が誰にとっても“絶対”に修正しやすいのか」という話になる。


グレーなのが、「似たような処理が一つにまとめられていない」といった場合だ。
似たような処理が一つにまとめられていなかったら、その処理の一部を変更すると、全ての部分に対してそれを適用しないといけない。
確かにこれは間違っているように思えるけれども、それはもしかしたら何らかの意図があってそうしているのかもしれない(例えば今後のバージョンでそこが全然別の処理に置き換わる可能性があるから、わざとまとめていないとか)。


こういったことを考えていくと、作り手の意図がプログラムだけで確実につかめるわけでは無い以上、ある文脈が絶対に間違っていると指摘するのは非常に難しくて、むしろ自分の無知をさらけ出してしまう可能性だってあるのだ。



(自分も含めた)自分の周りの人はよく、「何この糞ソース」と言ったりするのだけれども、それはただ単に自分の作り方と合っていないからそう思うだけなのかもしれないし、そのプログラムを書いた人に対する偏見がそうさせているのかもしれない。
何にせよ、数百キロバイトのプログラムを5分間読んだだけで「糞ソース」と評価するのは早計だろうな、と思った。