欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

提高代码的可读性

程序员文章站 2022-05-18 12:26:21
提高代码的可读性,不仅方便自己以后阅读,而且可以让后来的人更好阅读你的代码,最近一直在积累这方面的知识,以后严格遵循这种写法,做到“有法可依”,有更好的写法待用到之时再进行更新补充,在这里做一下笔记。 1.注释和文档 这里有一个技巧,可以方法的上面连续敲击三下"/",就可以自动补充,写对应的注释,无 ......

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

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