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

Architecture 如何避免疯狂的命名约定?,architecture,naming-conventions,recommendation-engine,Architecture,Naming Conventions,Recommendation Engine,将程序集命名为一个名称,将程序集中的文件夹命名为另一个名称,然后将其命名是常见的吗 开始将这些名称放入文件夹中的类中?例如: Project.Presenter Carriers CarriersFindPreferedCarriersPresenter.cs CarriersPreferencesPresenter.cs PreferredTargetLocationPresenter.cs Project.Service.Fixtur

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

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);        
列表
newlyAddedPreferredLocations=new
List();
添加(destinationLocation.PreferredCity);
在我看来,随着您在项目上工作的时间越来越长,并开始添加额外的程序集和方法,这似乎变得越来越令人困惑。有没有更好的方法来处理这个问题


欢迎任何反馈。

问一百个不同的人这个问题,你会得到一百个不同的答案。我喜欢任何让编写/维护代码变得最简单的方法,一半是长的描述性名称,另一半是短而甜美的名称。只要代码直观灵活,我看不出任何一种方法都有问题。

有时您必须使用较长的名称,但通常希望名称尽可能短。关键是要有描述性的名称,只提供足够的详细信息。

PreferredTargetLocationPresenter。PreferredTargetLocation
PreferredTargetLocationPresenter
类型的子类型吗?换句话说,您是否正在嵌套类

如果是这样,您最好将
PreferredTargetLocation
划分到自己的类中。这允许您编写:

List<PreferredTargetLocation>
流行的干燥原则是:不要重复你自己。这也适用于命名。一次又一次地重复相同的作用域名称或前缀不会添加更多信息,只会使名称更长、可读性更低、更容易键入错误和更难搜索。如果您有100个以
PreferredLocation*
开头的类名,您将很难找到正确的类名:-(

因此,我完全反对这种做法。类和方法名称的范围是由封闭的路径/项目名称确定的(在java中是
package
,在C中,我不知道正确的术语是什么),因此,如果您需要有关类/方法位置的所有信息,只需查看它的完全限定名就足够了。但是,在常规代码中,不应强制在任何地方使用完全限定名。唯一的例外是名称冲突,但我认为这应被视为例外,而不是规则


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

演示者就像一个管理者,具有PreferredTargetLocation属性,该属性在演示者第一次使用UI实例化时加载。
List<PreferredTargetLocationPresenter.PreferredTargetLocation>
var locations = new List<PreferredTargetLocation>();