java高级规范之一
一、不允许使用汉语拼音命名
不规范示例:
public void zengjiaYongHu{}//拼音方法名称
规范示例:
public void addUser(){}
解析:应该使用国际化语音,拼音使代码难懂
二、Package名称必须全部小写,尽量使用单个单词
不规范示例:
com.Lxit.daoimpl 单词大写了,daolmpl多个单词
规范示例:
com.lxit.dao.impl
解析:这是大家都认同的习惯写法,也是个默认的规范
三、局部变量及输入参数不要与类变量同名(get/set方法与构造函数除外)
不规范示例:
public class UserDAOImpl{
private int count;
public void page(int count){}
}
规范示例:
public class UserDAOImpl{
private int count;
public void page(int pageCount){}
}
解析:类变量会引起逻辑错误,引起覆盖。
四、尽量不要在变量后面加魔法数字,英文单个字母和没有实际意义的英文数字单词来区分变量
不规范示例:
String One;命名一个英文字母的变量
User user1=new User();
User user2=new User();
规范示例:
User userAdd=new User();
User userAdd=new User();
解析:这样会降低代码的可读性,并且开发人员日后的维护会不容易
五、包,类,变量命名不要加下划线(常量除外)
不规范示例:
com.tag_test.dao.jdbc_impl 有下划线的包名
int user_age;带下划线的变量名
public class Class_{} 带下划线的类名
规范示例:
com.tag.test.dao.jdbc.impl
int userAge;
public class Classes{}
解析:一种习惯性的用法,默认的规范
六、常量命名要大写,单词之间要用下划线分开
不规范示例:
public static final String teamAdd="teamAdd";小写且没有下划线
规范示例:
public static final String TEAM_ADD="teamAdd";
解析:容易区分变量和常量
七、方法名第一个字母小写(构造方法除外)
不规范示例:
public viod Function(){}
规范示例:
public void function(){}
解析:习惯用法,默认的规范
八、两个单词以上的变量名要驼峰命名
不规范示例:
int userage; age单词'a'小写
规范示例:
int userAge;
解析:能够更清晰的看懂变量所代表的意思
九、每个变量要用看的懂的词语来描述,尽量不要省略
不规范示例:
private Student stu; 把stundent简写成stu
规范示例:
private Student student;
解析:使代码看起来清晰易懂
十、一个类的命名一般是名词(有些ing的动词,形容词除外),变量名也是一样。函数的命名必须是动宾短语(构造器除外)
不规范示例:
public class Manage{} 动词命名
规范示例:
public class UserManage{}
解析:能使别人一看类名就知道这个类大概是做什么的。
十一、数据库连接对象的生成不能跟Modle层混搅,必须将其放在一个单独的类里,
用单例模式来实现数据库的连接。
不规范示例:
public class UserDAOImpl{
private static Connection connection;
public static synchronized Connection getConnecion(){
if(connection==null){
try{}catch(SQLException e){}
catch(ClassNotFoundException e){
e.printStackTrace()
}
}
return connection;
}
}
规范示例:
public class DBConectionTools{
ptivate static Connection connection;
private DBConnectionTools(){}
public static synchronized Connection getConnection(){
if(connection==null){
try{
Class.forName(Constants.MYSQL_DRIVER);
connection=DriverManager.getConnection(Connection.MYSQL,Connection.MYSQL_USER_NAME,Constants.MYSQL_PASSWORD);
}catch(SQLException e){
e.printStackTrace();
}catch(ClassNotFoundException e){
e.printStackTrace();
}
}
return connection;
}
}
解析:数据库连接应当单独出去出来,以便其他类可以复用
十二、id一般不要用int类型,用long类型
不规范示例:
int id;int类型的人员id
规范示例:
Long id;
解析:随着id的增长,当增长的id超出int的范围的时候就会出现异常
十三、sql语句一定要用占位符,不能用拼写组成的语句
不规范示例:
public void addUser(User user){
String sql="insert into student(ID,name,sex,adddress)values("+user.getId()+","
+user.getName()+","+user.getSex()+","+user.getAddress()+")";
//?代表占位符
}
规范示例:
public void addUser(){
sql="insert into student(ID,name,sex,address)values(?,?,?,?)";
//?代表占位符,可用预处理来发送sql语句
}
解析:很容易出现错误,而且不清晰,不容易让人读懂。
十四、PreparedStatement最好不要声明为类字段
不规范示例:
public class UserDAOImpl{
private PreparedStatement preparedStatement;
}
规范示例:
public class UserDAOImpl{
public void addUser(){
PreparedStatement preparedStatement=new PreparedStatement(sql);
}
}
解析:虽然很多类都能使用到了PreparedStatement对象,但各个方法里用到的PreparedStatement对象都是不同的,所以不能作为类字段,抽取出来做类字段的话会出现数据混乱的问题
十五、做主键的列没有任何业务逻辑,没有任何实际意义,而且任何时候都不能修改。
不规范示例:主键用一个身份证,或者学号
规范示例:主键用id,唯一性的,不可改变的。
解析:虽然身份证和学号也是唯一性的,但是他们是有意义的列,而且在程序升级时可以更改的,而id主要就是用来做主键的。
十六、取记录的时候,拿数据库条件语句比较,不要自己用Java代码去比较。
不规范示例:
public void deleteById(){
String sql ="select id,name,age form user";
//........................
ResultSet reslut =ResultSet.executeQuery();
Where(result.next()){
if(result.getLong("id")==id){
//.................删除
}
}
}
规范示例:
public void deleteById(Long id){
String sql="delete from user where id = ?";
//删除操作
}
解析:一旦取出的数据过大,而且用Java代码的if判断的话,会影响运行速率,还可能导致内存不足等错误。
十七、代码提交之前必须写注释,不管什么原因。
不规范示例:无文本注释
规范示例:有文本注释,关键处有单行及多行注释
解析:使别人能够很清晰的知道你做了哪些修改
十八、提交之前先更新代码
不规范示例:没review代码,没更新
规范示例:review代码,更新
解析:防止出现冲突
十九、只要系统有红色错误,那么就不能提交,提交前要保证编译错误全部消除。
不规范示例:暂无
规范示例:暂无
解析:如果上传了错误的代码,会导致别人因为下载了错误代码而带来开发上的问题
二十、每个人的代码每天尽量上传,代码在本地的时间不要超过2天
不规范示例:暂无
规范示例:暂无
解析:保持与资源库的同步
java高级规范之一的更多相关文章
- Java高级规范之二
二十一.提交java代码前应该检查是否有没用的语句,如:System.out.println(); jsp页面上面是否有alert调试信息 不规范示例:暂无 规范实例:暂无 解析:因为如果保留了有可能 ...
- Java高级规范之四
四十一.控制层不能调用model层除了最顶级的接口外的任何内容.要通过new顶级接口才能调用. 不规范示例: public class UserServiceImpl{ private UserDAO ...
- Java高级规范之三
三十一.如果变量名要加注释,说明命名不是很准确. 不规范示例:暂无 规范实例:暂无 解析:暂无 三十二.任何类字段除非必要,否则都要私有化 不规范示例: public class Person{ St ...
- JAVA语言编程格式高级规范
作为一位开发人员,都要有严格的代码规范.为此我总结了一些代码规范案例. 目 录 1. 前言 2. 试用范围 3. JAVA命名规范-- 3.1 公共约定 3.2 Java文件.包 3.3 类.接口 ...
- JAVA语言规范-线程和锁章节之同步、等待和通知
JAVA语言规范:线程和锁 1 同步 java编程语言提供了线程间通信的多种机制.这些方法中最基本的是同步化,此方法是使用监视器实现的.JAVA中每个对象与一个监视器相关联,一个线程可以加锁和解锁监视 ...
- 黑马程序员——Java高级应用(一)
------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...
- JAVA代码规范笔记(上)
本文为<code conventions-150003>(JAVA代码规范)笔记. 文件组织 1.超过2000行代码的源文件将会比较难以阅读,应该避免. 2.每个Java源文件都包含单一的 ...
- Java注释规范整理
Version:0.9 StartHTML:-1 EndHTML:-1 StartFragment:00000099 EndFragment:00018736 在软件开发的过程中总是强调注释的规范,但 ...
- 成为java高级程序员需要掌握哪些
section 1 1.Core Java,就是Java基础.JDK的类库,很多童鞋都会说,JDK我懂,但是懂还不足够,知其然还要知其所以然,JDK的源代码写的非常好,要经常查看,对使用频繁的类,比如 ...
随机推荐
- Individual Project - Word frequency program
1.项目预计用时 -计划学习C#和百度一些用法的时间:5小时 -项目本身打算写两个类,一个是遍历搜索文件夹的,另外一个用来统计单词.计划用时:5小时 2.项目实际用时 学习C#以及正则表达式的用法:3 ...
- 转载css的background-position
这是一个有趣的话题 其实我并不确切的平时大家是怎么去应用或者玩转一个属性,一个值.我能肯定的是这些东西都有不少的可玩性. 我今天要聊的 background-position 应该已经被大家玩得色彩斑 ...
- html xml
XML被设计用来携带数据. XML不是用来替代HTML的.XML和HTML为不同的目的而设计: XML被设计用来描述数据,其焦点是数据的内容. HTML被设计用来显示数据,其焦点是数据的外观. HTM ...
- [转]查看Flash Log输出
1.安装Debug版本的FlashPlayer 2.mm.cfg配置文件 xp:C:\Documents and Settings\username\mm.cfg Vista/7: C:\users\ ...
- 黑马程序员——OC基础 三种特性之封装
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) 三种特性之一封装 (一)set方法和get方法 1) set方法 1&g ...
- 测试数学公式latex
\( J_\alpha(x) = \sum\limits_{m=0}^\infty \frac{(-1)^m}{m! + 1)}{\left({\frac{x}{2}}\right)}^{2 m + ...
- vps推荐之DigitalOcean
作为一个爱折腾的网站”程序猿“,我用过多家vps,由于一般支持paypal 月付, 所以基本上都会用两三个月,不行就换另一家. 1.Yard VPS 台湾人开的,有中文支持,貌似也支持支付宝付款,偶尔 ...
- #HTML:無序、有序與定義清單
#HTML:無序.有序與定義清單 Maplewing 于 星期六, 12/10/2013 - 09:48 提交 清單在網頁中是很常使用到的東西,故多少還是要了解一下.在HTML中有三種不太一樣的清單, ...
- dedecms qq咨询平均分配
qq后台页: qq_admin.php <style type="text/css"> <!-- * {margin:0; padding:0;} .wrap { ...
- DOM扩展之HTML5 插入标记
11.3.6 插入标记 当需要在文档中插入大量的HTML标记时,通过DOM操作就会是非常麻烦的,相对而言,使用插入标记的技术,直接插入HTML字符串不仅简单而且更快.以下插入标记相关的DOM操作已经纳 ...