Come posso spiegare che questo è un anti-pattern? [chiuso]

0

Recentemente ho iniziato un nuovo lavoro.

Il sistema esistente funziona bene, ma è mal progettato e difficile da mantenere, e stanno progettando di ricostruirlo in MVC e temo che sarà molto peggio. (Non a causa di MVC) Voglio scoraggiare il lead dev dall'usare un anti-pattern

I problemi esistenti includono

  • Stringhe hard coded nella logica di business che sono anche legate all'interfaccia (ad esempio if (x.CustomerType.Contains("Shipping Customer") foobar(); è ovunque
  • Alcune classi si mappano direttamente a dbTables (che è buono). Ma perché il software deve essere "facile aggiungere funzionalità", esiste una tabella "DynamicData" di Sharepoint per la memorizzazione di nuovi campi che il cliente potrebbe richiedere. a la [FieldName] [FieldValue] [FieldType]
  • Rifiuto di usare Linq ma catene query lamda per circa 2 larghezze di pagina.
  • Eccezioni non esplicitamente lanciate o rimandate, ma non gestite correttamente (il client può vedere lo stack di chiamate perché è semplicemente scaricato in una finestra di dialogo popup)
  • Rifiuto di utilizzare var ma adora l'idea di dynamic di tutto.

Qual è il modo migliore per convincere il mio lead dev ad evitare questi metodi orribili e non mettere tutto nella tabella generica coppia-valore-chiave nella versione 2.0? (Considerando che sono nuovo qui e il team leader è stato qui per molti anni)

    
posta indeed005 26.03.2014 - 06:51
fonte

3 risposte

7

Ciò di cui stai parlando in realtà non sono anti-schemi, ma odori. La tua domanda copre più problemi completamente separati e se sei abbastanza google, dovresti trovare materiale sufficiente per discutere con il tuo capo. C'è anche il problema di persuadere il tuo capo che quelli sono problemi reali e devono essere affrontati. Ora, per i tuoi problemi:

  • Avere "xxxType" in una classe è chiaro odore di codice e implica che ci dovrebbe essere una sorta di gerarchia di oggetti. Refactoring è altamente consigliato per creare un buon design OOP. Se la classe può avere più "tipi", allora Schema di strategia va bene.
  • Questo è comunemente chiamato Modello di attributo di entità-valore e ha i suoi pregi e problemi. Spetta a te e al tuo capo capire se si adatta alla tua applicazione.
  • Si noti che le catene lambda fanno troppo parte di LINQ. E mentre usi la sintassi della query LINQ potresti creare un codice più leggibile, alcuni preferiscono non usarlo.
  • C'è un sacco di discussioni su come dovrebbe essere fatta la gestione delle eccezioni. Google è tuo amico.
  • var e dynamic sono due cose completamente diverse. E quando si utilizza la dinamica, la persona deve essere consapevole dei aspetti negativi che porta . Ancora una volta, Google dovrebbe aiutare.
risposta data 26.03.2014 - 07:12
fonte
3

L'unico modo per convincere la tua squadra a cambiare qualcosa è parlare con lui. Per molti problemi credo che non sia necessario raccogliere "grandi argomenti" perché il codice non dovrebbe apparire così - la maggior parte degli sviluppatori sapere che tale codice non è pulito, ma spesso persone semplicemente non mi interessa , o vai con un atteggiamento di "non avere il tempo ora, lo aggiusterò più tardi" (che ovviamente non succede mai).

Il codice errato migliorerà solo quando il team avrà una comprensione comune della qualità del codice e i membri del team saranno disposti a migliorarlo. Per ottenere una comprensione comune, il team deve fare revisioni giornaliere del codice e discutere i singoli problemi. E quando non ci sono revisioni del codice ora, forse l'inizio della nuova "V2.0" può essere una buona occasione per presentare tali recensioni. Perché non suggerire questo al tuo caposquadra?

    
risposta data 26.03.2014 - 08:02
fonte
1

Gli odori più grandi qui sono probabilmente MVC e ricostruisci . Sembra un tentativo di raggiungere la conformità delle parole chiave, probabilmente con la convinzione errata secondo cui MVC risolverà tutti i problemi attuali. E per di più c'è ovviamente l'intero riscrittura da zero fallacy.

Lo schema libero ha il suo posto, e suona come una scelta ragionevole per la vostra applicazione, ma potreste voler considerare un database progettato per tale uso.

Per quanto riguarda la modifica dei piani, hai parlato con gli altri sviluppatori? Le preoccupazioni di un singolo uomo tendono a non pesare così tanto, specialmente quando quell'uomo è il nuovo tipo. Ma se alcuni degli altri sviluppatori esprimono preoccupazioni simili diventa molto più difficile non ascoltare. Se non riesci ad avere alleati probabilmente non ce ne sono molti che puoi fare.

    
risposta data 26.03.2014 - 12:30
fonte