Scriba · appunti

Ingegneria del software — i code smell

Apri questa trascrizione su Scriba
48:12 · 7.180 parole · it

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

  1. Che cos'è un code smell
  2. Le cinque famiglie
  3. Refused bequest e shotgun surgery
  4. GRASP 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.

02Le cinque famiglie10:22

Il docente lo segnala

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.

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.

04GRASP e protected variations

Glossario

refused bequestSottoclasse che eredita membri che non le servono.
shotgun surgeryUna modifica che costringe a toccare molte classi diverse.

Flashcard

Che cos'è il refused bequest?24:18
Una sottoclasse che eredita metodi o campi che non usa: la gerarchia va rivista o sostituita con delega.
Un code smell è un bug?0:00
No: il programma funziona. È un sintomo di un problema di progetto.
Che cosa dice protected variations?
Di isolare i punti che cambiano dietro un'interfaccia stabile.

Simulazione d'esame

Domande generate automaticamente dalla registrazione: usale per ripassare, ma verifica le risposte sugli appunti prima di darle per certe.

1. A quale famiglia appartiene il refused bequest?
  1. ABloaters
  2. BObject orientation abusers
  3. CChange preventers
  4. DCouplers
2. Che cosa distingue un code smell da un difetto?
  1. AIl programma non compila
  2. BIl programma funziona lo stesso
  3. CIl test fallisce
  4. DL'utente se ne accorge
3. Qual è il rimedio allo shotgun surgery?
  1. AEstrarre un'interfaccia
  2. BRaccogliere le responsabilità sparse
  3. CAggiungere astrazione
  4. DDividere la classe
Soluzioni
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
Contenuto generato da un'intelligenza artificiale a partire dalla registrazione: può contenere errori o imprecisioni. Questa dichiarazione deve restare sul documento se lo distribuisci o lo pubblichi.
Licenza non commerciale — vietata la vendita.
Creato con Scriba · scriba.vignati.org
Inizia con 30 minuti di trascrizione gratuiti