Соглашение о методах установки Java (можно ли перегрузить методы установки?) - PullRequest
1 голос
/ 21 июля 2011

У меня есть условие, при котором способ создания строки (finalValue) основан на количестве ненулевых значений, которые я получаю во входных данных. Так что мне было интересно, если это нормально, перегрузить метод установки для строки (finalValue) с одним diff без параметров и вызвать их на основе значений, которые я получаю? Это плохая практика программирования?

public void setFinalString(String a){
   this.finalString = a;
}

public void setFinalstring(String a, String b){
   this.finalString = a + " --f " + b;
}

Или у меня может быть метод для создания finalString на основе входных данных, которые я получаю, и затем вызывает установщик (без перегрузки здесь) для finalString.

Пожалуйста, скажите мне, нормально ли перегрузить сеттеры, предложите, какой подход лучше?

спасибо

Ответы [ 3 ]

4 голосов
/ 21 июля 2011

Да, это определенно плохой подход, установщик всегда должен просто устанавливать переданный параметр в инкапсулированный закрытый ivar.

Другая логика должна быть где-то еще, но не в установщике, хотяиногда принято иметь ограничения, когда вы устанавливаете параметр в своем установщике, т.е.

public setAge(int age) {
    if (age >= 0)
        this.age = age;
    else 
        this.age = 0;
}

Это столько логики, сколько должно иметь установщик, он определенно никогда не должен получать больше, чем значение, которое он присваивает ивару.

2 голосов
/ 21 июля 2011

Возможно, вы хотите использовать псевдо-геттер вместо сеттеров?

private String a, b;
public String setA(String a) { this.a = a; }
public String setB(String b) { this.b = b; }
public String getFinalString() {
    if (a != null && b != null)
        return a + " --f" + b;
    if (a != null)
        return a;
    throw new Exception("Not enough parameters to construct final string");
}
0 голосов
/ 21 июля 2011

Если кто-то не позволяет переопределить методы, он должен поставить ключевое слово final . Речь идет о том, что вы хотите сделать и как вы общаетесь с другими разработчиками. Иногда единственным способом связи является код и правильные сигнатуры методов, которые не допускают недопонимания.

Пропорциональность зависит от того, что у вас есть, попробуйте написать разумный код и подумайте, как должны выглядеть ваши классы, если какой-то разработчик хочет их использовать и не может задавать вам вопросы.

Если вам повезет (очень повезет), он подойдет так же:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...