バックグラウンド:
私は大学で「ソフトウェアの制約」という授業を受けています。最初の講義では、優れた API を構築する方法を学びました。
非常に悪い API 関数の良い例はpublic static void Select(IList checkRead, IList checkWrite, IList checkError, int microseconds);
、C# のソケットです。この関数は、ソケットの 3 つのリストを受け取り、それらを破棄するため、ユーザーはソケットを に供給する前にすべてのソケットのクローンを作成する必要がありますSelect()
。サーバーがソケットを待機できる最大時間を設定する int のタイムアウト (マイクロ秒単位) もあります。この制限は +/-35 分です (int であるため)。
質問:
- API を「悪い」と定義するにはどうすればよいですか?
- API を「良い」と定義するにはどうすればよいですか?
考慮すべき点:
- 覚えにくい関数名。
- わかりにくい関数パラメータ。
- 悪いドキュメンテーション。
- すべてが相互に関連しているため、1 行のコードを変更する必要がある場合、実際には他の場所で数百行を変更する必要があります。
- 引数を破棄する関数。
- 「隠れた」複雑さによるスケーラビリティの悪さ。
- ユーザー/開発者は、API を使用できるように、API の周りにラッパーを構築する必要があります。