Tag: 命名约定

CA1500与SA1309 – 哪一个获胜?

我的前缀是说我理解Code Analysis和StyleCop都是指导原则,很多人都选择忽略它们。 但话说回来,我想看看这两条规则的普遍共识是什么。 规则CA1500表示不要使参数名称和私有字段名称相同。 另一方面, 规则SA1309表示不要为成员添加下划线或“m_”作为前缀。 这使我们几乎没有选择区分私有支持字段与其相应的参数。 拿这些例子。 SA1309抱怨: class SomeClass { int _someField; public SomeClass(int someField) { this._someField = someField; } } CA1500抱怨: class SomeClass { int someField; public SomeClass(int someField) { this.someField = someField; } } 我有什么选择? 我不想创建私有支持字段PascalCase,因为这是公共字段/属性的(我相信相当普遍的)约定。 而且我不想重命名其中一个,只是为了解决歧义。 所以我留下了上面两个中的一个,这将要求我压制其中一个SA / CA规则。 你们通常做什么? 更重要的是,这些规则的作者认为你应该做些什么(因为它们都没有在他们的文档中提供替代解决方案)?

C#中的命名约定 – 下划线

我在http://www.asp.net上的MVC3 Razor教程中看到了这一点 public ActionResult Index() { return View(_usrs._usrList); } 这种用法不是很明显吗? 我一直以为[docs] 在C#中,我通常看到它仅在为公共属性定义底层私有成员变量时使用。 其他私有成员变量没有下划线。 尽管如此,随着自动属性的出现,这种用法已基本消失。 或者这是我看到的新命名惯例? 对微软自己的教程中的用法非常好奇。 PS:文章非常好。 只是我倾向于遵循命名约定以提高可读性。

DataAccess项目中类的命名约定是什么?

我通常将Business项目中的类命名为Manager.cs,如BaseManager.cs,CommentsManager.cs,ProfileManager.cs等… 如何在DataAccess项目中命名您的类? 你称之为CommentsDA,CommentsDB还是什么? 好奇…… BTW,我正在使用.NET C#。

程序集名称和版本

在组装和发布时,什么被认为是最佳实践? 我希望能够引用同一个库的多个版本 – 解决方案包含多个依赖于我们自己构建的commonutils.dll库的不同版本的项目。 由于所有依赖项都被复制到bin / debug或bin / release,尽管每个DLL文件具有不同的程序集版本号,但只存在commonutils.dll的单个副本。 我应该在程序集名称中包含版本号,以便能够引用库的多个版本,还是有另一种方式?

私有字段的命名约定

首先,我知道这个问题之前已被问过几次,最后,这主要是个人偏好的问题,但是阅读关于这个主题的所有主题,有些事情对我来说并不清楚。 基本上,大多数人都同意的一点是,公共成员应该是PascalCased而私人成员应该是低级的.CamelCased。 通常引发争论的问题是是否用私人成员或其他任何东西作为私人成员的前缀。 前缀违反了几个StyleCop规则(显然可以关闭) 不加前缀的基本原理是你应该使用它。 改为加前缀。 我遇到的问题是我不明白它是如何产生影响的? 我的意思是,并不是说你不能在课堂上对公共成员使用这个。 让我们想象一下Customer类,看起来像这样: class Customer { private int age; public int Age { get { return this.age; } set { this.age = value; } } } (显然,在这么简单的情况下,我可以使用autoproperty,但这只是一个例子)。 如果我在这个类中添加了第二个属性,没有什么能阻止我使用this.Age(公共属性)而不是this.age(私有字段)来引用它。 有时候,如果在getter级别应用了一些validation或格式化,它甚至可以被发现。 此外,如果我的类的其他一些属性需要修改客户的Age,那么直接使用属性而不是后备字段是有意义的,因为setter也可以实现一些业务规则validation,对吧? 换句话说,我真的没有看到这个关键字如何避免私人支持成员和公共属性之间的混淆,因为这可以在两者上使用,而IntelliSense显示两者? 谢谢。

正确命名C#事件和处理程序

从我读过的内容来看,我不确定我是否有事件和处理程序的命名约定。 (似乎有一些相互矛盾的建议)。 在下面的两个类中,任何人都可以告诉我,如果我有事件的命名权限,引发事件的方法和处理事件的方法? public class Car { // is event named correctly? public event EventHandler OnSomethingHasHappened; private void MoveForward() { RaiseSomethingHasHappened(); } // is the named correctly private void RaiseSomethingHasHappened() { if(OnSomethingHasHappened != null) { OnSomethingHasHappened(this, new EventArgs()); } } } 和订户类: public class Subscriber() { public Subscriber() { Car car = new Car(); car.OnSomethingHasHappened […]

更改外键约束命名约定

我们有自己的命名对象的外部约定,我需要更改自动生成的外键约束的命名约定。 现在它看起来像: FK_dbo.City_dbo.CityType_City_CityTypeId但我希望它被称为City_FKC_CityType 。 我发现了一个类似的问题 ,说你可以手动更改约束的名称。 但是,这不适合我,因为我有很多表和外键约束。 我找到了一些关于“自定义代码优先约定”的信息,我想知道我是否可以使用此更改约束的名称,或者是否有任何方法来实现它? 另一个变体是下载EF的源代码,进行更改并使用它,但是在紧急情况下。 作为旁注,我还想更改主键的命名约定。

如何避免为类及其命名空间使用相同的名称,例如Technology.Technology?

我经常在命名空间和该命名空间中的类之间发生命名冲突,并且除了添加随机前缀之外,在首先使用这些名称似乎有意义时,我们想知道处理此问题的最佳实践。 拥有一个Models.Technology命名空间似乎是有意义的,它有许多技术类(即武器,农业,回收技术)和一些相关的接口。 我还决定在技术命名空间中使用一个技术抽象类,所有技术都来自该类。 但是,这迫使我使用这样的代码: public Technology.Technology research(Technology.Technology tech) {…} 同样地: public Building.Building build(int count) {…} 顺便说一下,我没有命名我的命名空间技术,因为我在其他地方使用该术语作为可用技术列表的包装器……

.NET集合命名约定

我的同事和我一直在讨论应该叫什么集合。 例如: 类产品 – 集合 – 类产品 要么 类产品 – 集合 – 类ProductCollection 我已经四处看看,看看我是否可以看到使用其中一个的任何指导方针或原因,但似乎没有任何东西出现。 例如,框架似乎使用两种变体。 我可以看到的论点是,具有products变量集合的类应该被称为Products,但它应该是ProductCollection类型。 哪个是正确的? 在同一个叶片中有一个标准,用于命名函数的返回变量。 例如retVal? 我们主要用C#编写代码,虽然我不确定这会影响我的问题。

如何为枚举提供用户友好的名称?

我有一个类似的枚举 Enum Complexity { NotSoComplex, LittleComplex, Complex, VeryComplex } 我想在下拉列表中使用它,但不希望在列表中看到这样的Camel名称(对用户来说看起来很奇怪)。 相反,我希望有正常的措辞,如不那么复杂的小复杂(等) 此外,我的应用程序是多语言,我希望能够显示这些字符串本地化,我使用帮助器,TranslationHelper(字符串strID),它给我一个字符串ID的本地化版本。 我有一个工作的解决方案,但不是很优雅:我为枚举创建一个帮助类,其中一个成员Complexity和ToString()被覆盖,如下所示(代码简化) public class ComplexityHelper { public ComplexityHelper(Complexity c, string desc) { m_complex = c; m_desc=desc; } public Complexity Complexity { get { … } set {…} } public override ToString() { return m_desc; } //Then a static field like this private static List […]