In due righe
I code smell non sono errori: sono sintomi. La lezione li raggruppa in cinque famiglie e mostra, per ognuna, il refactoring che le corrisponde.
Indice
- 01Che cos'è un code smell
- 02Le cinque famiglie
- 03Refused bequest e shotgun surgery
- 04GRASP e protected variations
Punti chiave
01Che cos'è un code smell0:00
Si distingue il code smell dal bug: il programma gira, ma la forma del codice segnala un problema di progetto. Si chiarisce che il giudizio resta umano e nessuna metrica da sola lo sostituisce.
- Non è un bug: il programma funziona, ma la forma del codice segnala un problema di progetto.
- Il giudizio resta umano — nessuna metrica da sola decide che una classe è troppo grande.
02Le cinque famiglie10:22
Il docente lo segnala
- Le cinque famiglie vanno sapute a memoria: le chiedo sempre.
Si passano in rassegna le cinque famiglie in cui si raggruppano i code smell, con un esempio per ciascuna e il criterio che le distingue.
- Bloaters: classi e metodi cresciuti oltre la soglia in cui si leggono ancora.
- Change preventers: una modifica costringe a toccare punti lontani fra loro.
- Couplers: due classi che si conoscono troppo.
03Refused bequest e shotgun surgery24:18
Due casi trattati per esteso: l'ereditarieta' rifiutata e la modifica che si sparpaglia. Per entrambi si arriva al rimedio.
- Refused bequest: la sottoclasse eredita membri che non usa, segno che la gerarchia è sbagliata.
- Il rimedio è la delega.
04GRASP e protected variations
- Isolare i punti che cambiano dietro un'interfaccia stabile.
Glossario2 termini
refused bequest — Sottoclasse che eredita membri che non le servono.
shotgun surgery — Una modifica che costringe a toccare molte classi diverse.
Flashcard3 carte · taglia lungo il tratteggio
01Che cos'è il refused bequest?24:18
Una sottoclasse che eredita metodi o campi che non usa: la gerarchia va rivista o sostituita con delega.
02Un code smell è un bug?0:00
No: il programma funziona. È un sintomo di un problema di progetto.
03Che cosa dice protected variations?
Di isolare i punti che cambiano dietro un'interfaccia stabile.
Simulazione d'esame3 domande
⚠️
Domande generate automaticamente dalla registrazione: usale per ripassare,
ma verifica le risposte sugli appunti prima di darle per certe.
1A quale famiglia appartiene il refused bequest?
- ABloaters
- BObject orientation abusers
- CChange preventers
- DCouplers
2Che cosa distingue un code smell da un difetto?
- AIl programma non compila
- BIl programma funziona lo stesso
- CIl test fallisce
- DL'utente se ne accorge
3Qual è il rimedio allo shotgun surgery?
- AEstrarre un'interfaccia
- BRaccogliere le responsabilità sparse
- CAggiungere astrazione
- DDividere la classe
🔒 Soluzioni — guardale dopo, non adesso
1-B24:18 Il problema è l'ereditarietà usata dove serviva la delega, non la dimensione della classe.
2-B0:00 Il sintomo riguarda la forma del codice, non il comportamento a runtime.
3-B