110

かつて、Microsoftが推進したガイドラインは、抽象クラスであるという事実を取り除くために、抽象クラスに「Base」接尾辞を追加することであったことをはっきりと覚えています。したがって、、、、、そしてもちろん、のSystem.Web.Hosting.VirtualFileBaseようSystem.Configuration.ConfigurationValidatorBaseなクラスがあります。System.Windows.Forms.ButtonBaseSystem.Collections.CollectionBase

しかし、最近、フレームワークの多くの抽象クラスがこの規則に従っていないように見えることに気づきました。たとえば、次のクラスはすべて抽象的ですが、この規則に従っていません。

  • System.DirectoryServices.ActiveDirectory.DirectoryServer

  • System.Configuration.ConfigurationElement

  • System.Drawing.Brush

  • System.Windows.Forms.CommonDialog

そして、それは私が数秒でドラムアップできるものです。それで、私は、私が狂っていないことを確認するために、公式文書が何を言っているかを調べに行きました。クラス、構造体、およびインターフェイスの名前は、 MSDNのクラスライブラリ開発の設計ガイドラインにあります。奇妙なことに、抽象クラスの名前の末尾に「Base」を追加するためのガイドラインについての言及が見つかりません。また、フレームワークのバージョン1.1ではガイドラインは利用できなくなりました。

それで、私はそれを失っていますか?このガイドラインは存在しましたか?何も言わずに捨てられただけなのか?過去2年間、私は長いクラスの名前をすべて自分で作成してきましたか?

誰かが私に骨を投げます。

更新 私は夢中ではありません。ガイドラインが存在しました。KrzysztofCwalinaは2005年にそれについて不満を持っています。

4

6 に答える 6

72

Framework Design Guidelines p 174では、次のように述べています。

クラスがパブリック API での使用を意図している場合は、"Base" サフィックスを付けて基本クラスに名前を付けることは避けてください。

また: http://blogs.msdn.com/kcwalina/archive/2005/12/16/BaseSuffix.aspx

于 2009-01-09T20:02:41.033 に答える
21

また、抽象クラスに使用される静的メンバーがいくつかある場合、「ベース」は醜くなる可能性があります。

于 2009-01-09T20:09:16.933 に答える
15

私はそのようなガイドラインを覚えていません。意味のあるネーミングを使用する必要があると思います。抽象クラスは、一部のクラスに共通の機能を (ツールとして) 提供するためだけに設計されている場合があります。これには接尾辞が必要だと思います。ただし、場合によっては、それ自体が完全ではないポリモーフィズム階層のベースとして使用する必要があります。そのような場合は、通常のクラスのように名前を付けることをお勧めします。

ご覧のとおり、おそらく、ButtonBase をパラメーターとして受け入れるメソッドを宣言することはありません。サブクラスに最小限の機能を提供するように設計されています。ConfigurationElementただし、 aをさまざまな形式を持つエンティティとして扱うことはできますが、それ自体は完全ではありません (したがって抽象的です)。

于 2009-01-09T20:00:36.530 に答える
12

特に、誰かが具体的な実装を作成するために拡張するための具体的なクラスと抽象クラスの両方を提供する場合は、Base がまだ必要な場合があります。
例: Controller と ControllerBase (実際には Controller も抽象的ですが、ControllerBase よりもはるかに多くの機能を提供します)

インターフェイスに対してプログラミングする場合、ベース サフィックスは醜いので、抽象クラスが主にインターフェイスのように使用される場合は、それを使用しないという Microsoft のガイドラインが適用されると思います。おそらく、パブリック API の意味です。

ポイントは、Base サフィックスを使用するより良い代替手段がない場合があるということです。

于 2010-10-27T14:58:26.030 に答える