Italian subtitles

← 02-21 Attento alle Bombe ad Orologeria

Get Embed Code
4 Languages

Showing Revision 1 created 02/04/2013 by fabio.

  1. Quello che vedi qui e' un esempio di un problema comunemente noto come "bomba a orologeria".
  2. Una bomba a orologeria e' un'infezione del codice che sta solo aspettando di esploderti in faccia.
  3. C'e' qualcosa di tremendamente sbagliato ed e' li' e sta dormendo.
  4. Puo' rimanere li' per milioni di cicli.
  5. Solo quando ci si accede o la si elabora succede che la bomba a orologeria esplode
  6. ed e' difficile da debuggare perche' devi capire
  7. dove la bomba e' stata inizialmente collocata e accesa -- ecco quando diventano indispensabili le asserzioni.
  8. Un asserzione inibisce le bombe a orologeria, verificando che i dati abbiano senso
  9. nel momento stesso in cui vengono immagazzinati.
  10. Quando creiamo un oggetto Time, potremmo per esempio usare le asserzioni
  11. per assicurarci che gli argomenti siano effettivamente tutti entro gli intervalli indicati.
  12. Per esempio, potremmo dire che le ore devono stare tra 0 e 23.
  13. Allo stesso tempo informeremo l'utente che l'ora e' nel formato a 24 ore.
  14. Vogliamo anche essere sicuri che i minuti e i secondi stiano nei giusti intervalli,
  15. rispettivamente tra 0 e 59.
  16. Questa particolare sintassi che vedi qui e' una specialita' di Python
  17. che permette di raggruppare confronti multipli in uno solo.
  18. Pero' ora che ci penso, il 59 qui non e' giusto:
  19. ci sono anni in cui c'e' il "secondo intercalare" e se c'e' il secondo intercalare
  20. ci potrebbero essere 61 secondi in un minuto.
  21. Quindi per essere perfettamente esatto, bisogna che ci sia 60 qui.
  22. Questa rimane una classe orario semplice, tiene conto soltanto dell'ora locale, per fare un esempio.
  23. A noi non interessano le timezone o i calendari o le ore legali o niente altro a questo punto.
  24. Un classe orario realistica e' molto piu' complicata di questa qui.
  25. Adesso vediamo se queste asserzioni ci aiutano ad evitare le bombe a orologeria.
  26. Abbiamo ancora la stringa passata qui:
  27. vediamo se la nostra asserzione la cattura. Premiamo di nuovo Run...
  28. ...e vediamo che dopo aver messo 2 minuti dopo la mezzanotte nella stringa, l'asserzione si blocca
  29. perche' la stringa non e' tra i valori 0 e 23.
  30. Che succede se passiamo dei valori negativi qui, diciamo, l'ora giusta, i minuti in negativo,
  31. i secondi giusti...premiamo Run e di nuovo abbiamo un asserzione che si blocca.
  32. Ora abbiamo un asserzione in cui i minuti non sono nel giusto intervallo,
  33. il che e' esattamente cio' che volevamo catturare.
  34. Con queste asserzioni quassu', ogni tentativo di portare l'oggetto Time
  35. ad uno stato illegittimo verra' immediatamente rilevato.