Questo anti-pattern ha un nome?

1

Ecco un pezzo di codice interessante per aggiungere i due numeri interi, aeb:

NameService nameService = NameService.getSingletonInstance();
OperationService operationService = nameService.resolve(OperationService.class);
ValueFactory factory = OperationServiceFactory.newInstance();
AbstractValue va = factory.newIntegerValue(a);
AbstractValue vb = factory.newIntegerValue(b);
Operator operator = operationService.resolve(AdditonService.class);
AbstractValue vc = operator.performOperation(a, b);
int c = nameService.resolve(IntegerDecorator.class).getValue(vc);

Purtroppo non posso incollare il codice di produzione effettivo che fa un po 'di più (anche se non molto) ma il problema dovrebbe essere ovvio: c'è molto più codice di quello che è richiesto minimamente e nonostante "i pattern di progettazione applicati" è molto difficile leggere o refactoring. Può essere scritto in modo molto più semplice e breve, ma l'autore del codice afferma che non sei professionale per averlo detto. Dov'è il problema con il codice? Non è possibile che non ce ne siano.

    
posta h22 15.01.2018 - 14:09
fonte

1 risposta

7

Potresti chiamare questa programmazione settoriale Cargo in cui il programmatore utilizza i modelli senza comprendere appieno il perché. Prima di accusare qualcuno di questo, assicurati di capire da solo le ragioni di questi modelli.

Questo non è il codice di produzione attuale, l'hai detto tu stesso. Quindi devi considerare seriamente la possibilità che ciò possa essere persino necessario date le circostanze. Anche il codice che hai scritto potrebbe essere effettivamente fattibile nelle giuste circostanze, come in un parser di codice in cui operatori e operandi sono tutti potenzialmente dinamici.

Forse l'autore di questo codice voleva semplicemente essere il più flessibile possibile. È discutibile se la flessibilità aggiunta valga o meno la mancanza di leggibilità.

    
risposta data 15.01.2018 - 14:15
fonte

Leggi altre domande sui tag