Island Life

< Residual顛末 | 退屈なプログラミング >

2015/05/24

完成しすぎの呪い

たまに、所与の条件に対してすんばらしくシンプルで効率よい解決法を思いついて、コードも簡潔かつ余分な隙なくびしっとはまって、自分ながら誇らしげに思えることがあるんだけど、そういうのって前提条件が時間とともに変わると逆に足かせになる(あらたな 仕様が あらわれた!)

きっちり組み合わさってバランスが取れてるジェンガの塔を土台部分から変えなくちゃいけないけどどうしよう、という感じ。

一旦壊さなきゃならないのは仕方ないとしてどこまで壊すべきか。個人的には動く状態のまま少しずつ差し替えて行く開発が好みなんだけれど、関連パーツがあまりにぴったり嵌っていると徐々に移行するというのが難しい。全部壊して土台から作り直せば悩まずに済むけど今ここで綺麗に動いてるものをそっくり捨てちゃうというのもなかなか勇気がいることで、手を出すまでの心理的ハードルが高い。そんで手が進まずに時間を浪費したりする。最後は結局えいやって壊すしかないんだけど。

ツギハギのシステムというのは悪いものとされることが多いけど、適当にちぎったりくっつけたりしても形を保ってる泥団子みたいなやつの、変更への心理的障壁の低さというのは結構大きい。

Tag: Programming

Past comment(s)

nobsun (2015/05/25 23:27:02):

綺麗に抽象をおこなえば、シンプルで効率のよい完璧なコードになるけれど、「シンプル」「完璧」ということは、コードの中に抽象したものの具体例が網羅されてしまって、隙間がないということでしょうかねぇ。

shiro (2015/05/26 04:49:40):

多分「シンプル」を構造的な複雑性の極小値とするのではなく、単に「見通しが良い」程度に抑えておいて、コンポーネント間に遊びを残しておく(結合をゆるくしといて、隙間をパテで埋める感じ)くらいがいいのかなと。後者はついいじりたくなるんだけど、逆にそういう遊び部分が大事だよなって話でした。

yamasushi (2015/06/21 06:34:09):

論点がずれているかもしれませんが,そういう場合に「土台」を改変したことがあります。そのモジュールに下位から与えるデータを改ざんするという。まあ,わたしのやったのは文字列入力プログラムに渡す「入力された文字」を改ざんしてあたかも特殊文字が入力されたかのようにした,という程度です。(低レベルですみません。

Post a comment

Name: