それはコードベースの品質に大きく依存します。実際には、それをさらに狭く定義することができます-それはコードがどれほど明確で、どれだけコメントされているかに依存します(そして私はこれを、文書化されていないレガシーコードベースを繰り返し継承する立場にある人として書いています)。
コードベースが悪いほど、外部からその機能を推測する必要があります-関数が何をしているのか理解できない場合は、少なくともGUIが何を意味しているのかを理解できる可能性がありますそれがやっている。RMIインターフェースを持つことは、GUIが見る必要のあるものの単純化された図を提供するという点で、祝福かもしれません-リモートインターフェースから抽象化することは非常に良い考えです。
コードベースが本当に貧弱な場合、適切に実装されていても間違っているものをテストしている可能性があるため、単体テストは役に立たない可能性があります。私が最後に受け継いだものからの例:(名前と説明は意図的に削除されました-いずれの場合も元の名前では役に立ちませんでした)
public static int[] a (List<int[]> input){
... lots of opaque rubbish
return b(input);
}
public static List<int[]> b{ List<int[]> input)
{
... more crap....
return some horribly mangled list of int[];
}
結局のところ、達成されたのは、2番目の要素の値で配列を並べ替えることでした。この場合、 bが適切に動作するかどうかをテストしても意味がありません。
正気を保つための提案:
- 明らかに使用されていないコードを削除します。
- 「マジックナンバー」を除外してみてください
- ハードコードファイル、パス、またはリソース参照を見つけて、それらをプロパティ、またはそれらを処理するための他の中央の一般的な方法に分解します。
- アプリが実際に想定どおりに動作しているかどうかを確認してください。ユーザーが「実際には正しく機能しなかった」と感じたものを実際に表現することができない、非常に複雑な機能も珍しくありません。
- モノが最初に設計されたときからのオリジナルのドキュメントや仕様を見つけてください。
- 1.4について言及しているので、マップを一般化すると、渡されるオブジェクトの種類を明確にすることができます。HashMapに裏打ちされたオブジェクトがあり、そのオブジェクトがどのように読み込まれるかが謎である場合、それが実際に文字列から整数へのマップであると判断することで、実際に生活を簡素化できます。これは、実際に想定されているものよりもはるかに簡単に理解できることがよくあります。やっている。
もちろん、コードベースが適切に記述されている場合、これのほとんどは不要ですが、いずれの場合でも、作業ははるかに簡単になります。そして成功を祈る。