在互联网发展初期,计算机硬件性能不尽完美,所以程序员很大的一部分工作就是优化代码的执行速度,然后根据计算机各部分运行速度的快慢,总结出了很多规律,比如说堆排序,各种线程技术等,都是充分利用计算机内存的运行效率,尽量减少磁盘操作等.这也是考察一个程序员是否优秀的标准之一.只有这样才能在有限的机器资源上满足更多人的需求.
但随着计算机机器的发展和降价,再一味地忽视代码的阅读效率,只为提高代码的执行效率,就有点得不偿失了,毕竟代码不仅要让技术执行,也需要让人阅读.记得有个经典案例是:面试官问如果客户量大增,该如何优化才能保证项目顺利运行?回答者侃侃而谈,从数据库优化到添加多线程.最后面试官直接说:直接增加服务器不就可以了,增加服务器的成本相对于修改代码的成本更低的.
代码的特征是:一次编写,几次修改,多次阅读,时时运行
目前基本上所有的项目都是以团队的形式推进的,代码肯定需要多人协作完成一个项目.这样肯定避免不了相互沟通和阅读代码,
如何高效的阅读彼此的代码是一个项目能否顺利推进的重要标准.
好的阅读效率肯定是要以规范做基础的.下面是一些自己在多年做项目过程中总结的一些如何提高阅读效率的说明
1,不要提前定义变量,尽量在用的时候再定义,创建和使用放在一起
2,代码首屏满足原则:一个类或接口最好将别人最想了解的和经常用到的代码放到最上面,保证一进来不用翻动屏幕就能找到想要的信息.
3,实体类的参数必须注释,且尽量保证首屏满足原则
4,数据库表字段避免使用mysql关键字 避免造成不必要的麻烦
5,实体类 最好不要命名为一个字母.如 user u = new User();单个字母容易被认为是一个基本类型变量
6,类起名称的时候不要和现用的类名重复,要不会经常应用错误或者让你选择用哪个类,比如自己写string处理类就不要叫StringUtils
7,数据库表最好添加逻辑删除字段,避免错误操作造成数据无法恢复
8,数据库表的名字,相关实体类的名字,mapper.xml文件名,dao层接口名,service层接口和实现类名字的前缀应该完全一样
eg:数据库表名是user,mapper.xml应该为 UserMapper.xml,实体类应该是User.java,DAO层应该是UserDao.java
service层应该是UserService.java UserServiceImpl.java
9,影响项目代码后续返工和优化的绝大部分原因是之前的数据库表没有设计好,所以请用规定时间的2倍来创建数据库的表
10,代码要尽可能的英语化,日志和注释尽可能功能的用中文说明,便于以后阅读和排查问题
11,数据库表里的字段顺序,mysql表中的字段顺序,model类中的字段顺序最好保持一致
12,sql语句一般先写插入,然后查询,然后更新,最后删除
13,单元测试总是划算的
14,无用的代码和废弃功能的代码一定要及时删除,如果为了以后使用可以自己手动备份下然后删除,避免代码的坏味道
15,下次需要上线的内容,一定要都记下来,便于上线前自测,要不需求多了以后你就忘了都上线了哪些内容
16,多个相似的名称,不要只让中间的字母不一样,这样很容易造成用错,比如 userNickName和userRealName
17,数据库字段如果是可列出的值一定要把所有值都列出来,避免以后无法明白含义.如:状态 1 上架,0 下架
18,每次上线前review从上次上线到这次上线的所有代码,并写出来需要测试的重点,便于测试和事后发邮件说明上线内容
19,数据库表字段排序:主键>外键>关键字段>常备字段
20,调用方法的参数,最好和被调用者的参数一样,如被调用者是getUser(string userName),调用者传参数是最好是getUser(userName)