API がオーバーエンジニアリングされるのはどのような場合ですか?[閉まっている]

StackOverflow https://stackoverflow.com/questions/948355

質問

私は、単純なことを単純にしない、過剰に設計された API を使用することを嫌います。それにもかかわらず、私はオープンソース ライブラリの API の設計に取り組んでおり、オーバーエンジニアリングの罠に陥っていると感じ始めています。もちろん、私がこのひどいことを書いたので、それがどのように機能するかは他の誰よりも私にとって明らかであるため、実際にはわかりません。開発者の観点から見た、API がオーバーエンジニアリングされている可能性を示す警告サインは何ですか?

役に立ちましたか?

解決

「あなたのAPIがoverengineeredされる可能性があります開発者の視点からいくつかの警告サインは何ですか?」

ノーユースケースます。

あなたが心の中で具体的な使用例で有用なAPIを設計していない。、シナリオ「これを行うには、」シンプルを介して実行することができない場合は、

あなたのドキュメントは、これらのユースケースである必要があります。

直接のユースケースに対応していない機能は、オーバーエンジニアリングおそらくされます。

他のヒント

私は非常に便利な、それは過去に私を助けていた1つのトリックは中に、前にドキュメントを書き、あなたのコードの後です。

私は通常、コードを書く前に設計を文書化、他の人が使用するAPIを設計する場合。私はをめぐる紛争とナンセンスの通常完全な設計、設計仕様を設計している場合。

コーディング時には、私は通常のクラス定義と関数本体をスタブアウトし、彼らのためにdoxygenのコメントを書き始めます。コメントの中で私は、ユースケース、サンプルコード、およびインタフェースの仮定を持っています。あまりにも多くの実際のコードが書き込まれる前に、このフェーズでは、通常、再設計を複数回経クラスインターフェイス。私は、サンプルコードを書くのは難しいときに、私は工学を超えていた知っていると私は苦労インターフェースを説明しています。悪いデザインのアイデアの多くは、露出して、あなたのAPIを使用する方法を人々に説明しようとするときに排除されています。

コーディングした後、私は本当で、コメントのサンプルコードを置き換えてコンパイルし、私のユニットテスト、さらに文書インターフェースの振る舞いからコピーしたコードをテストしました。オーバーエンジニアリングのもう一つの兆候があまりにも多くの可動部分と指数関数的割合で同じものとユニットテストの成長を行うには、あまりにも多くの方法があるので、私のユニットテストは、インターフェイスの変更に追いつくことができないときです。

するとき、共通のAPI呼び出しのスタックトレースは、全体の事を確認するには、画面をスクロールする必要があります。

ドキュメントとサンプルを確認するときは、

、自身に関連してAPIを議論言い回しの割合は、信頼できるユースケースへの適用を議論言い回しの割合をcmparedます。

S.Lottは、ユースケース、言ったように。彼らは正確にあなたのAPIがやっ方に向けられるべきかを決定します。 機能的にコヒーレントに - あなたは非常に明確で、具体的な目標を完了するために、あなたのAPIを設計した場合 - あなたが最も可能性の高い使用し、理解しやすいの両方で、あなたのAPIのAPIまたはコンポーネントで終わるしようとしている。

APIを設計するユーザーインターフェースを設計するようにする必要があります。ほとんどのUIのすべての概念はKISSの原則、あるいはカイゼン、例えば、APIによって包含することができます。

私はそれらのUIコンセプトにリンクしたいが、彼らは私が1つの以上のハイパーリンクを投稿させませんので、私は新しいユーザーです。そこに良い例:StackOverflowのは、私たちが投稿する前に、私たちに知らせ;)

自問すべき 2 つの(関連する)質問がすぐに思い浮かびます。

  • 複数の方法で実行できることはありますか?
  • API の残りの部分に関して表現できる API 上のメソッド/プロパティはありますか?

答えるのはさらに難しく、それ自体がオーバーエンジニアリングの兆候ではありませんが、API がまだそれほど単純ではない兆候であることは間違いありません。

  • あなたが紹介した以上のものを削除できるようにする、導入できる他のメソッド/プロパティはありますか(他の 2 つの質問に基づく)

それは誰もがそれを理解できないように賢いです。

あなたが精密検査で、より単純な演算の組成物であることが判明し、多くの機能を持つ大規模なAPIを持っていたときに心配を開始します。プリミティブの組成メカニズムの高い比を有するAPIは、通常、良い設計である。

(API設計は言語設計と非常に類似しており、ここで私は、基本的にそれを簡素化し、不必要な追加のルーチンをレンダリングする構図機構を含む、スキームをespousing哲学、代わりのAPIに複数のルーチンを重ねています。)

プロジェクト全体が終了するAPIを待っている、ヶ月間まで開催されている場合、

私の経験では、伝えることができます。

APIを使用している場合は、次のとおりです。 (1)より鈍角、より複雑な、あまり効率的で、そしてちょうど基礎となる技術を使用するよりも少ない予測可能 (2)安全性、スケーラビリティ、またはクロスプラットフォームの自由のための重要な利点を提供していません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top