您的位置:首页 > 编程语言 > C#

如何让你的C#写的更规范

2013-06-14 16:42 232 查看
这两天看了关于一篇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中传递,这样从扩展性方面也会有更好的表现,特别是在写接口公开用于调用时,显得更灵活

如果大家还有更好的意见或想法尽可参与讨论。

参考文档:http://www.codeproject.com/Articles/539179/Some-practices-to-write-better-Csharp-NET-code?msg=4575774#xx4575774xx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编写规范