API (および IMO の多くの種類の問題) では、問題の分割と分析のためのトップダウン アプローチが適しています。
ただし(これは私自身の個人的な経験に基づく私の 2c にすぎないので、大まかに考えてください)、その Javadoc 部分に焦点を当てることは良いことですが、それでも十分ではなく、信頼できるとは言えません。出発点。実際、これは非常に実装指向です。では、その前に行われるべき設計、モデリング、推論はどうなったのでしょうか (それがどんなに短いものであっても)?
API を構成するエンティティ (名詞、役割、動詞) を特定するには、何らかのモデリングを行う必要があります。そして、どんなに「アジャイル」になりたいと思っても、問題ステートメントの明確な全体像がなければ、そのようなものをプロトタイプ化することはできません (たとえそれがほんの 10K フィートのビューであっても)。
最良の出発点は、実装しようとしているもの、より正確には、API が対処しようとしている問題の種類を指定することです。BDD が役立つ場合があります (詳細は以下を参照)。つまり、API が提供するもの (データ要素) と、誰に対して、どのアクション (動詞) を実行し、どのような条件 (コンテキスト) で実行するかということです。次に、どのエンティティがこれらのものを提供し、どの役割の下で提供するかを特定します (インターフェース、具体的には、メソッドの包括的なバッグとしてではなく、単一の明確な役割または機能とのインターフェース)。これは、それらがどのようにまとめられているか (継承、構成、委任など) の分析につながります。
それができたら、準備段階のJavadocを開始するのに適した位置にいる可能性があります。次に、これらのインターフェイスやロールの実装に取り掛かることができます。さらに Javadoc が続きます (Javadoc に含まれない他のドキュメント、つまりチュートリアル、ハウツーなどに加えて)。
ユースケースと検証可能な要件、およびそれぞれが単独で、または共同で行うべき動作の説明から実装を開始します。BDD はここで非常に役立ちます。
作業を進めながら、できればいくつかのメトリクス (循環的複雑度とLCOM の変形) を取得して、継続的にリファクタリングします。これら 2 つは、どこをリファクタリングする必要があるかを示します。
API の開発は、アプリケーションの開発と本質的に異なるものであってはなりません。結局のところ、API はユーザー (たまたま開発の役割を持っている) にとって実用的なアプリケーションです。
そのため、API エンジニアリングを一般的なソフトウェア集約型アプリケーション エンジニアリングと区別して扱うべきではありません。同じプラクティスを使用し、必要に応じて調整すれば (ソフトウェアを扱うすべての人がそうすべきです)、うまくいくでしょう。
Google はかなり前から、YouTube に「Google Tech Talk」ビデオ講義シリーズをアップロードしています。そのうちの 1 つは、 「優れた API を設計する方法とそれが重要な理由」という 1 時間の講義です。こちらもチェックしてみるといいかもしれません。
役立つかもしれないいくつかのリンク:
Google Tech Talk の「Beyond Test Driven Development: Behavior Driven Development」: http://www.youtube.com/watch?v=XOkHh8zF33o
ビヘイビア駆動開発 : http://behaviour-driven.org/
書籍「Practical API Design」の Web サイト コンパニオン: http://wiki.apidesign.org/wiki/Main_Page
基本に戻る - 構造化された設計#結束と結合 : http://en.wikipedia.org/wiki/Structured_Design#Structured_Design