YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Japanese subtitles

← 02-21 Beware The Time Bomb

Get Embed Code
4 Languages

Showing Revision 1 created 06/09/2014 by K2480.

  1. これは不合格の例です
    一般的に時限爆弾として知られています
  2. 時限爆弾はコードの感染です
    不具合として爆発するのを待っています
  3. ここに明らかにおかしい箇所があります
    今は眠っています
  4. 無数のサイクルのためにそこにいます
  5. アクセスまたは処理された時だけ時限爆弾が爆発します
  6. これはデバッグするのが難しいです
    なぜなら時限爆弾が
  7. 仕掛けられた元を見つけ出さなければいけないからです
    ここでアサーションが役立ちます
  8. アサーションはデータが記憶されたら
    瞬時にそれが健全かをチェックし
  9. 時限爆弾を防いでいます
  10. Timeオブジェクト作成の際にアサーションを使用し
  11. すべての引数が指定した長さになっているか
    確認することもできます
  12. たとえばhoursは0から23の間にあることを指定します
  13. 同時にTimeは24時間フォーマットを
    使用していることをユーザに暗示します
  14. またminutesとsecondsがそれぞれ
    0から59の範囲にあることを
  15. 確認します
  16. ここに確認できる特別な構文は
  17. 多重比較を強制するPython特有のものです
  18. 今思うとここの59は正しくありません
  19. うるう秒がある年があります
    該当する年では
  20. 1分を61秒にするとよいでしょう
  21. 完璧に正確にするため ここまで60であるべきです
  22. これはとても単純なTimeクラスです
    たとえば現地時間に指定することも想定しています
  23. タイムゾーンやカレンダーやサマータイムなどは
    ここでは考慮していません
  24. 本当のTimeクラスはこれよりもずっと複雑です
  25. ではアサーションが時限爆弾を防いでくれたか
    確認してみましょう
  26. ここにまだ文字列が指定されています
  27. アサーションがこれを検出するかどうか
    再度確認しましょう
  28. 見て下さい 文字列として
    "Two minutes after midnight"を置くと失敗します
  29. これは文字列が0と23の値にないからです
  30. 負の値をここに指定すると
    hoursは有効 minutesはネガティブ
  31. secondsは有効です
    実行するとまたアサーションが失敗します
  32. minutesの長さが正しくなかったので
    アサーションが失敗したのです
  33. これがまさに検出してほしいことでした
  34. 違反している状態に
    Timeオブジェクトを設定しようとすると
  35. これらのアサーションがすぐにそれを検出します