当前位置: 移动技术网 > IT编程>开发语言>.net > 提高代码的可读性

提高代码的可读性

2018年10月07日  | 移动技术网IT编程  | 我要评论

信宜市玉都风情网,红太阳幼儿园,外卖

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

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网