世界線航跡蔵

Mad web programmerのYuguiが技術ネタや日々のあれこれをお送りします。

2008年05月20日

レガシーコード借金説

Rails勉強会@東京 第30回の懇親会の席で話していて、id:takahashimさんがハッとすることを言った。バグバグなコードは負債であると。

バグバグなコードは、それだけでメンテに定常的な出費を産む。書き直せばそのコストはいらないのに。バグバグなコードはあらゆる危険性を産む。なまじモノがあるだけについコードを無条件に資産と見なしてしまいがちだが、実は怪しいコードは負債であると。

そして、でっち上げのコードが必要な場合も確かに存在するのだ、とも。「無借金経営だけが経営じゃない」そうだ。なるほどね。

ここで、自動化されたテストケースが存在しないことをもって負債と見なす、と基準を定めよう。テスト可能性が担保されていればそのコードはそれなりに安全であるわけだし、差し換えもローコストなわけなので。「レガシーコード = テストが存在しないコード」という定義は『Working Effectively with Legacy Code』による。

するってーと、レガシーコードを書くのは経営判断ってことになるよな。実は以前、「リリース予定のコードをテストケースなしで書くには部長の決済が必要」って仕組みを運用したことがある。試行錯誤段階の「研究、試験実装コード」はテストは要らないけど、リリースするつもりで書くなら必ずテストを書けよ、と。どうしても必要なときに、部長を説得できるなら書類で申請した上でレガシーコードを書いても良いよ、と。

この仕組みは「面倒だからテストを書かない」に対する心理的対抗策として「テストを書かない方が面倒」な制度を作るのが目的だった。でも、経営っていう観点からもこれは正しかったことになるかな。経理担当者が勝手に会社の名前で借金するなよ、ってことで。

いっそのこと、これは就業規則に盛り込むべきかもしれない。「許可なくレガシーコードを書いた場合は懲戒解雇とする。退職金は支払われない」とか。

トラックバック

http://yugui.jp/articles/775/ping
レガシーコードが負債な理由 (andalusiaの日記)
バグバグなコードは、それだけでメンテに定常的な出費を産む。書き直せばそのコストはいらないのに。バグバグなコードはあらゆる危険性を産む。なまじモノがあるだけについコードを無条件に資産と見なしてしまいがちだが、実は怪しいコードは負債であると。 レガシーコード
[開発]re: 技術的負債(Technical Debt) (Crought)
技術的負債(Technical Debt) - masayangの日記(ピスト通勤他 あらゆる設計・あらゆる実装は負債になり得る, とも言えるのかな. 少なくともぼくの職場だとそうです (・∀・;)ギギギ よき設計・よき実装は負債を避けたり減らしたりはすれど, 決して返済はしてくれない

コメント

blog comments powered by Disqus

ご案内

前の記事
次の記事

タグ一覧

過去ログ

  1. 2016年07月
  2. 2016年01月
  3. 2015年09月
  4. 2015年08月
  5. 過去ログ一覧

フィード

フィードとは

その他

Powered by "rhianolethe" the blog system