1

ちょっとばかげた質問かもしれませんが、適切な変数名を取得できません。現在、私はそれを逆にしていますが、私の意見ではあまり意味がありません。

package dao.constraint;

public class Constraint<T> {
    public Operation operation;
    public boolean negated;
    public T data;
    public String field;

    public Constraint(final Operation operation, final boolean negated, final T data, final String field) {
        this.operation = operation;
        this.negated = negated;
        this.data = data;
        this.field = field;
    }
}

背景情報: これは、SQL 選択クエリで使用される制約に関係しています。たとえばnew Constraint<String>(Operation.IS, false, "me", "username");、ユーザー名が と等しいクエリの一部になります"me"。またnew Constraint<String>(Operation.IS, true, "me", "username");、ユーザー名がと等しくない"me"クエリの一部になります。

ご覧のとおり、ネーミングがわかりにくいので、論理と将来の読みやすさの両方のためにブール値を変えたいと思いますが、否定/否定の反対はどのように呼び出されますか?

のように呼ぶこともできますisNotNegatedが、それは私にはあまりいい名前ではないようです。

詳細な背景: SQL コードでは、文字通りWHERE username = "me"それぞれのWHERE NOT(username = "me")ように実装されるため、negatedここで一時的に呼び出すことにしました。

よろしく。

4

2 に答える 2

0

ブール値フラグを取り除くために、2 つのファクトリ メソッドを導入し、元のコンストラクターを非公開にすることで、コードをリファクタリングします。

確かに、私は定期的にJavaのことをしているわけではないので、おそらく間違った構文を許してください:)

private Constraint(final Operation operation, final boolean negated, final T data, final String field) {
    this.operation = operation;
    this.negated = negated;
    this.data = data;
    this.field = field;
}

public static<T> Constraint<T> createConstraint(final Operation operation, final T data, final String field) {
    return new Constraint<T>(operation, false, data, field);
}

public static<T> Constraint<T> createNegativeConstraint(final Operation operation, final T data, final String field) {
    return new Constraint<T>(operation, true, data, field);
}

使用するには:

Constraint<String> foo = Constraint.createConstraint(Operation.IN, "hello", "field");
于 2013-06-29T14:34:01.303 に答える