これがC#の場合(理想的には質問に言語のタグを付ける)、Personクラスには次のコンストラクターが必要です。
public Person(string name, int age)
: this(name) { WithAge(age); }
次に、すべてのクライアントコードを変更して、必要に応じてこの新しいコンストラクターを呼び出すには、パターンのすべての出現箇所を見つける必要があります。
new Person(x1).WithAge(x2)
ここで、x1とx2は式であり、次のように置き換えます。
new Person(x1, x2)
WithAge以外に他の修飾子メソッドがある場合は、さらに複雑になる可能性があります。例えば:
new Person(x1).WithHair(x2).WithAge(x3)
おそらくあなたはそれを次のようにしたいと思うでしょう:
new Person(x1, x3).WithHair(x2)
それはすべて、そのような言語対応の検索/置換パターンを定義できるIDEがあるかどうかによって異なります。一連のキー押下を再生するマクロと組み合わせて、単純なテキスト検索と置換を使用して、ソリューションへの長い道のりを得ることができます。
流暢なインターフェースの欠点は、簡単にリファクタリングできないことだと思いますか?
特にそうではありません-IDEのリファクタリング機能は、新しいリファクタリングを創造的に発明できるように十分に柔軟に設計されているか、特定の一般的なケースに合わせてハードコーディングされています。一般的なケースは、新しいケースを発明するために変更できる例として定義することをお勧めします。