0

署名付きのメソッドがあるとしましょう:

public static bool ValidDateToSend(DateTime date, string frequency)

メソッドの内部には周波数のスイッチがあります。

頻度を文字列からパブリック列挙型に変更するか、リファクタリングと見なされますか、それとも行き過ぎですか? これは public メソッドであるため、このコードの外部に多くの参照が存在する可能性があります。リファクタリングの厳密な定義 (そして私が恐れを知らないリファクタリングが意味していると私が信じていること) は、

既存のコード本体を再構築し、外部の動作を変更せずに内部構造を変更するための訓練された手法

メソッドパラメーターを互換性のない型を使用するように変更すると、実際に「その外部動作を変更する」ことになるようです。

4

2 に答える 2

2

「外部動作」とは、入力と出力に関するシステム自体の動作です。署名の変更は間違いなくリファクタリングですが、安全に実行するのは難しいかもしれません。これに対する唯一の例外は、製品がAPIである場合です。この場合、署名の変更は顧客に影響を与え、単なるリファクタリングではありません。

于 2012-05-07T20:32:00.570 に答える
0

外部の動作を私に変更すると、コードのユーザーに表示される内容が変更されたことがわかります。メソッド自体が何らかのコードライブラリに含まれている場合、これは外部の動作を変更すると見なされる場合があります。メソッドが内部でのみ使用されており、メソッドへのすべての参照が変更された場合、外部の動作は変更されないため、リストした定義に従って、リファクタリングされます。コードライブラリにある場合は、拡張機能と見なすことができます。コードライブラリのユーザーがコードを使用するためにコードをリファクタリングする必要があり、コードのエンドユーザーに違いが見られないことを考慮すると、リファクタリングと見なされる場合があります。

于 2012-05-07T20:33:09.010 に答える