优雅编程之项目开发中的22点编码小建议(三十七)
开心一笑
【建议大家尝试早睡觉,多运动,不吃宵夜,不抽烟,不喝酒,早睡早起,养成一个良好的生活习惯,久而久之,你就……一个朋友都没有了,好可怜的样子啊!】
视频教程
大家好,我录制的视频《Java之优雅编程之道》已经在CSDN学院发布了,有兴趣的同学可以购买观看,相信大家一定会收获到很多知识的。谢谢大家的支持……
视频地址:http://edu.csdn.net/lecturer/994
提出问题
项目开发过程中应该注意的几点编码规范???
解决问题
本来不想写这篇文章的。之前在《优雅编程系列》的文章中,都有提过了。但是主管说要收集一些编码规范的建议,就针对公司情况.下面分享几点,get起来,以后不要再犯了……
1.接口里面的方法默认都是public
不用再加public修饰
2.字符串变量和字符串常量equals的时候将字符串常量写在前
可以避免空指针。
如:
if("123".equals(str)){
}
3.不要创建一些不使用的对象,不要导入一些不使用的类
类中import 没用的类要及时删除。
4.for循环建议写法
for (int i = 0, int length = list.size(); i < length; i++)
5.循环内不要不断创建对象引用
如:
for (int i = 1; i <= count; i++){Object obj = new Object();
}
改为:
Object obj = null;
for(int i = 0; i <= count; i++){obj = new Object();
}
6.尽量避免随意使用静态变量
如:
public class A{ private static B b = new B();
}
此时静态变量b的生命周期与A类相同,如果A类不被卸载,
那么引用B指向的B对象会常驻内存,直到程序终止
7.方法的返回值不要为空
如:return null;
1.返回List:
private List<PcsTaskDTO> sortDecisionAndBackTask(List<PcsTaskDTO> pcsTaskDTOList) throws Exception{if(CollectionUtils.isEmpty(pcsTaskDTOList)) return null;
}
解决方法:
private List<PcsTaskDTO> sortDecisionAndBackTask(List<PcsTaskDTO> pcsTaskDTOList) throws Exception{if(CollectionUtils.isEmpty(pcsTaskDTOList)) return Collections.EMPTY_LIST;
}
2.返回Set:
Collections.EMPTY_SET
3.返回Map:
Collections.EMPTY_MAP
8.不要在for循环中查询数据库
小心第三方测试公司弄死你!
9.代码层级不要太深,最多3层
如:
/*** 只做一件事*/
public void onlyDoOneThing(){String ay = "";Boolean flag = true;/** 第一层级 不错 **/if(flag){/** 第二层级 还能接受 **/if(flag){/** 第三层级 没法接受了 **/if(flag){}}}
}
10.每个方法的代码不要太长
如果一个方法的代码超过一屏幕,建议拆分为多个
如:
if(){
..业务代码1
}else{
..业务代码2
}
for(int i=0;i<100;i++){..业务代码3
}
对于if,和for中的代码,如果是处理业务代码,一般可以抽出单独的一个代码,改成
if(){method1();
}else{method2();
}for(int i=0;i<100;i++){method3();
} method1(){//业务代码1
}method2(){//业务代码2
}method3(){//业务代码3
}
11.函数参数:应该少于2个
如果函数超过2元:应该将其中的某些参数封装成类;
例:
/*** 只做一件事* @param arg1 参数1*/
public void onlyDoOneThing(String arg1){System.out.println("一个参数,不错!!!");
}/*** 只做一件事* @param arg1 参数1* @param arg2 参数2*/
public void onlyDoOneThing(String arg1,String arg2){System.out.println("两个参数,能接受和理解!!!");
}/*** 只做一件事* @param arg1 参数1* @param arg2 参数2* @param arg3 参数3* @param arg4 参数4 */
public void onlyDoOneThing(String arg1,String arg2,String arg3,String arg4){System.out.println("3个或3个以上的参数,没法接受!!!");
}
12.删掉被注释掉的代码
除非那段代码,删掉,人会死掉。
13.避免括号后面的注释
错误注释比不注释跟可怕,最好做到代码既注释。
如:下面提供一个例子,方便理解:
package com.hwy.test;/*** 代码整洁之道* Created by Ay on 2016/7/11.*/
public class CodeCleanTest {public static void main(String[] args) {/** 这段代码是不需要注释的,看方法名称就可以清楚知道意图了 **/engagements();boolean isMerryMe = canMerryMe();if(isMerryMe){//避免括号后面的注释,例如这getMarried();/** 删掉被注释掉的代码; **///String ring = "";}/** TODO注释,提示尚未完成的工作 **///TODO 结婚生子/** 悄悄话内容,这里涉及到一些业务上的事,所以需要注释下 **/String whisperContent = getwhisperContent();}/*** 获得悄悄话内容* @return*/public static String getwhisperContent(){return "XXX OOO";}public static void engagements(){System.out.println("约会");}public static boolean canMerryMe(){boolean isLoveMe = true;if(isLoveMe)return true;return false;}public static void getMarried(){System.out.println("结婚");}}
14.不要使用单个字母来做变量名
时间一长,自己都不清楚自己当初的命名是什么意思
15.不要使用有误导性的字母作为变量名
比如小写字母l和大写字母O,因为他们和数字的1和0很像(老话题了)
16.类名和对象名一般都是名词和名词短语,而不应当使用动词
17.方法名一般是动词和动词短语;get,set,is前缀
如:
public void getUsers();
public void getData();
public void isCompleted();
18.对于方法名
应该保持一致,比如对于绑定数据的方法,不要有的地方用BindData,而另一些地方使用DataBind ;
19.避免误导:userList的类型最好就是List
例:
//错误
String userList = "";
//正确
List<String> userLit = new ArrayList<>();
20.使用可搜索的名称:避免使用单字母变量和数字常量
错误:
int s = 0;
for(int i=0;i<100;i++){s = s + i;
}
正确:
//起码sum在搜索时比较方便
int sum = 0;
for(int i=0;i<100;i++){sum = sum + i;
}
21.单行代码长度
以不拖动滚动条为准则,代码行长度80个字符可以接受,最多120个字符,再多,你想逆天啊!
22.去掉System.out.println
代码部署到生产环境前,去掉全部System.out.println
读书感悟
来自 弗兰西斯·培根《培根论人生》
- 如果问在人生中最重要的才能是什么?那么回答则是:第一,无所畏惧;第二,无所畏惧;第三,还是无所畏惧。
- 人生如同道路。最近的捷径通常是最坏的路。
- 在世之时与人为恶,到头来却是于己不幸。
- 没有真挚朋友的人,是真正孤独的人。
- 奇迹多是在厄运中出现的。
- 凡过于把幸运之事归功于自己的聪明和智慧的人多半结局是不幸的。
- 有些书可供一赏,有些书可以吞下,有不多的几部书则应当咀嚼消化;有的书只要读读其中一部分就够了,有些书可以全读,但是不必细心地读,还有不多的几部书则应当全读、勤读,而且用心地读。
经典故事
【有个小弟在脚踏车店当学徒。有人送来一部坏了的脚踏车,小弟除了将车修好,还把车擦拭得漂亮如新,其他学徒笑他多此一举。车主将脚踏车领回去的第二天,小弟被挖到他的公司上班。启发:原来出人头地很简单,勤快点就行】
参考文章
【1】写出优雅性能的JAVA程序必须遵守的35个原则
【2】Effective java 第二版本
【3】clean code(代码整洁之道)
【4】Thinking in Java(Java编程思想)
其他
如果有带给你一丝丝小快乐,就让快乐继续传递下去,欢迎点赞、顶、欢迎留下宝贵的意见、多谢支持!
优雅编程之项目开发中的22点编码小建议(三十七)相关推荐
- SQL开发中容易忽视的一些小地方( 三)
目的:这篇文章我想说说我在工作中关于in和union all 的用法. 索引定义 : 微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引.簇集索引)和非聚 ...
- Vue项目开发中优雅的切换服务端ip
Vue项目开发中优雅的切换服务端ip 在进行Vue开发的时候,需要配置项目对应服务端的ip地址,但如果需要在多个服务端间进行切换,通常的做法是:手动修改vue.config.js配置文件中的服务端ip ...
- ssh项目同时使用mysql跟sqlserver数据库_MSSQL_如何把sqlserver数据迁移到mysql数据库及需要注意事项,在项目开发中,有时由于项目 - phpStudy...
如何把sqlserver数据迁移到mysql数据库及需要注意事项 在项目开发中,有时由于项目开始时候使用的数据库是SQL Server,后来把存储的数据库调整为MySQL,所以需要把SQL Serve ...
- 反思:项目开发中的语言沟通与文档沟通
反思:项目开发中的语言沟通与文档沟通 问题引出:刚进入公司试用期,有导师安排开发实现一些功能模块或者小的应用.毕竟需要在整个产品的框架下添加代码,看了下整个产品近1G的源代码,相当浩瀚.虽然是不需要我 ...
- 浅谈软件开发工具CASE在软件项目开发中发挥的作用认识
浅谈软件开发工具CASE在软件项目开发中发挥的作用认识 内容摘要:阐述了CASE工具作为 一种开发环境在软件项目开发中所起到的开发及管理作用.CASE工具实际上是把原先由手工完成的开发过程转变为以自动 ...
- 在项目开发中应该遵循的准则
根据我公司实际情况,大致列出在项目开发中应遵循的步骤原则.在各程序员遵循原则的情况下,方能开发出健壮有效的程序,且能提高自己的编程素质. 1.在项目开发初期应该有项目的详细原型.鉴于程序员文档能力有限 ...
- 用 cooking 搭建一个简单又优雅的 Vue 项目开发环境 (入门篇)
本文适合 Vue 的初学者,以及对 webpack 不熟悉的同学阅读.前提是你要会用基本的命令行. Node 和 NPM,以及掌握 ES2015 的基础知识.本文都是在 macOS 环境下运行,要求使 ...
- React项目开发中的数据管理
原文链接:https://blog.csdn.net/hl582567508/article/details/76982756 redux中文文档:http://cn.redux.js.org/ Re ...
- 项目开发中常用JS表单取值方法
项目开发中常用JS表单取值方法 一.常用表单基本取值方法(form1为表单名称,TextBox1为控件ID,以文本框为例,html控件与web服务器控件是一样的) 1.form1.Te ...
- aspnet是前端还是后端_项目开发中无法回避的问题:前端和后端如何合作和并行工作?...
项目开发中无法回避的问题:前端和后端如何合作和并行工作? 前端,后端要想非常愉快的合作开发和集成,那最开始第1步就是要定义一套共用的数据模型接口.这一步是所有工作可以顺利进行的前提. 数据模型接口之后 ...
最新文章
- Windows Phone 7 MVVM模式通讯方式之实现Command
- angr学习笔记(5)(栈符号化)
- VMWare NAT模式和桥接模式的区别
- VTK:Utilities之CardinalSpline
- 软考 计算机网络,软考-计算机网络总复习
- JAVA实现简单的FTP服务器
- 第二代支付系统专题之报文篇(二)大额支付报文完整版(含二代新增功能业务说明)...
- 经典的股票/期货量化交易策略,拿来即用的Python策略源码
- 计算机设计大赛南京邮电大学,喜讯:我校信息学子在中国大学生计算机设计大赛中再创佳绩...
- 基于机器学习的电信套餐个性化推荐模型的设计与实现
- blackman窗 matlab,【matlab】矩形窗/三角窗/hanning窗/hamming窗/blackman窗的频率响应图...
- 1寸证件照排版、1寸照片、1寸证件照尺寸,不改变图片大小改分辨率,不改变分辨率改变(保证分辨率)...
- list去重和list倒叙
- 路由实验7777777
- 家里安装了两条宽带,有什么方法把两家运营商的宽带聚合起来用?
- 朋友圈点赞的测试用例
- 小米浏览器禁用java_2019-03-11 小米散招面试-Java后台实习
- Java剑 VS .NET刀 -- 晨袭血战(论模式)(一)【推荐】
- 基于Java的截图工具
- awd的批量脚本 pwn_北极星杯 awd复现