Этот вопрос вытекает из нескольких связанных вопросов и в некоторой степени задает первый вопрос, который, похоже, не имеет четкого ответа на основной вопрос ОП:
- Частные методы вместо общедоступных
- Зачем скрывать реализацию класса?
- https://softwareengineering.stackexchange.com/questions/132019/what-is-the-value-in-hiding-the-details-through-abstractions-isnt-there-value
Я очень хорошо понимаю назначение приватных методов, но мне трудно представить пример, в котором реализация функции в приватном методе не вызовет проблем у потребителя API, а размещение реализации непосредственно в публичном методе вызовет. Это обычная практика в API Java.
Я в основном повторно задаю первый вопрос выше, потому что я не читал ответ, который укрепляет мое понимание. Возьмем тот же пример:
public class Sum {
private int sum(int a, int b){
return a + b;
}
public int getSum(int a, int b){
return sum(a, b);
}
}
В чем преимущество использования приватной функции sum вместо того, чтобы просто помещать результат непосредственно в публичную функцию?
public int getSum(int a, int b) {
return a + b;
}
Возможно, это не лучший пример, но я очень приветствую и более сложные или реальные примеры.
Опять же, я понимаю, что размещение реализации в частном методе скрывает реализацию и позволяет повторно использовать ее, и в целом это лучшая практика для будущих дополнений. Тем не мение,
- Как отсутствие его в приватном методе может нарушить работу потребителей API?
- Должны ли все общедоступные методы создаваться таким образом (всегда размещать реализацию в приватном методе) или где проходит черта?
Sum
могли использовать исходную реализациюgetSum
, даже если подклассы могут переопределить ее. - person Andy Turner   schedule 24.10.2018