三十一、如果变量名要加注释,说明命名不是很准确。

不规范示例:暂无

规范实例:暂无

解析:暂无

三十二、任何类字段除非必要,否则都要私有化

不规范示例:

public class Person{

  String name;

  String sex;

  int age;

}

规范示例:

public class ClassName{

  private String name;

  private String sex;

  private int age;

}

解析:没有为程序的安全考虑,可以被其他的类访问

三十三、尽量减少一个类属性的作用域,在离使用它的最近的地方定义。

不规范示例:

  int index = 1;//类似这种情况,变量声明离使用的地方有些远。

  String sql = "insert into Student(ID,name,password,sex,address)Values(?,?,?,?,?)"

  PreparedStatement preparedStatement= connection.prepareStatement(sql);

  preparedStatement.setString(index++,user.getID());

  preparedStatement.setString(index++,user.getName());

  preparedStatement.setString(index++,user.getPassword());

  preparedStatement.setString(index++,user.getSex());

  preparedStatement.setString(index++,user.getAddress());

  preparedStatement.executeUpdate(); preparedStatement.close();

规范示例:

  String sql=  "insert into Student(ID,name,password,sex,address)Values(?,?,?,?,?)"

  PreparedStatement preparedStatement= connection.prepareStatement(sql);

  int index = 1;

  connection.prepareStatement(sql);

  preparedStatement.setString(index++,user.getID());

  preparedStatement.setString(index++,user.getName());

  preparedStatement.setString(index++,user.getPassword());

  preparedStatement.setString(index++,user.getSex());

  preparedStatement.setString(index++,user.getAddress());

  preparedStatement.executeUpdate(); preparedStatement.close();

解析:当别人维护时容易引起混淆,容易引发错误。

三十四、单例模式的使用必须要考虑同步。

不规范示例:

  public static  Connection conn=null;

  //没有使用同步

  public static Connection getConnection()throws ClassNotFoundException,SQLException{

    if(){

      if(conn==null){

      Class.forName("com.p6spy.engine.spy.P6SpyDriver");

      conn=DriverManager.getConnection("jdbc:mysql://locallhost:3306/test", "root","root");

      }

    return conn;

  }

规范示例:

//最熟悉地得到一个Connection连接

  public static  Connection conn=null;

  public static synchronized Connection getConnection()throws ClassNotFoundException,SQLException{

    if(){ if(conn==null){

    Class.forName("com.p6spy.engine.spy.P6SpyDriver");

    conn=DriverManager.getConnection("jdbc:mysql://locallhost:3306/test", "root","root");

    }

    return conn;

  }

解析:当有多个用户并发使用的时候会造成数据的混乱,导致线程不安全

三十五、方法里面参数最好不要超过三个。

不规范示例:

  public void update(int id,String name,String code,String sex){

    ........................

  }

规范示例:

  public void update(int id,String,name,String sex){

    ........................

  }

  //如果参数超过三个,必须把数据封装成一个pojo

  //如把上面的update方法中的参数封装起来

  public class User(){

    private int id;

    private String code;

    private String name;

    public String getName(){return name;}

    public void setName(String name){this.name=name;}

    public void String getCode(){return code;}

    public void setCode(String code){this.code=code;}

    public void setId(int id){this.id=id;}

    public void getId{return id;

  }

    ......................

  public void update(User user){

    ..................

  }

解析:参数多容易出现错误,尤其是调用的时候,如果参数的顺序传错误,将是一个非常大的麻烦,而且没有拓展性

三十六、值类或值对象必须重写toString方法。

不规范示例:

  public calss Code{

  private int id;

  private String code;

  private String name;

  private String sex;

  public String getSex(){return sex;}

  public void setSex(String sex){this.sex=sex;}

  public String getName(){return name;}

  public void setName(String name){this.name=name;}

  public void String getCode(){return code;}

  public void setCode(String code){this.code=code;}

  public void getId{return id;}

  public void setId(int id){this.id=id;}

  }

规范示例:

  public calss Person{

  private int id;

  private String code;

  private String name;

  private String sex;

  public String getSex(){return sex;}

  public void setSex(String sex){this.sex=sex;}

  public String getName(){return name;}

  public void setName(String name){this.name=name;}

  public void String getCode(){return code;}

  public void setCode(String code){this.code=code;}

  public void getId{return id;}

  public void setId(int id){this.id=id;}

  public String toString(){

    return new StringBuffer().append(id+",").append(name+",").append(sex).toString();

  }

  }

解析:toString的作用是以字符串的形式返回它的实例信息,因为不同的类的信息是不同的,所以要重写,不能全部都继承Object的toString方法。

三十七、重写equals方法的时候,必须重写hashCode方法。

不规范示例:

  public class People{

  //必要的属性

  //必要的get和set方法

  //toString方法

  没有hashCode方法

  没有equals方法

  }

规范示例:

  public class People{

  //必要的属性

  //必要的get和set方法

  //toString方法

  public int hashCode(){

  final int prime = 37;

  int result =1;

  result = prime * result +id;

  result = prime * result +((name==null)?0:name.hashCode());

  result = prime * result +((sex==null)?0:sex.hashCode());

  return result;

  }

  public boolean equals(Object obj){

  if(this==obj) return true;

  if(obj==null) return false;

  if(getClass()!=obj.getClass()) return false;

  People other = (People)obj;

  if(id!=other.id) return false;

  if(name==null){

  if(other.name!=null) return false;

  } else if(!name.equals(other.name)) return false;

  if(sex==null){

  if(other.sex!=null) return false;

  }else if(!sex.equals(other.sex)) return false;

  return true;

  }

  }

解析:重写equals和hashcode方法是为了像Set一样不能存储重复的元素,并实现Serializable是为了使这个类可以序列化

三十八、单元测试的时候必须是对象比较,如果一个字段有100个字,有时候数据库会自动删除一些,此时我们就不知道程序哪儿出bug了。

不规范示例:暂无

规范示例:暂无

解析:实用的开放经验

三十九、单元测试类的类名后面要加Test。

不规范示例:

  //这是一个UserDAO的单元测试类

  public class UserDAO{}

规范示例:

  public class UserDAOTest{}

解析:这样写是让别人知道这个类是用做测试的,清晰易懂。

四十、操作提示颜色,成功用蓝色字体,错误用红色字体。

不规范示例:暂无

规范示例:暂无

解析:实用的开放经验

Java高级规范之三的更多相关文章

  1. Java高级规范之二

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

  2. java高级规范之一

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

  3. Java高级规范之四

    四十一.控制层不能调用model层除了最顶级的接口外的任何内容.要通过new顶级接口才能调用. 不规范示例: public class UserServiceImpl{ private UserDAO ...

  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虚拟机》-----第8章 虚拟机字节码执行引擎——Java高级开发必须懂的

    概述 执行引擎是Java虚拟机最核心的组成部分之一.“虚拟机”是一个相对于“物理机”的概念 ,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器.硬件.指令集和操作系统层面上的,而 ...

  9. Java注释规范整理

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

随机推荐

  1. 做App还是微信公众号,你该如何抉择?

    我不够聪明,因为我经常出于好奇被自己提出的问题所困扰,于是乎就有些强迫症似的拼命去寻求答案——我只是想说服自己,让自己从困扰的谜团中清醒.坚定方向,进而能从容不迫的走下去... 最近在考虑一个问题:做 ...

  2. Game02 最新版本2.0.0

    Game02发布转站于此,欢迎大家下载.... 简介: Game02是由ImGenius开发的一款即时在线小游戏.玩法简单,易于上手,主要靠技术,不会出现不要脸的充值等内容. 操控方法:W和A左右移动 ...

  3. 绑定多个ddl

    添加材料,需要绑定材料类型.设备名称.省份和所属终端客户等信息,前台页面如下: 前台.aspx <asp:Content ID="Content2" ContentPlace ...

  4. C# 发送HttpWebRequest获得网络图片的大小、尺寸

    可以通过HttpWebRequest的方式发送一个网络图片的请求,再通过HttpWebResponse接收返回的数据,分析数据流得到图片的大小以及尺寸,代码如下: /// <summary> ...

  5. 用java实现简易PC版2048

    import java.awt.Color; import java.awt.EventQueue; import java.awt.BorderLayout; import java.awt.Flo ...

  6. 在Spring tools suite中使用git 共享项目

    我们都在eclipse 和 myeclipse中使用过cvs 和 svn 版本控制工具进行团队开发,今天我学习了另外一种版本控制工具git,下面我演示如何在Spring tools suite中使用g ...

  7. sass安装记录

    之前曾经安装过一次sass,不过可惜没使用,现在换了电脑重新安装,又上网找了些资料,终于安装成功,现在就当做个记录方便下次安装. 首先 到官网下载个最新版的ruby :http://rubyinsta ...

  8. Spring(3)

    一.Spring容器 Spring 提供了两种类型的IOC容器(后面还会讲到AOP容器): (1)BeanFactory:IOC容器的基本实现,是Spring框架的基础设施,面向Spring的本身 ( ...

  9. i7 4790 z97-ar ssd 固态硬盘 装机的一些经历

    今天电脑终于装好了,我于七夕情人节前后的几天配了一台台式机用开发,期间遇到了一些问题与大家分享一下,希望对一些朋友有帮助. 1 买HIMD线,各个零件全部组装好后,我意识到一个问题没买HIMD线,我的 ...

  10. z-index 可以使用负值,CSS相对定位、绝对定位利器

    很多技巧都是在工作中测试出来的,我搞DIV+CSS前端开发,现在是安卓收藏家,日常也有很多技巧,刚刚突然发现的这个技巧,真的很实用:Z-index值可以使用负值. z-index是个很强大的属性,是个 ...