インターフェイスの複雑さは、インターフェイスの要素(この場合はメソッド)の数によって測定されることを示唆しているようです。多くの人は、charge
メソッドのバランスを返すためにメソッドを使用できることを覚えておく必要があると、メソッドClient
の余分な要素を持つよりもはるかに複雑になると主張しgetBalance
ます。物事をより明確にすることは、特にインターフェイス内の要素の数が多いかどうかに関係なく、あいまいさを残さない点で、はるかに簡単です。
さらに、呼び出しは最小驚 as charge(0)
の原則に違反します。これは、1分あたりのWTFメトリックとも呼ばれ(クリーンコード、下の画像から)、チームの新しいメンバー(またはコードからしばらく離れた現在のメンバー)が彼らは、コールが実際にバランスをとるために使用されることを理解しています。他の読者がどのように反応するかを考えてください:
また、charge
メソッドのシグネチャは、オブジェクトの状態を変更しながら新しい値を返すため、1つのこととコマンドとクエリの分離を行うというガイドラインに反します。
全体として、この場合の最も単純なインターフェイスは次のようになると思います。
public class Client {
private float bal;
float getBalance() { return bal; }
void charge(float c) { bal -= c; }
}