Есть ли цель объявить init()
метод для типа?
Я не спрашиваю, стоит ли нам отдавать предпочтение init()
конструктору или как избежать объявленияinit()
.
Я спрашиваю, есть ли какое- либо обоснование для объявления init()
метода (видя, насколько он распространен) или это запах кода, и его следует избегать.
Эта init()
идиома довольно распространена, но я пока не вижу реальной выгоды.
Я говорю о типах, которые поощряют инициализацию с помощью метода:
class Demo {
public void init() {
//...
}
}
Когда это когда-нибудь пригодится в производственном коде?
Я чувствую, что это может быть запах кода, поскольку он предполагает, что конструктор не полностью инициализирует объект, что приводит к созданию частично созданного объекта. Объект не должен существовать, если его состояние не установлено.
Это заставляет меня поверить, что это может быть частью какой-то техники, используемой для ускорения производства, в смысле корпоративных приложений. Это единственная логическая причина, по которой я могу придумать такую идиому, я просто не уверен, насколько это будет полезно в таком случае.
init()
производный класс, или наоборот?) Если это так, это пример того, как базовый класс может выполнить «пост-конструктор» "который может быть выполнен только после того, как самый производный класс закончил конструкцию. Это пример многофазной инициализации.