• 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天
      不规范示例:暂无
      规范示例:暂无
      解析:保持与资源库的同步

  • 相关阅读:
    自我介绍
    工作流
    spring框架
    关于建立内部会议讨论规范的想法
    论文第3章:移动绘图平台的架构设计
    迭代器、推导式、函数式编程学习笔记
    Python装饰器学习(九步入门)
    Inkpad绘图原理浅析
    从零开始创建一个插件
    Entity Framework的启动速度优化
  • 原文地址:https://www.cnblogs.com/amirsterry/p/3720802.html
Copyright © 2020-2023  润新知