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>();