如何让你的C#写的更规范
2013-06-14 16:42
232 查看
这两天看了关于一篇c#书写规范的文章,总结了以下几点给大家做参考吧
在总结前下来个简单的测试:
这是一个从1到100进行对符合条件的数字进行输出的例子
Example 1:
看了以上的你有没有更好的想法呢?
Example 2:
看起来这样已经不错了,但是可读性还是差了点,来看看下面的
Example 3:
学好这两点后才能追求更高的境界!
一个好的代码风格能让你的项目做的更大,生命力更持久!
下面我总结了几条关键的代码规范
一、命名规范
Pascal Casing:所有首字母大写;适用于类名、公开字段、方法名
Camel Casing:首字母小写,后面单词首字母全部大写;适用于私有字段、临时变量、参数
不要使用单词缩写或下划线
接口类前面请加"I"
类中的变量全部放在方法上面,静态变量的话放最上面
二、注释规范
注释中不应该出现关于一段代码是做什么事情的情况,如果必须这么做才能显得代码能读懂的话,考虑将该段代码提取出来另作函数,取个易懂的方法名。
举个例子:在打印前判断是否需要打印
类似的情况经常会在一个处理很多事情的方法中遇到,我们要做的就是讲整个方法改的不需要太多注释就能读懂
三、避免太多参数
尽量减少一个方法中出现太多参数的情况
如下
可以讲参数进行整合到类中,改为如下
如果大家还有更好的意见或想法尽可参与讨论。
参考文档:http://www.codeproject.com/Articles/539179/Some-practices-to-write-better-Csharp-NET-code?msg=4575774#xx4575774xx
在总结前下来个简单的测试:
这是一个从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
相关文章推荐
- 自己总结的C#编码规范--5.如何写好注释篇
- C# 如何规范的写 DEBUG 输出
- C#开发中如何对SqlServer命名规范的总结
- 在C#项目中不显示Web引用的情况下如何添加“Web引用”?
- C#如何直接调用非托管代码
- C#开发编码规范(二)
- 在c#中调用c++dll如何进行同步调试dll
- [笔记]如何将传统的回调函数转换为C#5.0支持的await格式
- C# 命名规范
- C#中如何取硬件标志
- 如何使用C#进行Visio二次开发
- C#如何给word文档添加水印
- 黑马程序员--C#语法基础,命名规范,变量作用域等
- .net是如何实现Page.IsPostBack属性的?看看C#中关于IsPostBack的解释
- 如何判断C#字符串是全角还是半角
- C#中如何重启系统并在开机后自动执行当前可执行程序
- C#中如何去掉字符串结束符"\0"
- 如何在C#的WinForm中制作饼状图和柱状图
- C#中如何取得并使用Windows系统图标
- C#中如何获取一个字符串的实际字符数