http://d.hatena.ne.jp/oraccha/20090606/1244225100 経由で。
C# の Select() 関数についてひとしきり文句を書いた後に、実際良い API を作るコツを挙げている。
API は不便を感じない限り出来るだけ小さく
例えば UNIX で wait, waitpid, wait3 wait4 と色々あるのはやり過ぎ。wait4 だけでよい。微妙に似た関数が沢山あって、一つの一般的な関数で他の奴が実装出来ない作りになってるのが最悪なパターン。
文脈なくして API なし
キーから辞書を引いて文字列を返す関数を考える。キーに対応する文字列が無かった時、次のやり方があるだろう。
- 例外発生
- null を返す
- 空文字列を返す
どれが正しいかは、その関数が使われる状況によって違う。null と 空文字列の区別が不要なら、空文字列を返すのが便利だろう。
API は責任転嫁するな
API を使うために必要な条件を色々作るな。例えばメモリ管理は自分で行え。ユーザにメモリを割り当ててもらってポインタ渡しというのは、速くなりそうに見えるが、全体のコストは変わらないのでややこしくなるだけ無駄。