Czy jest jakiś cel deklarowania init()
metody dla typu?
Nie pytam, czy powinniśmy preferować init()
konstruktor, czy jak uniknąć deklarowaniainit()
.
Pytam, czy istnieje jakikolwiek uzasadnienie deklaracji init()
metody (zobaczenie, jak często jest stosowana) lub czy jest to zapach kodu i należy tego unikać.
Ten init()
idiom jest dość powszechny, ale jeszcze nie widziałem żadnych realnych korzyści.
Mówię o typach, które zachęcają do inicjalizacji za pomocą metody:
class Demo {
public void init() {
//...
}
}
Kiedy będzie to kiedykolwiek przydatne w kodzie produkcyjnym?
Wydaje mi się, że może to być zapach kodu, ponieważ sugeruje, że konstruktor nie w pełni zainicjował obiekt, w wyniku czego powstał częściowo obiekt. Obiekt nie powinien istnieć, jeśli jego stan nie jest ustawiony.
To sprawia, że wierzę, że może to być część techniki stosowanej do przyspieszenia produkcji w sensie aplikacji korporacyjnych. To jedyny logiczny powód, dla którego mogę wymyślić taki idiom, po prostu nie jestem pewien, czy byłoby to korzystne, gdyby tak było.
init()
pochodną, czy odwrotnie?) Jeśli tak, to przykład pozwalający klasie podstawowej wykonać „postkonstruktor” ”, które można wykonać tylko po zakończeniu budowy najbardziej pochodnej klasy. Jest to przykład inicjalizacji wielofazowej.