Nel codice sorgente che sto valutando ( jarjar ), esiste un codice java che può essere utilizzato come questo :
JarJarTask fixture = new JarJarTask();
fixture.addConfiguredRule(new Rule());
fixture.execute();
Che genererà un'eccezione come:
java.lang.IllegalArgumentException:
The <rule> element requires both "pattern" and "result" attributes.
Ora, per me è chiaro che l'API non è ottimale qui - se l'elemento regola richiede questi attributi, dovrebbe richiederli nel costruttore (o fornire un Builder o simili che li richiederebbero). Ma non ero in grado di trovare convenzioni di codifica o consigli di programmazione Java per essere d'accordo con me.
C'è un nome specifico per questo che posso usare per cercare questo nella ricerca, nella programmazione della letteratura, nelle guide di stile? Quali termini posso usare per trovare qualche discussione su questo?
Sicuramente è stato discusso da qualche parte usando alcuni termini, ma non riesco a trovare nulla.
Ho trovato la discussione su iniezione costruttore presentata da Kent Beck in Smalltalk Best Practice Patterns e supportato da Martin Fowler , che, secondo questo , rende" immediatamente chiaro ciò che una classe richiede quando viene istanziato, e inoltre è impossibile istanziare la classe senza passare negli oggetti del campo ". Quindi questo è un punto di partenza, almeno per trovare qualche discussione.