hikaruna
@hikaruna (hikaru na)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

NeverUsedになってしまったコード、消す?残す?

解決したいこと

ヤグニの法則はわかります。
使わないものをわざわざ作らない。使うときに作る。合理的だと思います。

ただ、当初作っていたものが、UIデザインの改修により、NeverUsedになってしまいました。
概念的には存在を規定していて矛盾はないが、たしかに今この瞬間使われていない状態です。
そして、今後必要になるとも、ずっと不必要だとも言えない、計画が不透明な状態です。

そういうときに、

  • わざわざ消すべきか。
  • NeverUsedの警告例外をつけてまでわざわざ保持すべきか(そういうLintは入れている前提です)

悩んでいます。

0

1Answer

今まで言葉にしたことはなかったんですが、考えてみたら自分の中のルールがあったので回答します。一意見として参考になれば幸いです。

個人的には以下の理由から消します。

  1. 未来の自分を信用していない
    実際そのコードを使う、となったときに未来の自分がそのコードの内容をよく覚えているとは限りません。
    よく覚えていなくても、書いてあるからこのまま使っていいんだなと思ってしまうかもしれません。(もしくは他人がそのまま使ってしまうかもしれません。)
    ですが、そのコードが想定している仕様と未来の仕様は異なっている可能性もあり、そのコードの使用により問題が発生する可能性があります。
    「使うことになったら必ずメンテする」という約束事を決めておく手段もありますが、経験上やめた方がいいです。約束事は少ない方がいいですし、合ってるか合ってないか分からないコードをメンテすることほど苦痛なことはありません。
    「仕様変更のたびにメンテする」という手段もありますが、結局使わなかったらただの時間の無駄です。

  2. gitに残る
    コードを消したとしても、gitのログには残り続けます。
    もし存在を覚えていれば、過去のコミットから探してそのコードを参考にできます。
    もし存在を忘れていたとしたら、そんな知らないコードは使わずに一から実装した方がいいです。

長々と書きましたが、正直gitなどに残らないようだったらそのまま残してしまうかもしれません。

[追記]

概念的には存在を規定していて矛盾はないが、たしかに今この瞬間使われていない状態です。

すみませんこの部分を読まずに回答していました。概念的には存在を規定していて矛盾はないの意味を理解できていないので、もしかしたら想定と違うシチュエーションの回答だったかもしれません。

2Like

Comments

  1. @hikaruna

    Questioner

    ありがとうございます。参考になります

    > 概念的には存在を規定していて矛盾はない

    例を踏まえて解説すると、じゃんけんのシステムのコアドメインを設計したとして、
    画面上じゃんけんでAIと勝負できるみたいな話だったのだけれども、急に、「グーとチョキを表す画面だけ作ってひとまずマイルストーン終わり」と言われた感じです。
    ときに、パーの概念や、勝ち負けルールの概念はUnusedになってしまう。そのあと、引き続きじゃんけんを実装するのかどうかもわからない。そういう状況ですね。

Your answer might help someone💌