例外があるような言語ならassertはあまり必要ない。
逆に例外がない言語では積極的に使わないと危険。
内部エラーをエラーコードで返してもswitch/caseでスルーされるだけ。