Teraz musím všade dávať aj new() na čo občas zabudnem a zbytočne oveľa viac debugujem a odchytávam výnimky. Na ten new sa dá zabudnúť tak, že pri testovaní sa to neprejaví, až u zákazníka a potom nie je sranda to riešiť.
Ako sa dá zabudnúť na new, keď to je kompilačná chyba?
ak chcem objekt ako member variable tak to nie je (a nemôže byť) chyba pri kompilácii.
Pokud můžu, tak fieldy vždycky zásadně inicializuji in-line, odkládání inicializace do konstruktoru (ve chvíli, kdy to samé můžu udělat rovnou při deklaraci) nebo kdo ví kam jinam je strašlivý zlozvyk.
Zároveň pokud nepotřebuji do hodnoty fieldu znovu přiřazovat, tak automaticky přidávám klíčové slovo final, díky kterému mě kompilátor vyřve, pokud bych zapomněl jeho hodnotu inicializovat in-line nebo alespoň v konstruktoru (v případě objektů, které se do konstruktoru injectují).
public class Container {
private final List<Object> objects = new ArrayList<>(); // nutné přiřadit, jinak compile error
private final String name;
// private final long id; -> zde by byl compile error
public Container(String name) {
this.name = name; // kdybych tohle zapomněl -> compile error
}
}