感想
今日は肉が焼ける音を聞きながら,洗濯機の上で書いている.
今日書いたコード
今日はassertを試したぐらい.
let age = 0 assert(age != 0)
初めて知ったこと
assert(_:_:file:line:)
は知っていたがprecondition(_:_:file:line:)
は知らなかった.で,assertはdebugビルドのときだけチェックされ,preconditionはproductionビルドでもチェックされる.
The difference between assertions and preconditions is in when they’re checked: Assertions are checked only in debug builds, but preconditions are checked in both debug and production builds. https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#ID335
値が入っていないとおかしい状況でOptionalをforce-unwrapすることはあるが,preconditionを使って落としたい状況がいまいちわからない.assertはデバッグで使えそうだなと思った.
-- 2021/06/17 22:58 追記
ここの技術系記事は会社のSlackに流れているので,それを読んだ会社の人がこの記事を勧めてくれた.
preconditionはメソッドを呼ばれたときのインスタンスの状態とか引数みたいに,自分が関与できない値のチェックに使うっぽい.ただ,すべての場合においてpreconditionでチェックすべきかというとそうではない.それはエラーの設計をどうするかみたいな話になる.
assertはデバッグで使う話もあったし,加えて内部的な事前条件のチェックに使う話もあった.
-- 追記終わり
いい匂いがしてきたのでここで終わり.