关于c#:我应该如何命名我的类,函数,成员变量和静态变量?

How should I name my class, functions, member variables and static variables?

有些人可能认为这个问题是主观的。但是,我觉得这是要告诉程序员的最重要的事情之一。

这是检查空值的好函数名吗?

1
2
3
1. checkNull()
2. notNull()
3. isNull()

如果我写

1
checkIfNull()

我不知道有多少人和我有同样的感觉,我花了更多的时间来为我的职能想好名字,而不是写一个。

人们怎么看待好名字?命名可以跨语言一致(主要是C++和Java)

更新:正如我所说,到目前为止,大多数人更喜欢isNull()。如何确定isNull()是完美名称。

1
checkNotNull() // throw exception if Null

这是个好名字吗?是否每个人都依靠自己的直觉来决定一个名字?

问题是选择一个完美的名字!!!!


如果函数抛出了一个异常,如果它是空的,那么它应该被称为ThrowIfNull,以明确表示它将为您抛出。


和其他人一样,我更喜欢isull()(或者isull(),这取决于您的语言/编码约定)。

为什么?除此之外,这是一个被广泛接受的惯例,当您阅读代码时听起来很好:

1
2
3
if (isNull())
// or
if (foo.isInitialized())

等等。几乎是自然的英语…:-)与备选方案进行比较!像iwerner一样,我将避免使用负形式来创建标识符(变量、方法)名称。另一个常见的约定是用动词开始方法/函数名。现在,Sun在Java的早期没有这样的约定(因此,例如,长度()和siz()方法,但是它甚至不喜欢这些旧名称,而有利于动词规则。


IsNull可能是一个坏例子,因为:

1
2
Object foo = null;
if (foo.isNull()) { // Causes a NullPointerException in Java. }

否则,您将得到:

1
2
Object foo = null;
if (UtilityClass.isNull(foo) { }

这似乎比仅仅做更难,更不清楚:

1
2
Object foo = null;
if (foo == null) { }

答案取决于方法返回的内容。如果它返回一个指示对象是否为空的bool,我会将其命名为isull(thing thing),因为它是最不含糊的公式——方法的作用和返回的内容立即显而易见。如果方法是void,但如果对象为空则抛出,我将调用它guardagainstnull(),或者沿着这些行调用它。imo,checknull()有点模棱两可——通过查看方法,您不知道它是否应该返回bool或throw,或者bool确切表示什么。


isNull()是一个不错的选择,但它还应该返回bool。

这样,您就可以在if语句中检查它的值,而不会得到任何nullreference异常。


现在,强烈建议使用JavaBeans约定:

1
2
isNull() //if the return type is a primitive
getNull() //if the return type is an object (Like Boolean in java)

对于非布尔类型的访问成员,应该使用get。对于静态变量成员,使用camel大小写样式:"myvar"。对于类名,使用第一个字母大写的驼色大小写样式:"MyClass"。对于常量成员,使用带下划线的大写字母作为分隔符:"my_constant"。


我找到了这篇文章。想和你们分享!


如果您在代码中进行了大量的空检查,我认为有一对方法,即:

1
2
3
IsNull()

IsNotNull()

从长远来看,将导致最可读的代码。

我知道!isNull()是大括号语言中的一个标准习惯用法,但我认为它比isNotNull要清楚得多。

很容易忽略那个单曲"!"性格,特别是如果它被隐藏在一个更复杂的表达中。


我个人会用

1
   IsNull()

我更喜欢IsNull

要学习好的命名风格,请学习标准库(PHP除外)。您应该遵循每种语言中标准库使用的样式。

对于C,研究框架设计指南。


我将使用isNull();在.NET中有一个优先级,该优先级对于字符串类型具有静态isNullOrEmpty()方法。"是返回bool的方法的首选前缀。我不会有一个否定的方法"notnull",因为这太容易导致双重否定。相反,对正方法使用否定运算,例如!ISNULL()

但是,只检查空值的方法可能会使事情过于复杂;出了什么问题

x=空

我认为它比

IsNull(X)

大多数看到is null(x)的开发人员都会怀疑isnull方法中是否存在一些特殊的空检查;如果没有,则"x==null"可能更好。


如果您的公司没有在其编码标准中指定命名约定,我建议您现在添加它们。

我们公司的Java编码标准是以官方Java编码标准为基础的,我认为,它指定的名称像EDCOX1(1)。

从你的例子来看,notNull()是不好的,因为你最终可能会得到像if(!notNull())之类的语句。


它可能会因你使用的语言不同而有所不同-你在这个问题上标记了一对夫妇。重要的是要与您所编码的语言/库的标准保持一致。是的,命名约定非常重要![上面甚至有一个维基百科条目:http://en.wikipedia.org/wiki/naming_conventions_28programming%29]

对于.NET,我在命名约定中找到了这个"备忘单":

http://www.irtizedbynary.com/programming/standards.aspx

对于你在C中的例子,我建议:IsNull()