"Flessibilità": molteplici modi in cui gli utenti possono fare la stessa cosa

1

Situazione: recentemente ho aderito a un nuovo progetto e ho subito notato che il team è molto interessato a mantenere il codice "flessibile". Sembra che per ogni classe o funzione, non vogliono impedire agli utenti di questo framework di utilizzare le cose "come vogliono". In quanto tale, il team vuole fornire diversi modi per fare la stessa cosa.

Esempio: una classe richiede che l'utente fornisca una funzione di callback render . La classe ha una funzione per accettare un'interfaccia o una funzione libera e una terza funzione template che accetta una funzione object e pointer-to-member. Un'altra classe ripete questo modello e ha funzioni di tipo ~ 13 render -type e altre funzioni di use sospette e così via.

Questa filosofia è duplicata attraverso il resto del codice. Molte classi hanno più modi di fare la stessa cosa "per la tua convenienza". La logica è "non vogliamo fare un lavoro extra per l'utente per costringerli a conformarsi".

La mia risposta: questa è una pessima filosofia con effetti negativi tangibili.

  • Duplicazione codice / responsabilità a bizzeffe
  • Bugs. Posso vederli arrivare. Ne ho già trovati alcuni a causa della duplicazione.
  • Confusione per i nuovi utenti. Perché ci sono 13 funzioni di rendering leggermente diverse? Sono così la stessa cosa? Qual è lo scopo dell'utilizzo di questo contro quello?
  • Confusione con gli sviluppatori futuri - gli stessi motivi di cui sopra.
  • Difficile da mantenere - la modifica della funzione render significa in realtà la modifica di più% funzioni% -type di tipo.
  • Il design richiede troppo tempo. Abbiamo trascorso settimane su un singolo grafico UML di ~ 15 quadrati perché mantenere tutto "flessibile" rende le cose confuse e poco chiare. Spesso "Ma se dovesse essere necessario?" o "Capisco, ma quando dovremmo effettivamente usare questo?"
  • I miei generali sensi di colpa mi dicono di essere inorridito.

Domanda: ho ragione nel sostenere che questa filosofia "flessibile" è un pessimo design? Se è così, come dovrei convincerli che fare render di modi diversi per fare ogni potenziale compito non sta facendo all'utente alcun favore e sta solo rendendo il codice, in così tante parole, cattivo?

    
posta GraphicsMuncher 24.02.2016 - 05:01
fonte

0 risposte

Leggi altre domande sui tag