Коротка відповідь:
- Назви методів не можуть відображати внутрішню реалізацію, а очікувану поведінку.
Довга відповідь:
haveChildren()
слід назвати hasChildren()
.
Крім того, я не вважаю, що hasChildren()
це обов'язково як геть для булевого члена класу. Я думаю, такий метод дозволить з’ясувати, чи є член типу Collection
порожнім.
Ім'я за замовчуванням, яке IDE надає згенерованим геттерам і сетерам, не вважається законом, встановленим в камені.
Ще один момент: інтерфейси мають назви методів, які ще не реалізуються.
Якщо назви методів підлягають відображенню внутрішньої реалізації, яким чином хтось зможе коли-небудь створити інтерфейс? Інтерфейси не мають реалізації, і вони заздалегідь не знають, що робитимуть реалізатори під кришкою.
Візьмемо для прикладу Iterator
інтерфейс на Java.
Коли ви реалізуєте Iterator
, навіть коли у вас є ім'я булевого члена next
, ви не можете перейменовувати hasNext()
в isNext()
або isHavingNext()
. Це деталізація реалізації. Насправді я реалізував, Iterator
і те, що я роблю, - це член типу того, що в моєму класі є список, названий next
(не булевим). hasNext()
потім повертається next!=null
.
Також дивіться це:
class patient {
private boolean pulse;
private boolean breaths:
public boolean isDead(){ return (!pulse & !breaths);}
}
Зауважте, що isDead()
це не нормальний дім.
Візьміть інструменти продуктивності IDE, якими вони є.
parent
працювало б.