这两天看了关于一篇c#书写规范的文章,总结了以下几点给大家做参考吧
可以讲参数进行整合到类中,改为如下
在总结前下来个简单的测试:
这是一个从1到100进行对符合条件的数字进行输出的例子
Example 1:
public void Test()
{
for (int i = 1; i < 101; i++)
{
if (i % 3 == 0 && i % 5 == 0)
{
Console.WriteLine("FizzBuzz");
}
else if (i % 3 == 0)
{
Console.WriteLine("Fizz");
}
else if (i % 5 == 0)
{
Console.WriteLine("Buzz");
}
else
{
Console.WriteLine(i);
}
}
}
看了以上的你有没有更好的想法呢?
Example 2:
public void Check()
{
for (int i = 1; i <= 100; i++)
{
string output = "";
if (i % 3 == 0) { output = "Fizz"; }
if (i % 5 == 0) { output = output + "Buzz"; }
if (output == "") { output = i.ToString(); }
Console.WriteLine(output);
}
}
是不是简洁了很多,不要急于在每次符合条件后就输出内容,而是在条件中对数据进行处理,在最后再输出会使得代码更清楚,不是吗?
看起来这样已经不错了,但是可读性还是差了点,来看看下面的
Example 3:
public void DoFizzBuzz()
{
for (int number = 1; number <= 100; number++)
{
var output = GetFizzBuzzOutput(number);
Console.WriteLine(output);
}
}
private static string GetFizzBuzzOutput(int number)
{
string output = string.Empty;
if (number%3 == 0)
{
output = "Fizz";//这里还是不要急着return,作者也是放到最后一起return
}
if (number%5 == 0)
{
output += "Buzz";
}
if(string.IsNullOrEmpty(output))
{
output = number.ToString();
}
return output;
}
看了这个例子是不是有所启发,是的,我们的目标就是让代码显得更简洁,更易读!
学好这两点后才能追求更高的境界!
一个好的代码风格能让你的项目做的更大,生命力更持久!
下面我总结了几条关键的代码规范
一、命名规范
Pascal Casing:所有首字母大写;适用于类名、公开字段、方法名
Camel Casing:首字母小写,后面单词首字母全部大写;适用于私有字段、临时变量、参数
不要使用单词缩写或下划线
接口类前面请加"I"
类中的变量全部放在方法上面,静态变量的话放最上面
二、注释规范
注释中不应该出现关于一段代码是做什么事情的情况,如果必须这么做才能显得代码能读懂的话,考虑将该段代码提取出来另作函数,取个易懂的方法名。
举个例子:在打印前判断是否需要打印
//ensure that we are not exporting
//deleted products
if(product.IsDeleted && !product.IsExported )
{
ExportProducts = false;
}
// This is a for loop that prints the 1 million times
for (int i = 0; i < 1000000; i++)
{
Console.WriteLine(i);
}
我们把前面这段代码提取到
CancelExportForDeletedProducts()
方法里如何,是不是比注释显得更易读,代码也更简洁了。
类似的情况经常会在一个处理很多事情的方法中遇到,我们要做的就是讲整个方法改的不需要太多注释就能读懂
三、避免太多参数
尽量减少一个方法中出现太多参数的情况
如下
public void Checkout(string shippingName, string shippingCity,
string shippingSate, string shippingZip, string billingName,
string billingCity, string billingSate, string billingZip)
{
}
可以讲参数进行整合到类中,改为如下
//DO
public void Checkout(ShippingAddress shippingAddress,BillingAddress billingAddress)
{
}
这里个人觉得还有一种更好的方式就是传递数组,方法中同类型参数过多或不确定时,可将参数一并打包放到ArrayList中传递,这样从扩展性方面也会有更好的表现,特别是在写接口公开用于调用时,显得更灵活
如果大家还有更好的意见或想法尽可参与讨论。