納涼!ほんとにあった怖いコード(by CodeIQ×はてな) ある夏体験した悪夢のようなコーディングの話です。 そのソフトは、もともと1本のプログラムでクライアントとしてもサーバとしても機能するという作りになっていました。 そのソフトに転機が訪れます。 サーバ・クライアントを別々のプログラムに分離することに、さらにはサーバ側はWindowsサービス(UNIXで言うところのデーモン)とUIプログラムに分離することに、つまり都合3本のプログラムに分けることになったのです。 担当していた開発者はそれをソース分岐ではなく、あくまで単一のソースで実現しようとしました。C++の #IFDEF マクロを使い、コンパイルオプションに従って各プログラムで必要な部分だけがコンパイルされるように、文字列リソースはそれができないのでプロジェクトごとに別ファイルを参照するようにして… それを30プロジェクト、500