四十一、控制层不能调用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高级规范之四的更多相关文章

  1. Java高级规范之二

    二十一.提交java代码前应该检查是否有没用的语句,如:System.out.println(); jsp页面上面是否有alert调试信息 不规范示例:暂无 规范实例:暂无 解析:因为如果保留了有可能 ...

  2. java高级规范之一

    一.不允许使用汉语拼音命名 不规范示例: public void zengjiaYongHu{}//拼音方法名称 规范示例: public void addUser(){} 解析:应该使用国际化语音, ...

  3. Java高级规范之三

    三十一.如果变量名要加注释,说明命名不是很准确. 不规范示例:暂无 规范实例:暂无 解析:暂无 三十二.任何类字段除非必要,否则都要私有化 不规范示例: public class Person{ St ...

  4. JAVA语言编程格式高级规范

    作为一位开发人员,都要有严格的代码规范.为此我总结了一些代码规范案例. 目   录 1. 前言 2. 试用范围 3. JAVA命名规范-- 3.1 公共约定 3.2 Java文件.包 3.3 类.接口 ...

  5. JAVA语言规范-线程和锁章节之同步、等待和通知

    JAVA语言规范:线程和锁 1 同步 java编程语言提供了线程间通信的多种机制.这些方法中最基本的是同步化,此方法是使用监视器实现的.JAVA中每个对象与一个监视器相关联,一个线程可以加锁和解锁监视 ...

  6. 黑马程序员——Java高级应用(一)

    ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...

  7. JAVA代码规范笔记(上)

    本文为<code conventions-150003>(JAVA代码规范)笔记. 文件组织 1.超过2000行代码的源文件将会比较难以阅读,应该避免. 2.每个Java源文件都包含单一的 ...

  8. Java注释规范整理

    Version:0.9 StartHTML:-1 EndHTML:-1 StartFragment:00000099 EndFragment:00018736 在软件开发的过程中总是强调注释的规范,但 ...

  9. 成为java高级程序员需要掌握哪些

    section 1 1.Core Java,就是Java基础.JDK的类库,很多童鞋都会说,JDK我懂,但是懂还不足够,知其然还要知其所以然,JDK的源代码写的非常好,要经常查看,对使用频繁的类,比如 ...

随机推荐

  1. Android网络连接判断与处理

    博客分类: Android 获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:name="android ...

  2. 关于sysprocesses表各字段的作用

    sysprocesses 表中保存关于运行在 Microsoft® SQL Server™ 上的进程的信息.这些进程可以是客户端进程或系统进程.sysprocesses 只存储在 master 数据库 ...

  3. python学习05——字典

    笨办法学python第39节 这节主要讲解的是字典,首先字典和列表的两个区别是: 1. 列表中可以通过数字找到列表中的元素,是数字作为索引的:字典中可以通过任何东西找到想要的元素,即字典可以将一个物件 ...

  4. (转)在oracle中varchar和varchar2有什么区别?

    1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节: 2.VARCHAR2把空串等同于null处理,而varchar仍 ...

  5. 1、jvm的体系结构

    jvm包括两子系统两组件 a.两子系统:Class Loader子系统,Execution engine子系统 b.两组件:Runtime Date Area 和 Native Interface

  6. 利用Volley封装好的图片缓存处理加载图片

    Volley 工具箱中提供了一种通过 DiskBasedCache 类实现的标准缓存.这个类能够缓存文件到磁盘的指定目录.但是为了使用 ImageLoader,我们应该提供一个自定义的内存 LRC b ...

  7. PHP store session with couchbase

    如何用couchbase存储session 有两种常见方式:1.采用memcache模式连接couchbase 只需两句修改: ini_set('session.save_handler', 'mem ...

  8. Qt之C语言有符号数与无符号数运算

    以32位的stm32f4为例: 1.  uint32_t t_int_k = 239773, t_int_km1 = 4294859707; 则t_int_k - t_int_km1 > 0; ...

  9. css中的1px并不总等于设备的1px(高分辨率不等 低分辨等)

    在css中我们一般使用px作为单位,在桌面浏览器中css的1个像素往往都是对应着电脑屏幕的1个物理像素,这可能会造成我们的一个错觉,那就是css中的像素就是设备的物理像素.但实际情况却并非如此,css ...

  10. Linq中关键字的作用及用法

    Linq中关键字的作用及用法 1.All:确定序列中的所有元素是否都满足条件.如果源序列中的每个元素都通过指定谓词中的测试,或者序列为空,则为 true:否则为 false. Demo: 此示例使用 ...