如何避免疯狂的命名约定?

时间:2010-02-09 20:46:33

标签: architecture naming-conventions recommendation-engine

将程序集命名为一个名称,将程序集内部的文件夹命名为另一个名称然后是常见的 开始将这些名称带入这些文件夹中的类?例如:

Project.Presenter
    Carriers
        CarriersFindPreferedCarriersPresenter.cs
        CarriersPreferencesPresenter.cs
        PreferredTargetLocationPresenter.cs

Project.Service.Fixture
    Carriers
        CarriersServiceFixture.cs

或者进行更进一步,甚至是这样的方法:

List<PreferredTargetLocationPresenter.PreferredTargetLocation> 
newlyAddedPreferredLocations = new
List<PreferredTargetLocationPresenter.PreferredTargetLocation>();

newlyAddedPreferredLocations.add(destinationLocation.PreferredCity);        

对我来说,这似乎变得越来越混乱,因为你更长时间地处理项目并开始添加额外的程序集和方法。有没有更好的方法来解决这个问题?

欢迎任何反馈。

4 个答案:

答案 0 :(得分:4)

向一百个不同的人询问这个问题,你会得到一百个不同的答案。我喜欢用任何方法编写/维护代码最简单的方法,这是长时间描述性名称的一半,而短小而甜蜜的名字则是另一半。只要代码直观且灵活,我就无法用任何一种方式看到问题。

答案 1 :(得分:4)

Pragmatic Programmers推广了DRY原则:不要重复自己。这也适用于命名。一次又一次地重复相同的范围名称或前缀不会再添加任何信息,只会使名称更长,更不易读,更容易输入错误并且更难搜索。如果您有100个以PreferredLocation*开头的班级名称,那么您将很难找到合适的名称: - (

所以我完全反对这一点。类和方法名称的大小由封闭的路径/项目名称限定(在java中为package,在C#中我不知道正确的术语是什么),所以如果你需要有关a的下落的所有信息类/方法,它足以查看它的完全限定名称。但是,在常规代码中,不应强制在任何地方使用完全限定名称。唯一的例外是姓名冲突,但我认为这应该被视为例外,而不是规则。

此外,在一个设计良好的应用程序中,大多数方法/类都不是全局可见的,只在它们各自的包中(编程语言允许这样 - Java确实如此,我也确定C#)。这减少了名称冲突的风险,并且进一步消除了对类名称前缀的需求。

答案 2 :(得分:3)

有时你必须使用更长的名字,但你通常希望尽可能缩短名字。关键是要有描述性的名称,这些名称可以提供足够的细节,而不是更多。

答案 3 :(得分:2)

PreferredTargetLocationPresenter.PreferredTargetLocationPreferredTargetLocationPresenter类型的子类型吗?换句话说,你在嵌套类吗?

如果是这样,你可能最好将PreferredTargetLocation分解为自己的类。这允许你写:

List<PreferredTargetLocation>

而不是

List<PreferredTargetLocationPresenter.PreferredTargetLocation>

如果您使用的是C#3.0,则可以使用var进一步缩短声明:

var locations = new List<PreferredTargetLocation>();