Re: たとえ重複していても、一度分割したものはまとめるな!

最初、擬似コードを書く時点で、この5パターン以外ありえないことはすぐにわかります。そして、それぞれについて解法を考えます。しかし、それをやりながら、「1つにまとめられるんじゃない?」と欲を出すと、失敗します。難しくて分割したなら、まとめちゃいけません!

http://d.hatena.ne.jp/yukoba/20080218

これ「重複していても *未来永劫* まとめてはいけない」という意味ではないですよね?とかくこういうキャッチフレーズは背景を離れて一人歩きしがちなので勘違いをする人が出てくるのではないかとちょっと心配になりました。

もともと「重複するコードは一つにまとめるべき」という話は「同じ処理があちこちに重複していると、仕様が変更されたときに修正する箇所もあちこちに散らばっているので修正コストが高い&うっかり修正忘れをするリスクが高い」という問題があるという話なので、yukobaさんのようなケースで「実装中に『これ重複をまとめられるんじゃない?』とか考えるべきではない」というのには諸手を挙げて賛同です。でも、もしこれが将来「h == zoneMax」と「else」の共通部分に仕様変更が入る可能性があるなら、実装し終わってうまく動くことを確認した後ででも一つにまとめることを考えた方がいいですよね?


ようは「実装とリファクタリングを同時にやろうとすると失敗する」ということと、「重複部分はまとめるべき」という教義にも前提条件があるので「前提条件をみたさないなら無視してOK」ということですね。