我正在尝试查看C#编码标准,以使我的代码更加美观和规范化,我有一个问题:根据C#编码标准,函数(非void方法)是否应该以“Get”开头?例如:“
GetSongOrder()
”,“GetNextLine()
”等?谢谢。GetSongOrder()
”,“GetNextLine()
”等?谢谢。有两种情况:
如果例程可以快速“获取”值,而不会在代码中引起副作用,则建议使用属性getter,并省略“get”名称:
public SongOrder SongOrder
{
get { return this.songOrder; } // ie: an enum
}
然而,如果需要进行处理,则适用于具有“Get...”名称的方法。 这表明调用此方法可能会产生副作用,例如额外的处理或更改某些状态:
public string GetNextLine()
{
string line = this.stream.ReadLine(); // This may cause a longer running operation, especially if it's using Disk IO/etc
// do other work?
return line;
}
函数名应简洁明了,易于理解。不多不少。
如果Get适合你的话,请使用Get。如果Retrieve更好,请使用它。
命名规范并没有真正的“标准”。
通常,函数的命名约定是动词-名词。 "Get"只是您可能看到的动词之一。 它也可以是“Activate”、“Close”、“Dump”或任何其他动词...这只是英语和一般编码的结果,方法或函数通常会对“某种对象”执行“某些操作”。
我没有看到关于这个的C#标准,但是我看到的大部分实际代码都使用“getter”属性,并省略函数名称中的“Get”单词。 例如:
Public SongOrderList SongOrder
{
get
{
return mySongOrderList;
}
}
在我通常看来,使用“Get”(和“Set”)作为函数名前缀,是在没有像.NET一样的属性的语言中看到的(如C、Java等语言)。
编辑:
...当然你也可以有设置器
Public SongOrderList SongOrder
{
get
{
//do some processing code here
return mySongOrderList;
}
set
{
//do some processing code here
mySongOrderList = value; //value is a C# keyword, in case you didn't know. it is the parameter to the setter
}
}
当然,如果你想要一个getter和setter,并且不需要任何额外的处理,只是纯粹的Java-bean式的get/set,你可以这样做:
Public SongOrderList SongOrder
{
get; set;
}
Public SongOrderList SongOrder
{
public get; private set;
}
不,没有规定函数必须以“Get”开头。
在创建有意义的函数名称时,它们通常采用这种形式,例如GetHashCode
函数。其他动词在开头也很常见,例如ToString
函数,只有动词,例如Encode
函数。
还有其他形式,您可以描述函数的结果,例如Substring
函数。