È un errore se fai qualcosa in un costruttore prima di chiamare il supercostruttore. Ricordo che ho avuto problemi a causa di ciò. Eppure, non vedo come questo ci salvi dagli errori. Potrebbe salvarti dall'utilizzo di campi non inizializzati. Ma il compilatore Java che controlla l'utilizzo di variabili non abilitate lo fa e questa stupida regola non migliora nulla qui.
L'unica considerazione seria che ricordo era che ne abbiamo bisogno per OOP, perché gli oggetti nella vita reale sono costruiti in questo modo: si crea un cetriolo creando prima un ortaggio e poi aggiungendo gli attributi del cetriolo. IMO, è l'opposto. Per prima cosa crei un cetriolo e, per principio anatra è un'anatra , diventa un vegetale. Un altro argomento è che migliora la sicurezza. Non scrivere il codice migliora l'affidabilità molto meglio, quindi non lo considero un argomento. La creazione di codice più complesso quando è necessario risolvere una restrizione stupida, è ciò che rende il programma più soggetto a errori.
Questa regola crea un strong dolore (almeno per me). Quindi, voglio ascoltare la discussione seria e un esempio serio in cui potrebbe essere utile.