Esiste un antipattern nominato per API non chiare che non espone i requisiti? [chiuso]

-2

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.

    
posta eis 09.04.2014 - 15:20
fonte

1 risposta

0

Il meglio che stai per fare qui è stabilire quale sia l'API non , o cosa non riesce a fornire. Iniezione del costruttore e dell'incastonatore è un po 'un viaggio laterale, ma il principio è valido: scrivi le tue classi in modo che è chiaro dagli argomenti del costruttore esattamente ciò che è necessario per creare un oggetto funzionale completamente formato.

Se segui le best practice della tua organizzazione, indica semplicemente che la classe non riesce a seguire la pratica di descrivere i requisiti di istanza nel costruttore.

correlati
Design per contratto

    
risposta data 09.04.2014 - 18:21
fonte

Leggi altre domande sui tag