Чи є якась мета для оголошення init()
способу для типу?
Я не запитую, чи слід віддавати перевагу init()
конструктору чи як уникнути декларуванняinit()
.
Я питаю, чи є якесь - або Обгрунтування оголошуючи init()
метод (бачачи , наскільки часто це) , або , якщо це код запах і його слід уникати.
init()
Ідіоми досить часто, але я до сих пір не бачу ніякої реальної користі.
Я говорю про типи, які заохочують ініціалізацію методом:
class Demo {
public void init() {
//...
}
}
Коли це коли-небудь стане корисним у виробничому коді?
Я вважаю, що це може бути запах коду, оскільки це дозволяє припустити, що конструктор не повністю ініціалізує об'єкт, внаслідок чого частково створений об'єкт. Об'єкт не повинен існувати, якщо його стан не встановлено.
Це змушує мене вважати, що це може бути частиною якоїсь техніки, яка використовується для прискорення виробництва, в сенсі корпоративних застосувань. Це єдина логічна причина, по якій я можу подумати про таку ідіому, я просто не впевнений, як було б корисно, якщо так.
init()
похідний клас, чи навпаки?) Якщо так, це приклад дозволу базовому класу виконувати "пост-конструктор "який може бути виконаний лише після закінчення побудови найбільш похідного класу. Це приклад багатофазної ініціалізації.