提高代码的可读性

提高代码的可读性,不仅方便自己以后阅读,而且可以让后来的人更好阅读你的代码,最近一直在积累这方面的知识,以后严格遵循这种写法,做到“有法可依”,有更好的写法待用到之时再进行更新补充,在这里做一下笔记。

1.注释和文档

这里有一个技巧,可以方法的上面连续敲击三下"/",就可以自动补充,写对应的注释,无论是js还是C#,在写代码之前,都要先进行写注释,采用动宾结构,如:“获取用户信息”,“添加用户信息”。陈述方法的做了什么事,言简意赅,当然良好的命名规范易读性更好。

    /// <summary>
    /// 在这里写注释
    /// </summary>
    /// <param name="param"></param>
    /// <returns></returns>
    public ActionResult Index(string param)
    {
        return View();
    }

2.代码分组

为了让代码的可读性更好,可以对代码进行分组,尽量让同一逻辑放在同一组,即用换行隔开。

        //计算还款金额
        var repayMoney = (from h in db.JF_FIN_REPAY
                          where h.CLIENTID == bpid
                              && h.STATE == (int)FinancingEnum.FinRepayState.还款成功
                              && h.ORDERTYPE == ((int)FinOrderType.还款单).ToString()
                              && h.FINANCETYPE == ((int)FinOrderType.提货款).ToString()
                          select h.REPAYTOTALMONEY).Sum();

        if (Request["state"] = "已保存")
        {
            ///...
        }
        if (true)
        {
            ///...
        }

3.保持一致的命名规范

命名规范,我强制使用驼峰式和帕斯卡命名规范,当然使用其他的也是可以的,没有问题的,主要习惯便可以,但是必须保持一致,js,C#的代码的命名规范都要使用驼峰式或帕斯卡命名,C#和js命名有所不同,对应使用即可,如:
js:

//获取用户信息
function getUserInfo() {
    ///...
}

C#:

    /// <summary>
    /// 获取用户信息
    /// </summary>
    public void GetUserInfo()
    {
        ///...
    }

4.DRY原则(摘录于阮一峰博客)

DRY是 Don't repeat yourself 的缩写,意思是"不要重复自己"。

软件工程名著《The Pragmatic Programmer》首先提出了这个原则。它的涵义是,系统的每一个功能都应该有唯一的实现。也就是说,如果多次遇到同样的问题,就应该抽象出一个共同的解决方法,不要重复开发同样的功能。

这个原则有时也称为"一次且仅一次"原则(Once and Only Once)。

如果多次遇到同一问题,就应该将对应的方法进行抽象,进行封装,便于以后重复使用,对于一些常用的公共类或者方法可以进行积累,保存于GitHub的项目中等,保存起来便于以后拿取,最近新建了一个项目,对曾经做过的一些公共的、可以抽象封装的方法等进行积累,避免重复开发,以后这就是经验。

5.避免深嵌套

过多的嵌套会极大降低代码的可读性:

//获取用户信息
function getUserInfo() {
    ///...
    if (true) {
        if (true) {
            if (true) {
            ///..
            }
        }
    }
}

尽量减少代码嵌套,不多于两层:

//获取用户信息
function getUserInfo() {
    ///...
    if (true) {
        ///..
    }
    if (true) {
        ///..
    }
    if (true) {
        ///...
    }
}

6.限制行长度

行长度过长也是会极大降低代码的可读性:

        //计算还款金额
        var repayMoney = (from h in db.JF_FIN_REPAY
                          where h.CLIENTID == bpid && h.STATE == (int)FinancingEnum.FinRepayState.还款成功 && h.ORDERTYPE == ((int)FinOrderType.还款单).ToString() && h.FINANCETYPE == ((int)FinOrderType.提货款).ToString()
                          select h.REPAYTOTALMONEY).Sum();

可以针对一致的特殊“符号”进行换行,如,“&&”,“||”,“,”等:

        //计算还款金额
        var repayMoney = (from h in db.JF_FIN_REPAY
                          where h.CLIENTID == bpid
                              && h.STATE == (int)FinancingEnum.FinRepayState.还款成功
                              && h.ORDERTYPE == ((int)FinOrderType.还款单).ToString()
                              && h.FINANCETYPE == ((int)FinOrderType.提货款).ToString()
                          select h.REPAYTOTALMONEY).Sum();

7.参数值的命名

对于一些参数的值,有时我们需要对一些数据进行区别,就会使用不同的参数值,进行传递,这时候,使用的参数值,如果是一些无意义的值,就会增加代码的阅读的难度:

        if (Request["state"] = "1")
        {
            ///...
        }

可以使用一些有意义的名称保存,中文或者英文,切忌使用一些无意义的数字、字母,使用硬编码使代码易读性更好:

        if (Request["state"] = "已保存")
        {
            ///...
        }

8.避免写新代码

在做一个新功能的时候,可以思考,别人是否已经实现这个功能,有没有工具,函数等已经实现你想要的功能,可以从网上查找或问同事是否已经实现对应的功能,避免盲目重复造轮子,代码越少,bug越少。

The best code is the code that isn’t written ”

9.局部变量的命名

这是一个让我纠结很久的话题,很多人都有不同的命名习惯,也不能说谁的好,谁的不好,把一些固定的用法,按照自己的习惯进行规范:

        //Array后缀的数组变量 
        Object[] arr = ...;

        //使用类型的缩写 
        DataTable dt = ...;

        //变量的声明,类型尽量使用接口,这样对于修改实现容易 
        IList lst = new ArrayList();

        //flag是一个常用的变量 
        bool flag = false;

        //item也是一个常用的命名 
        foreach (Object item in lst)
        {
            if (flag)
            {
                Console.Write(",");
            }

            flag = true;  //flag之前有一个空行,代码中应有恰当的分行 
        }

        //使用符合短语对变量命名 
        String name = obj.GetType().GetName();  

参考:
https://www.cnblogs.com/jobs/archive/2004/07/22/26341.html#26355
http://news.51cto.com/art/201708/549819.htm
http://news.51cto.com/art/201710/554067.htm

posted @ 2018-10-04 19:17 RocksLee 阅读(...) 评论(...) 编辑 收藏