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

这两天看了关于一篇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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值