インスタンスメソッドの移動リファクタリング
このリファクタリングにより、インスタンス(非静的)メソッドを別の型に移動できます。 静的メンバーを移動するとは対照的に、インスタンスメソッドはどの型にも移動できません。 潜在的なターゲット型のリストには、メソッドパラメーターの型と現在の型のフィールドの型が含まれます。 メソッドが他のクラスメンバーを使用する場合、リファクタリングはソースクラスをパラメーターとして渡します。 また、必要に応じて、非パブリックメンバーのアクセス権を変更し、フィールドをパブリックプロパティにカプセル化します。 メソッドのすべての使用箇所は自動的に更新されます。
このリファクタリングは、メソッドのロジックがメソッドのパラメーターまたはフィールドとして渡される別の型に適していることがわかっている場合に役立ちます。
以下の例では、リファクタリングを LogDrawing インスタンスメソッドに適用して Logger クラスに移動します。 メソッドで使用されるプライベート pivot フィールドは、対応するプロパティに自動的にカプセル化されます。
class Shape
{
private Point pivot;
private void LogDrawing(Logger logger)
{
var msg = $"Shape is drawn at {pivot.X}, {pivot.Y}";
logger.Log(msg);
}
}
class Logger
{
public void Log(string msg)
{
// log the message
}
}
class Shape
{
private Point pivot;
public Point Pivot
{
set { pivot = value; }
get { return pivot; }
}
}
class Logger
{
public void Log(string msg)
{
// log the message
}
private void LogDrawing(Shape shape)
{
var msg = $"Shape is drawn at" {shape.Pivot.X}, {shape.Pivot.Y}";
this.Log(msg);
}
}
インスタンスメソッドを別の型に移動する

2026 年 8 月 5 日