中途半端なプログラマ
こんにちはニートです。
先月くらいに見た覚えがあったんですが何か shinh さんが言及されてたので釣られてみとくか。
「変数のスコープは狭いほど良い」と妄信する
とりあえず狭いほど安全なのは確か。良いかどうかは未だにボクには分からない。
あんまり大きいコード書いたことないからたかが変数のスコープに困らされた経験は幸運なことにまだない。
「同じロジックのコードを2度以上書くな」と妄信する
ふむふむ…
第一に、将来的なプログラムパターンの変更の可能性がある
第二に、抽象化レベルの話がある。
NVIっていう素晴らしいメソッドがあるよ!(NVIが適用できないときはどうするのかな?)
第三に、共通化の投資効果の話がある。
よく知らんけど説得力はない。本当に時間なかったらコピペするか共通化するかとか些細な問題すぎるとしか思えない。セコく浅ましい時間短縮術を使う前に適用すべきことがあると思う。まあ知らないけどね!
第四に、将来の保守性や拡張性、というのは、たびたび幻想でしかない。
主張が一定正しく通る場面は現実には多いと思うけれど、しかしそれが最初の主張につながったりは絶対しない。と思う。
ちなみに抽象化っぽいのは良いプログラマが持つと保守性と拡張性が両方そなわり最強に見える。悪いプログラマが持つと逆に頭がおかしくなって死ぬ。
と昔の偉い人も言ったそうですよ。嘘ですが。
何が言いたいかというと保守性とか拡張性は正しくコードを抽象化すれば勝手についてくるもので、そもそもそれのために…というのはおかしい話なんじゃないかなあという。あんまり大きい略
第五に、抽象化し、共通ルーチン化しすぎたプログラムは、可読性が低くなり、スキルの低いプログラマに引き継ぎをしなければならなくなったときに、途方に暮れてしまうことがある。
shinh「一方俺はバイトで eval を使いまくったコードを書いて自分以外に触れないようにした」
ていうかこれは明らかにおかしい。というかこの一文でこの記事が釣りであるということが分かる。抽象化の結果共通化されすぎるなんてことは正しく抽象化が行われていれば起きない。
多分本当に主張すべきなのは「ルーチンの共通化を不必要にしすぎたコードは正しい抽象化が行われず可読性が低くなり〜」だと思う。何かコードの共通化と抽象化をごちゃ混ぜにして抽象化が悪みたいな書き方に所々なってるのは全くよくない。
まあボクはまたこうして釣られてしまった。悲しいことだなあ。