1

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

質問は:私はそれらをやり直す必要がありますか?私たちは皆、そのジレンマに直面していると思います-メンテナンス活動の有用性と変化の破壊的な影響のバランスをとる方法。

明らかにバグの場合、変更は必須です。そこにはジレンマはありません。新機能の場合、それは有用性と追加された複雑さの問題です。私はその質問に安心して対処できます。

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

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

私が今扱っている問題は、フレームワークの設計ガイドラインです。イベントに関するガイドラインでは、イベントには2つの引数を持つ署名が必要であると記載されています:(オブジェクトソース、EventArgs e)。しかし、その日はフレームワークデザインコースに欠席しました;)。私のライブラリのイベントは現在、単一のEventArgs引数のみを取ります。

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

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

4

3 に答える 3

1

古いコードを変更するのではなく、非推奨にします。適切な設計で新しいコードを開始し、古い設計を使用して部分の置換コードを記述します。最終的には、システム全体が適切な設計を使用することになりますが、それは非常に破壊的な変更にはなりません。

于 2009-03-05T18:22:41.903 に答える
0

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

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

于 2009-03-05T18:25:31.023 に答える
0

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

于 2009-03-05T18:27:28.820 に答える