このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

秘伝のタレ、妥協的対策、邪悪なワザ

既存ソースの修正で感じたこと - 檜山正幸のキマイラ飼育記 メモ編

もとのソースはよくテストされて枯れたソースなので、無闇に変更はしたくない。イジらなくてよいところはそのまま使いたい。構造を変えるようなリファクタリングもリスキーだからしたくない。

こういう事態はけっこうよくあることだと思う。チャンと動いていて信頼できるソースがあります、って状況ね。

「もとがチャンと動いているからイジらない」を繰り返すと、チャンと動くけどけっこうグチャグチャで理解不能ソースコードになるのは事実。レガシーコード、最近だと「秘伝のタレ」とか呼ばれるヤツかな。秘伝のタレは、「絶妙な味わいを醸し出している」んだか、それとも「実は腐っている」んだか、秘伝過ぎてワカンなかったりする。

秘伝のタレの扱いは悩みのタネだよなー。時間とエネルギーの余裕があるときに、一度キチンと紐解いてリファクタリングするほうがいいとは思う。しかし、時間とエネルギーの余裕があるときなんて滅多にないわけで、付け足し・付け足しでより秘伝化すると、、、、

ちょっと紐解いたら「エッ!」と思うようなトリックがあったりする。「ナールホド」と納得したりもするんだけど、トリッキー過ぎてたぶん禍根を残す。しかし、トリックをやめるとなると影響範囲が大きい、あるいは影響範囲が予測できない。で、そのまま、とか。

毎度のことながら、時間/エネルギー(つまり労力)とのトレードオフの話になる。極論すれば、イチからキレイに書き換えてしまえばいいのだが、そんな労力をかけられないから折衷案、妥協案を模索することになる。

折衷・妥協のノウハウってかっこ悪いからあんまり公開されない、したがってノウハウの蓄積もない。それでいて普遍的な問題だから皆んな悩む。「わかっちゃいるけど、こうするしかなかったんだよ」な経験・方法を、恥を忍んで公開するのも大事かもな。

ただなー、今のネットの環境だと公開しにくいだろう。「staticイッパイ使いました」「goto(あるいはlongjmp)で飛んじゃいました」とか言うと、非難にさらされるもの。本編のほうで、「大域変数はコモナド」「gotoは米田埋め込み」「フローチャートはトレース付きモノイド圏」とか説明して擁護に努めているが、こういうのを目に敵にしている人は多いから。「そこで正論言われても…」とは思うが、正論だけに反論しにくいし、アーメンドクセ。