メンテナンス-いつ、いつ変更するかという質問のバランスをとる

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

  •  03-07-2019
  •  | 
  •  

質問

他の人のためにいくつかのライブラリを管理しています。それぞれのリリースを数回行った後、もう一度やり直さなければならない場合は、いくつかの方法があります。

問題は、それらをやり直す必要があるかどうかです。 私たちは皆、そのジレンマに直面していると思います-メンテナンス活動の有用性と変化の破壊的効果のバランスをどうとるか。

明らかにバグの場合、変更は必須です。そこにジレンマはありません。 新機能については、ユーティリティと複雑さの問題です。その質問に喜んで対処します。

これは、バグ修正と私が尋ねている新機能のあいまいなスペースです。 1つの例は、フレームワーク設計ガイドラインまたはCLSコンプライアンスに準拠するためのメンテナンスです。ある図書館では、CLSに準拠することを考えずにそれを書いた後、人々はそれを求めました。その結果、インターフェイスを変更してuintをintに置き換える必要がありました。それは破壊的な変化であり、ほとんど利益が得られません(ほとんどの人にとって)。

別の問題:FxCopコンプライアンス。 FxCopを満足させるために、いくつかのメソッドのパラメーター名を変更する必要がありました。しかし、これらの変更はリフレクションを使用している人にのみ影響します-型は変更されず、パラメータの名前のみが変更されました。

現在対処している問題は、フレームワークの設計ガイドラインです。イベントに関するガイドラインでは、イベントには次の2つの引数を持つシグネチャが必要であると書かれています:(オブジェクトソース、EventArgs e)。しかし、その日はフレームワーク設計コースに参加していませんでした;)。私のライブラリーのイベントは現在、単一のEventArgs引数のみを取ります。

現在、ライブラリに新しいイベントを追加しています。 新しいイベントは、フレームワークの設計ガイドラインに従う必要がありますか?またはライブラリですでに確立されているパターンですか? 新しいイベントに設計ガイドラインを使用する場合、既存のイベントを変更して設計ガイドラインにも準拠する必要がありますか? もしそうなら、どのように移行を行うのですか? [Obsolete]属性を使用する必要がありますか?リリースの数は?

より一般的には、バグ修正と新機能の間のあいまいな領域でのメンテナンスに関する考えに興味があります。

役に立ちましたか?

解決

古いコードを変更するのではなく、廃止します。適切な設計で新しいコードを開始し、古い設計を使用してピースの置換コードを記述します。最終的には、すべて適切な設計を使用したシステムになりますが、それは非常に破壊的な変更ではありません。

他のヒント

重大な変更を行う予定がある場合は、必ず多くのことを伝える必要があります。ライブラリをバージョン2として再起動する場合でも、バージョン1は将来バグ修正されるのみであり、すべての新機能を見つけることができるバージョン2開発に向かうことをユーザーに伝える必要があります。

しかし、私はこの方法で行くと思います。バグ修正のためにバージョン1をサポートし、重大な変更のために新しいバージョン2を移植します。

以前は従わなかったいくつかのガイドラインに従うことを試みた場合、新しいコードで行います。既存のコードについては、破損しない限り修正します。ただし、既存のコードにバグが見つかった場合は、同時にバグを修正しながらガイドラインを適用することをお勧めします。

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