2012-05-07 14 views
0

のは、私が署名を持つメソッドを持っているとしましょう:パラメータをパブリックメソッドに置き換えることはリファクタリングと見なされるのでしょうか、それともあまりにも遠すぎますか?

は、メソッドの内部
public static bool ValidDateToSend(DateTime date, string frequency) 

は、周波数上のスイッチです。

周波数を文字列から公開列挙型に変更することは、リファクタリングと見なされるのか、あまりにも遠すぎるのでしょうか?これはパブリックメソッドなので、このコードの外に多数の参照が存在する可能性があります。リファクタリングの厳密な定義(と私は信じては大胆不敵なリファクタリングを意味している)である

その外部の動作を変更することなく、その内部構造を変更し、既存のコードの本体、 の再編のための

懲戒技術

それをメソッドパラメータを互換性のない型に変更することは、実際には "その外部の振る舞いを変更する"ことになります。

答えて

2

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

+1

この場合、内部クライアントが存在する可能性があります。これはコアヘルパー関数クラスの変更であると仮定し、このメソッドはアプリケーションに使用されます。コードには必ずしもアクセスする必要はありません。これがプライベートであれば私はあなたに同意するでしょうが、このメソッドの他の消費者がいるかもしれないので、これを廃止予定とし、enumを使用する新しいメソッドを指す方が意味があるようです。このメソッドは、列挙を変換するための文字列を行います。 –

+0

他の開発者が関与している場合は、コードを壊すとバイインを受けるべきです。周波数が実際にクライアントコードの定数である場合、リファクタリングはかなり簡単になります。頻度が定数でない場合は、それを列挙型にリファクタリングする必要があるかどうかを質問します。 –

0

外部の動作を「私」に変更すると、コードのユーザーには変更内容が表示されます。メソッド自体がある種類のコードライブラリに含まれている場合、これは外部の振る舞いを変更すると考えられます。メソッドが内部的にのみ使用されていて、メソッドへの参照がすべて変更されている場合、外部の動作は変更されていないため、リファクタリングします。それがコードライブラリにあれば、拡張と見なすことができます。コードライブラリのユーザーがコードをリファクタリングしてコードを使用する必要があり、コードのエンドユーザーに違いがないと考えると、依然としてリファクタリングとみなされます。

関連する問題