类的前缀/后缀

Joa*_*nge 3 .net c# naming-conventions

当你编写一个包含大量类的应用程序时,你是否为你的类名使用前缀/后缀?或者我应该只依赖我已定义的命名空间?

在我的情况下,我有类似的课程:

Blur
Contrast
Sharpen
Invert
...
Run Code Online (Sandbox Code Playgroud)

我只是不知道明天会发生什么,并希望尽可能与BCL中经常使用的类无碰撞.

有任何想法吗?

Ita*_*vka 24

命名空间的发明正是为了解决这个问题.使用它们.


rme*_*dor 11

我会说不要使用前缀或后缀作为名称 - 这非常接近匈牙利符号,这被广泛认为是坏的,即使是MS的创建者也是如此.这个规则的唯一例外是接口,许多人认为可以作为前缀I,但我认为接口也不应该有前缀.您应该将与命名空间相关的类分组以防止冲突.

  • 关于发明者如何使用Joel Spolsky使用匈牙利符号的ihmo优秀文章:http://www.joelonsoftware.com/articles/Wrong.html (2认同)

Mic*_*ows 7

避免使用前缀或后缀类,除非:

  • 这是一个界面: IFilter
  • 您需要告知它正在参与模式: GaussianBlurStrategy
  • (来自marc_s)您创建了一个自定义异常: ImageDoesNotSupportFilterTypeException
  • 有时候,如果某个东西是抽象基类,则进行通信:FilterBase

我被最后一个撕裂了.我不喜欢看到Base后缀,但是对于API的消费者而言,要知道他们无法根据名称实例化Filter(不先尝试),这真的很难.我不喜欢它,但这是我使用的惯例.

编辑

根据Jon B的评论,后缀自定义委托Handler是常见的(FilterExecutedHandler(object sender, FilterEventArgs e);).虽然委托声明本身不是一个类,但它可能导致名称冲突,所以应该在这里说明.