質問

数年前、TCP 経由で関数呼び出しを行うために C++ IPC ライブラリが必要でした。1 つを選択し、アプリケーションで使用しました。しばらくして、必要な機能がすべて提供されていないことが明らかになりました。ソフトウェアの次のバージョンでは、 サードパーティの IPC ライブラリを破棄し、自分たちで作成したライブラリに置き換えました。. 。それ以来、これが良い決断だったのかどうか疑問に思うことがあります。というのも、これはかなりの労力を要することが判明し、明らかに次のように感じたからです。 車輪の再発明. 。そこで私の質問は次のとおりです。コードの再利用には、この再発明を正当化するような欠点はありますか?

役に立ちましたか?

解決

最大の欠点サードパーティのライブラリを再利用することにより、(あなたがそれを自分で言及)、することができます真ん中の界面層を作成するために管理していない限り、あなたが強く、結合され、どのようにそのライブラリの動作に依存し、それがはずの方法を使用するようにしているということですそれの世話をする。

しかし、それは別のもので、既存のライブラリを置き換えるために、多かれ少なかれ、新しい機能が類似した方法で動作することを必要とし、一般的なインターフェイスを作成するのは難しいです。しかし、あなたは常にそれを使用してコードを書き換えることができますが、それは非常に難しいことと、長い時間がかかることがあります。

もう一つの側面は、あなたが車輪の再発明場合、あなたは何が起こっているかを完全に制御を持っている、あなたが合うようにあなたが修正を行うことができるということです。あなたはアップデートとバグ修正をご提供常に生きている第三部品ライブラリに依存している場合、これは完全に不可能です。一方、コードを再利用することは、この方法は、あなたは時々行うためのものであるかもしれないあなたのソフトウェアに他のことに集中することができます。

はトレードオフは常にあります。

他のヒント

いくつか提案できます

  1. バグは複製されます - バグのあるコードを再利用した場合:)

  2. 場合によっては、追加のオーバーヘッドが追加される場合があります。たとえば、単純なことを実行する必要があるだけの場合、必要な機能を実装する複雑な BIG ライブラリを使用することはお勧めできません。

  3. ライセンスに関していくつかの問題に直面するかもしれません。

  4. 外部ライブラリの学習/構成には、時間がかかる場合があります。再開発にかかる時間が大幅に短縮される場合、これは効果的ではない可能性があります。

  5. 十分に文書化されていないライブラリを再利用すると、予想/推定よりも時間がかかる可能性があります

追伸独自のライブラリを作成した理由は次のとおりです。

  • 外部ライブラリの評価は多くの場合非常に難しく、時間がかかります。また、問題によっては、徹底的な評価を行って初めて明らかになるものもあります。
  • これにより、私たちのプロジェクトに特有のいくつかの機能を導入することが可能になりました。
  • ライブラリを隅から隅まで知っていると、メンテナンスや拡張機能の作成が容易になります。

これはかなり常にケースバイケースです。あなたが再利用しようとしているものの適合性と品質を見ている。

ナンバーワンの問題がある:そのコードがGOODコードがある場合にのみ成功したコードを再利用することができます。それは悪い、バグを持って設計された、または非常にもろいた場合、あなたはすでにに実行したのと同じ問題に遭遇するだろう - 。それは、既存のコードを修正するために一生懸命だからあなたはとにかくそれを自分で行うに行かなければならない。

しかし、それは、サードパーティのライブラリのだならば、あなたがのためのソースコードを持っていないことを使用して検討していること、それは少し違うのです。あなたは試してみて、それが図書館のようなものがあります場合は、ソースを取得することができます。いくつかの商用ライブラリベンダーが提案や機能要求に開放されています。

ゴールデン知恵を::それは再利用可能なことができる前使用可能にする必要があります。

あなたのコードが外部リソースに依存し、それらが消える場合は、

、あなたは多くのアプリケーションの壊滅部分かもしれません。

ほとんど再利用コードはインターネットから来ているので、あなたはコードの浴室の壁を約アトウッド会談をを。あなたは安全ではないか、信頼できない借りコードの問題に実行することができ、そしてより多くの黒は、それが、悪化している箱入ります。

コードの再利用の欠点:

  • これは自分のコードではなく、コードが多少肥大化している可能性があるため、デバッグには非常に時間がかかります。
  • 特定の要件がある場合は、再利用するコードによって制約され、その制限を回避する必要があるため、より多くの作業が必要になります。
  • コードを継続的に再利用すると、バグを追跡するのが難しい、肥大化して整理されていないアプリケーションが長期間実行されることになり、プログラミング地獄が発生します。
  • コードを再利用すると、(場合によっては) プログラマーの課題と満足度が低下し、新しいスキルを開発する機会が無駄になる可能性があります。

それは、ケース、言語、再利用または再作成するコードによって異なります。一般に、言語のレベルが高くなるほど、コードを再利用する傾向が高まると思います。高水準言語のバグはより大きな影響を与える可能性があり、書き直すのも簡単です。高レベルのコードは、読みやすく、整然としており、柔軟性を維持する必要があります。もちろん、これはすべてのコードに言えることですが、どういうわけか、C ライブラリを書き直すことは、PHP モデル コードを書き直す (またはむしろリファクタリングする) ことよりも良いアイデアではないように思えます。

とにかく、これらは「車輪の再発明」を促進するために私が使用する議論の一部です。

場合によっては、現在のコードベースのバグや制限を回避するよりも、最初から書き直す方が速くて楽しく、長期的には良い場合があります。

あなたは再発明このライブラリを維持するために使用しているか疑問に思いますか?

  1. 再利用可能なコードを作成するための初期時間はより高価であり、時間コストがかかる
  2. master ブランチに更新がある場合は、それを同期して再度デプロイする必要があります
  3. バグは複製されます - バグのあるコードを再利用した場合
  4. 文書化が不十分なコードを再利用すると、予想/推定よりも時間がかかる可能性があります
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top