编码规范小感受

针对编码规范,我觉得我做的还是比较好的,从开始学习编程就有这个编码规范的意识。因为一段好的优美的代码,就能展现一个人的代码素养,同时也能看出这个人在编写代码的过程中是否是逻辑清楚的。码出来的代码,不仅是自己看得懂就可以了,更是为了别人也能看得懂,就像说话一样,别人要听得懂。这样在以后版本迭代时,别人就能一眼看懂写的是什么,则提高了自己也方便了别人。

在实际开发过程中,我就深刻的感受到,编码的规范是有多么的重要。最近的在开发某系统,这项目之前是其他团队开发的,我熟悉这个项目的代码都熟悉了蛮久,因为有些代码很让人难以理解。导致查询效率超级慢,经过自己检查,发现以前代码写的如下:

@Override
public Integer selectAllCount(IQu q, String nd) {
    // TODO Auto-generated method stub
    List<xxx> list = xxxMapper.selectAllCount(q, nd);
    return list.size();
}

获取总记录条数,竟然查出全表数据,然后通过list.size()获取总记录条数,真是让我大开眼界,果真在实际项目中遇到了这种情况,我也不知道编写这个代码的人是怎么想得嘞,哈哈哈。应该直接通过select count(*) from db查出总记录条数。

在项目中还经常遇到if语句不打括号的情况:

@Override
public Integer selectByXxxCount(IQu q) {
    List<xxx> list= xxxRecordCounterMapper.selectByXxxCount(q);
    // 代码不规范:
    if(list==null||list.size()==0) return 0;
    RecordTotal recordTotal = list.get(0);
    if (recordTotal.getCounter() == null) {
        return 0;
    }
    return recordTotal.getCounter();
}

不打括号,很容易踩坑,下次如果有需求去修改这里的代码,如果直接在if语句后面在加一句,没有大括号就会出大问题。应修改为:

@Override
public Integer selectByXxxCount(IQu q) {
    List<RecordTotal> list= xxxRecordCounterMapper.selectByXxxCount(q);
    // 正确写法:
    if(list==null||list.size()==0){
        return 0;
    }
    RecordTotal recordTotal = list.get(0);
    if (recordTotal.getCounter() == null) {
        return 0;
    }
    return recordTotal.getCounter();
}

我之前经常会出现的问题,就是经常写魔法值,魔法数值使代码的可读性大大下降。而且,如果同样的数值多次出现时,到底这些数值是不是带有同样的含义呢,谁也说不清楚。另一方面,如果本来应该使用相同数值的地方,一旦用错了,也很难发现。因此,需要时刻注意,极力避免使用魔法数值。我现在已经有意识避免去制造魔法值了。解决办法就是创建常量,常量名表明在这个值的代表意义,见名知意。并且统一管理这些值,还便于维护。如:

// 直接看代码,这个16究竟有何含义呢?
int[] arr = new int[16];

/*--------------------------------------华丽的分割线--------------------------------------*/

// 定义一个常量,并将这个值的意义定位变量名
static final int ARRAY_MAX_SIZE = 16;
// 此时含义是很清楚的
int[] arr = new int [ARRAY_MAX_SIZE];

P3C是值得去学习的,建议在开发工具上装上ALIBABA规范插件和SonarLink插件,这些工具都可以帮助查找代码的不规范,在编写代码的过程中,就能知道写的代码是否规范,根据提示去修改代码,让代码更加规范。

posted @ 2020-11-28 19:11  张还行  阅读(201)  评论(0编辑  收藏  举报