Esempio di progetto di codice errato per motivare il refactoring / buon design [chiuso]

5

Questo è un po 'l'opposto di link .

Sto insegnando ingegneria del software agli studenti universitari e vorrei un blob di codice orientato agli oggetti che dimostra accoppiamento stretto, cattiva astrazione, basso incapsulamento, scarsa manutenibilità, i lavori. Qualcuno ha un buon esempio? Qualcosa che è digeribile (come in, in grado di sfogliare in un'ora o meno) sarebbe fantastico. Grazie in anticipo.

    
posta Alex Lo 10.01.2012 - 22:01
fonte

5 risposte

1

Potresti Google per "refactoring". Spesso c'è una foto prima e dopo o anche un processo passo-passo che può fornire un punto di partenza "codice errato".

Se ciò non funziona, perché non insegnare loro come scrivere codice cattivo? Potrebbe essere un esercizio interessante nel pensiero contrarian. Pubblica le "regole del codice errato" sulla lavagna / lavagna:

1) Prova a seppellire gli errori ortografici nei nomi dei metodi
2) Usa nomi di variabili estremamente brevi, lunghi o privi di significato
3) Prova a riutilizzare nomi di variabili o nomi di variabili simili in ambiti diversi 4) Scrivi commenti lunghi che non corrispondono al codice o sono privi di significato (getSalesTax - un metodo che ottiene l'imposta sulle vendite)
5) Metti tutte le funzionalità in una singola riga possibile

Altri sono invitati ad aggiungere le 95 regole mancanti a questa risposta.

    
risposta data 10.01.2012 - 23:21
fonte
0

Pur essendo ancora un progetto studentesco, invio vergognosamente parte del mio progetto capstone . È un software open source scritto in Java.

È abbastanza grande che probabilmente non vorresti recuperarlo e ricominciare.

Ha alcuni costrutti assolutamente orribili, ma dovrebbe avere una struttura sufficiente per rendere appetibili alcune sezioni chiave.

Disclaimer: avevamo solo 3 membri di team su 5 e stavamo auto-insegnando noi stessi come parte del progetto per renderlo più difficile.

Sarò disponibile per domande / risposte o qualsiasi altra cosa se finisci per guardarlo.

    
risposta data 10.01.2012 - 22:24
fonte
0

Il codice veramente deprimente non dura spesso abbastanza a lungo da farle notare. Potresti voler controllare inattivo o pre-alpha su sourceforge.

Inoltre, Clean Code di Robert Martin ha un sacco di esempi precedenti e successivi che prendono quei tipi di concetti uno alla volta. Non è esattamente un esempio canonico, ma quello è un libro che vorrei che ogni nuovo affitto avesse letto al college.

    
risposta data 10.01.2012 - 22:27
fonte
0

Potresti voler specificare la lingua in cui stai cercando un progetto. Circa un anno fa ho scritto un client e server per quattro- dimensionale vai in C ++ con Qt. Si tratta di circa 4.000 righe di codice se ricordo bene, e dovrebbe funzionare sia su Windows che su Linux.

Il codice abusa delle eccezioni, l'accoppiamento stretto (penso che ci sia anche una cattiva amicizia da qualche parte), RTTI, usa un protocollo di rete ridicolmente cattivo (che è completamente privo di documenti) e ha almeno due classi che fanno troppo ( Server e Client ). Oh, e manca qualsiasi tipo di test unitari. Mi ci sono volute circa tre settimane per scrivere se ricordo bene, quindi potrebbe essere troppo piccolo.

Sentiti libero di contattarmi con domande / reclami se scegli di usarlo.

Penso che un modo interessante di generare tali progetti sia quello di prendere progetti di studenti esistenti e poi chiedere agli studenti di aggiungere funzionalità a loro in un intervallo che non è abbastanza lungo. Dopo alcuni di quelli, che probabilmente vengono affrontati velocemente, potresti insegnare loro a refactoring e quindi richiedere un'altra funzione alla fine (in una simile fascia oraria) per dimostrare ulteriormente i benefici di ciò che hanno imparato / fatto.

    
risposta data 11.01.2012 - 00:11
fonte
0

Abbastanza facile, pensa a un progetto, chiedi alla persona / al gruppo di codificarlo in un giorno o due e poi spiegali perché è un cattivo progetto. Le persone imparano molto meglio di quanto sia rilevante per ciò che sanno (in questo caso, il loro codice).

    
risposta data 11.01.2012 - 01:56
fonte

Leggi altre domande sui tag