Obj-Cメソッドの戻り値の型は「BOOL」が良いと思う

Objective-Cのメソッドの戻り値の型は「BOOL」が良いと思っています。
こう書くと、何でもかんでも「BOOL」にするべきだと、言っているように誤解されてしまいますね。「BOOL」にした方が良いと思うのは、次のタイプのメソッドのときです。

  • 成功したのか失敗したのかを返すとき

C言語であれば、成功したかどうかを返すときは、エラーコードを返すことが多くあります。エラーコードは一般的には整数型です。そして、エラーコードとして一般的に使われるのは、「0はエラー無し」という定義です。
MacのCarbonの関数でも「noErr」という定数が定義されていて、「エラー無し」を示し、この定数の値は「0」です。
Objective-Cでも同様に、戻り値の型を整数型にしてエラーコードを返すようにすることはできますが、ちょっと考えると不便な点が出てきます。
今、「MyObject」というクラスがあるとし、そのクラスには「doSomething」というメソッドがあるとします。このメソッドは、エラーコードを返し、成功したら「noErr」を返すものとします。それと、「MyObject」クラスの共有インスタンスを返す「sharedInstance」というメソッドもあるとします。

次のようなコードを考えてみます。

特におかしなところはないコードです。ここで、「sharedInstance」が、このクラスを使用できないマシンでは「nil」を返すとするとちょっと問題が起きます。「obj」が「nil」になってしまうと、「[obj doSomething]」は「0」になってしまい、「noErr」になってしまいます。「obj」が「nil」ということは、クラスを使用できないので「doSomething」も失敗なのにです。「obj」が「nil」ではないかどうかをチェックすることもできますが、それよりも、Objective-Cの特徴を活かして、戻り値の型を「BOOL」にしてみると次のようになります。

このようにすると、失敗したときは「NO」が返り、「obj」が「nil」のときは「0」なので「NO」という解釈になります。「obj」が「nil」のときも、本当に「doSomething」が失敗したときも同じ扱いになります。
このような理由で「成功したのか失敗したのかを返すとき」は「BOOL」にした方が良いと思います。

関連記事

  1. Apacheのパフォーマンス調整

  2. WordPressが重いときの対策方法

  3. .NET Frameworkクリーンアップツール

  4. Mac OS X 10.5 Leopard ServerでのSubve…

  5. Mac Miniで minidlna を動かす

  6. iPhone用のページのスクリーンキャプチャです

最近の著書

最近の記事