私はObjective-Cを初めて使用し、例外が実際にはそれらを強制する適切な方法ではないことを考えると、クラスのrep不変条件を維持するための最良の方法を理解しようとしています。これが発生する良い例は、次のセッターメソッドを持つKochanのObjective-CでのプログラミングFraction
の例として機能するクラスです。
-(void) setDenominator: (int) d {
self.denominator = d;
}
したがって、担当者の不変の要求の一部を言いますself.denominator != 0
。たとえば、Javaでは、その不変条件を強制する最も簡単な方法はIllegalArgumentException
、0が渡された場合にifをスローすることですが、Objective-Cではそれは意味がありません。別の方法は、問題を報告するためにポインタ引数を追加するNSError**
ことですが、それはやり過ぎであり、抽象化の性質に適していないようです-たとえば、データベース接続とは異なり、ゼロは期待していません通常の使用で発生する分母の割合。では、ここで最もクリーンなソリューションは何ですか?整数のエラーコードを返しますか?私が見逃している他の何か?