Java高级规范之四
四十一、控制层不能调用model层除了最顶级的接口外的任何内容。要通过new顶级接口才能调用。
不规范示例:
public class UserServiceImpl{
private UserDAOImpl userDAOImpl;
private UserServiceImpl(){
userDAOImpl = new UserDAOImpl();
}
public void deleteById(Long id){
userDAOImpl.deleteById(id);
}
}
规范示例:
public class UserServiceImpl{
private UserDAO userDAO;
private UserServiceImpl(){
userDAO = DAOFactory.getUserDAO();
}
public void deleteById(Long id){
userDAO.deleteById(id);
}
}
解析:这样做不仅是为了程序的灵活着想,更是为了使代码的层次结构清晰明了。
四十二、返回类型尽量是父类接口或是抽象类,例如:要取得一个arrayList<User>对象,则返回类型要用List<User>。
不规范示例:
//返回一个只能是保存User对象元素的list
public ArrayList query(){
ArrayList arraylist=new ArrayList();
..................................
return arrayList;
}
规范示例:
public List query(){
List list=new ArrayList();
..................................
return List;
}
四十三、SQL程序里命名要注意,不能把关键词作为属性。
不规范示例:
create tableName{
id bigint primary key,
describe varchar(20)
}
规范示例:
create tableName{
id bigint not null primary key,
classDescribe varchar(20)
}
解析:SQL语句里的字段名为关键字时,执行时可能会出现问题,出错了很难找,所以在开始的时候就要注意。
四十四、使用try...catch时,一定要捕获且打印异常
不规范示例:
try{
//代码块
}catch(Exception e){
}
规范示例:
try{
//代码块
}catch(Exception e){
e.printStackTrace();
}
解析:如果程序出现了异常,而catch块又没有任何错误输出,那么你的程序将永远不会报错,就无法发现错误,但是你的程序总是有问题,但又很难发现错误在哪里
四十五、当能够用工厂实例化对象的时候不要用构造器生成对象,要用工厂方法去代替。
不规范示例:
UserDAO userDAO= new UserDAOImpl();
规范示例:
UserDAO userDAO = DAOFactory.getUserDAO();
解析:为了程序扩展性考虑,当构造器里的结构改变的时候,比如说增加一个参数,可能会因为系统过于庞大而忘记了修改,而用工厂模式可以一劳永逸。
四十六、属性不能成为一个类,也不能成为一个函数名。
不规范示例:
public class Name{
public void sex(){
//方法体
}
}
规范示例:
public class Person{
public void addPerson(){
//方法体
}
}
解析:对象的属性只能作为属性,不能单独做一个类
四十七、如果一个方法的返回值是用来做判断的,返回值最好不要用字符串,要用int等基本类型。
不规范示例:
//比如说修改后要提示修改成功
public String updateUser(User user){
...................................
if(true){
//成功
return "修改成功";
}else{
//失败
return "修改失败";
}
}
规范示例:
public String updateUser(User user){
...................................
if(true){
//成功
return 1;
}else{
//失败
return 0;
}
}
解析:因为字符串容易引发潜在的错误,比如失误的操作使得字符串多了个空格等等。
四十八、在eclipse中,一次启动的工程最好不要超过两个以上。
不可取的操作: 在tomcat中一次加载多个(两个以上)工程
正确的操作: 加载的工程最多不要超过两个,关闭不用的工程
解析:启动多了占用资源,出错了检查也不方便,也容易起冲突
四十九、在eclipse等IDE中的编码格式要统一,比如同一使用UTF-8或GBK,存储数据和读取数据统一为GBK或UTF-8。
不规范示例:暂无
规范示例:暂无
解析:避免因字符集的不同出现乱码现象。
五十、工程的保存路径不能为空格、中文和特殊字符。
不可取路径:E:\studytools\安装\my tools\eclipse
正确的路径:E:\studdytools\installed\mytools\eclipse
解析:如果出现此类状况,会影响一些工具的应用,影响程序的运行。
Java高级规范之四的更多相关文章
- Java高级规范之二
二十一.提交java代码前应该检查是否有没用的语句,如:System.out.println(); jsp页面上面是否有alert调试信息 不规范示例:暂无 规范实例:暂无 解析:因为如果保留了有可能 ...
- java高级规范之一
一.不允许使用汉语拼音命名 不规范示例: public void zengjiaYongHu{}//拼音方法名称 规范示例: public void addUser(){} 解析:应该使用国际化语音, ...
- 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的源代码写的非常好,要经常查看,对使用频繁的类,比如 ...
随机推荐
- redis集群报错
写入redis集群报错:(error) MOVED 6918 解决方法:redis-cli -c -p 7001 -h 10.0.0.104
- html5 audio的暂停与播放
在html5里,audio是新增的功能.它方便了用户. 大多数音频是通过插件(比如 Flash)来播放的.然而,并非所有浏览器都拥有同样的插件. HTML5 规定了一种通过 audio 元素来包含音频 ...
- 配置DelegatingFilterProxy使用Spring管理filter chain
项目环境:JDK7 + Maven3.04 0. 项目使用springmvc作为controller层 1. 引入spring-security <dependency> <grou ...
- Html标签第一课
<p>段落标签</p> <h1>字体标签,1到6,越来越小</h1>.....<h6></h6><h>标签自动换行 ...
- 我的PHP编程环境变迁:notepad -> notepad++ -> Sublime Text2 -> PhpStorm
10多年前最一开始写PHP程序的时候是用windows自带的notepad,现在想来真的很屌丝. 后来经人推荐换成了notepad++,感觉还是相当不错的(中间还用过一阵子editplus). 比较喜 ...
- 有关javascript的性能优化(合理的管理内存)
使用具备垃圾收集机制的语言编写程序,开发人员一般不必操心内存管理的问题.但是,Javascript在进行内存管理及收集时面临的问题是有点与众不同.其中最主要的一个问题是分配给Web浏览器的可用内存数量 ...
- IELTS - Word List 28
1, The lawsuit is very much o the lawyer's mind. 2, The canteen was absolutely packed. 3, Doctors di ...
- Python开发入门与实战22-简单消息回复
22. 简单消息回复 本章节我们来实现一个微信库存查询功能,使用我们前面的BIZ业务逻辑层示例如何利用微信入口来实现文本消息类的库存查询服务. 22.1. 在responseMsg函数里增加处理微信文 ...
- bigdecimal 保留小数位
public class test1_format { public static void main(String[] args) { BigDecimal decimal = new BigDec ...
- 一个很奇怪的问题,程序没有改动加密参数应该也没有变化.但是两次的加密结果却不一致.md5加密问题
从图上我们看出20160803的加密结果是AAEBA9C578EA522215EAE76AFCAF250.时间是9.4分 现在我们再看这个同样的加密地址与时间结果却是另一种 31672B16..... ...