本文中的代码规范,是Java标准代码规范中的一小部分,在我看来,是最重要的一部分。
   理想目标:不需要写注释,不需要和别人介绍,别人就知道你的项目大致是做什么的,每个类大概实现了什么功能。
一.目的
     一致性、快速阅读和理解
    后期维护、提高工作效率
    团队协作
二.代码命名一般原则

在JAVA代码中,所有的代码命名的总原则是:

    1. 用标准的尽可能无歧义的全英文单词命名的方式,准确地描述变量、属性、类等。
      如:使用firstName, grandTotal等命名,就比x1,y1,fn等更容易让人理解其含义,尽管它们的长度要大一些。
      
    2. 采用一些更加准确的术语来命名。例如,如果我们的用户称他们的clients为customers,那么我们就应该采用customer来命名,而不是采用client来命名。这是一些细微的地方,但也希望能注意。
    3. 采用大小写混合的方式来命名,以便命名有很好的可读性。在JAVA代码中,将采用如下原则:类或接口命名中每个单词的首字母均大写,而单词的剩余部分均小写。其它像变量、成员方法、属性等除第一个单词全部小写以外,其它单词的首字母均大写,而单词的剩余部分均小写。
     比如,productDao.
    4. 尽量少用单词的缩写形式,但如果一定要用,则必须要选择大家通用的缩写方式,并且要在本JAVA源代码中坚持用它,而不要一会用这种缩写方式,一会用那种缩写方式。比如,如果要用“number”的缩写方式,则可用“no”或“num”两种缩写方式,而不要用“nu”这种大家不常用的缩写方式,并且要保持不变。
    5. 尽量避免太长的命名,一般以少于20个字符为宜。
        一般都不会超过。
    6. 尽量避免使用这样的命名:两个或多个命名仅仅是其中的有些字符大小写不一样,或者仅仅是其中有些单词是单复数之区别。例如:persistentObject 与 persistentObjects;  anSqlDatabase 与 anSQLDatabase等。
    7. 尽量避免使用下划线。
      在JAVA中,一般比较少的采用下划线的命名方式。
   8.函数用动词,类名、属性名等用名词。
      public class Product{}
       比如,public void add();
三、代码注释使用的一般原则和类型

在JAVA代码中,我们经常要使用代码注释的方式来帮助理解代码的含义。

代码注释的一般原则主要有以下几个方面:

1.代码中的注释应该以让人一目了然为目标。

我们之所以要增加代码注释,其目的就是为了让编写代码的人、同一项目组的成员或以后的开发人员能很容易的理解其代码的意图。

2.避免使用标语式的、实际毫无用处的代码注释。

3.尽量采用简洁、易懂的注释代码,而不要长篇大论。

4.注释哪些部分:类的目的(即类所完成的功能)、设置接口的目的以及应如何被使用、

成员方法注释(对于设置与获取成员方法,在成员变量已有说明的情况下,可以不加注释;普通成员方法要求说明完成什么功能,参数含义是什么?返回什么?)

普通成员方法内部注释(控制结构、代码做了些什么以及为什么这样做,处理顺序等)

实参和形参的含义以及其他任何约束或前提条件、字段或属性描述。

而对于局部变量,如无特别意义的情况下不加注释。

四、约定由于配置
     只需要看名字,就知道代码,大致是做什么的,不需要任何人任何的解释说明。
    1.项目名称:front,backend,mobile
    2.包名称和结构
      控制层:com.companyName.front.controller
      业务逻辑/服务层: com.companyName.front.service
      数据访问层/持久层: com.companyName.front.dao
      模型:com.companyName.front.model, domain,bean
      工具类:*.util
      拦截器:*.interceptor
   3.类的名称 
      模型:Product(标准的无歧义的英文单词)
      控制器:*Controller,ProductController
      服务:*Service,ProductService
      持久层:*Dao,ProductDao (ProductDAO,ProductMapper)
   4.配置文件
      Mybatis配置文件:
            ProductDao.xml (ProductMapper.xml)
            mybatis-config.xml
      Spring配置文件:
          spring-mvc-servlet.xml
          spring-dataSource.xml
    属性文件
         log4j.properties
         redis.properties
         mail.properties
         
              
          
常见问题
        1.函数名称不能准确地表达函数的作用。
        
          saveSkirt,saveTrouser
2. 名称用单数,而不是复数。
     
   如果要用复数,所有的都用复数。
3.名字有歧义。
   做的功能是,“用户意见反馈”,实际命名用的是“投诉”。
   
  
   
4.命名不统一。
   
 5. 名字不恰当。
  5.1 service层的代码,强调的是“对外的接口”。
   而insert更侧重于数据库mysql的插入。
   service层用add和save,比insert更恰当。
      
函数代码,表达的是增加1条“收藏” ,因此也可以用有“收藏”含义的动词,比如collect。
5.2withdraw,经常用的含义是“银行提现、资金提现”,没有“退货”的意思。
  

  
  5.3函数想表达的含义是,“构造一个查询对象”,buildCriteria更准确。
    

    一般的set方法,肯定会有 参数,并且没有返回值。
   比如:
   public void setTitle(String title){
        this.title = title;
   }

 6. 方法名不简洁。
    在WithdrawService中的save方法,默认就应该是存储Withdraw对象。
    同理,ProductService中的save方法,默认就是保存商品。
    不需要带上多余的词汇。
  
7.作用域过大
   根本不会被外部方法调用,却使用了public。
  
  8.代码重复,难以维护
   如果一段代码,出现了第2次,那么出现第3次的可能性高达99%...
   方式一:提取工具方法到工具类
    
   方式二:抽象流程、抽象接口
   方式三:拦截器
   比如:登录拦截、权限检查
 值得探讨的几个问题
1.代码行数
  
   1个函数写了100多行。
    Controller层的代码,一般都比较简单,调用Service层的接口,包装下数据,就到页面展示了。
    如果代码过大,应该把“逻辑上一起的,完成某个功能的”代码,提取成私有的方法。
    类似:
    
最后的建议:单一职责
    1个类、1个函数、1个变量,只完成1件事。
    如果不能一句话,几个单词,描述1个函数,1个变量,通常来说,是没有想清楚要做的事情。
  
  

Java代码规范和一些常见问题的更多相关文章

  1. 转!!Java代码规范、格式化和checkstyle检查配置文档

    为便于规范各位开发人员代码.提高代码质量,研发中心需要启动代码评审机制.为了加快代码评审的速度,减少不必要的时间,可以加入一些代码评审的静态检查工具,另外需要为研发中心配置统一的编码模板和代码格式化模 ...

  2. 【转】Java代码规范

    [转]Java代码规范 http://blog.csdn.net/huaishu/article/details/26725539

  3. Java代码规范

    Java代码规范 本Java代码规范以SUN的标准Java代码规范为基础,为适应我们公司的实际需要,可能会做一些修改.本文档中没有说明的地方,请参看SUN Java标准代码规范.如果两边有冲突,以SU ...

  4. Java代码规范、格式化和checkstyle检查配置文档

    http://www.blogjava.net/amigoxie/archive/2014/05/31/414287.html 文件下载: http://files.cnblogs.com/files ...

  5. 阿里官方Java代码规范标准《阿里巴巴Java开发手册 终极版 v1.3.0》

    终极版 v1.3.0 2017年开春之际,阿里诚意献上重磅大礼:<阿里巴巴Java开发手册>,首次公开阿里官方Java代码规范标准.这套Java统一规范标准将有助于提高行业编码规范化水平, ...

  6. MyEclipse中阿里JAVA代码规范插件(P3C)的安装及使用

    JAVA代码规范插件(P3C)是阿里巴巴2017年10月14日在杭州云栖大会上首发的,使之前的阿里巴巴JAVA开发手册正式以插件形式公开走向业界.插件的相关信息及安装包都可以在GitHub(https ...

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

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

  8. IDEA中阿里JAVA代码规范插件(P3C)的安装及使用

    JAVA代码规范插件(P3C)是阿里巴巴2017年10月14日在杭州云栖大会上首发的,使之前的阿里巴巴JAVA开发手册正式以插件形式公开走向业界.插件的相关信息及安装包都可以在GitHub(https ...

  9. 阿里官方Java代码规范标准

    阿里官方Java代码规范标准<阿里巴巴Java开发手册 终极版 v1.3.0>下载 https://www.cnblogs.com/han-1034683568/p/7680354.htm ...

随机推荐

  1. linux(centos)下安装git并上传代码些许步骤(亲自验证过的步骤)

     曾经听说了好多次github,但直到近期才第一次学习使用github来托管自己在linux下的代码! 说实话.我自己在使用的时候从网上查了好多教程.但总认为难以掌握(步骤过于繁琐),自己操作的时候还 ...

  2. 最简单的C# Windows服务程序

    通过这个示例了解如何通过C#如何创建一个Windows服务程序. 工具/原料   Vistual Studio 2015 c# 方法/步骤     打开vs2015 文件->新建项目->V ...

  3. C++ 单例模式(读书笔记)

    #include <iostream> class Singleton {    static Singleton s;    int i;    Singleton(int x):i(x ...

  4. 92. extjs specialkey监听回车按键

    转自:http://blog.sina.com.cn/s/blog_647a022e0101401n.html 1 监听表单字段事件: Ext使得对用户某个动作的监听特别简单,诸如单击某个元素或者按下 ...

  5. 3.3 文件I/O

    错误的解决方法请参考:http://liangruijun.blog.51cto.com/3061169/673776 3.3.2 访问手机中的存储文件夹 3.3.3 读取assets中的文件 pac ...

  6. Greenplum使用教程

    Greenplum简介 GreenPlum是一个关系型数据库集群.,它实际上是由多个独立的数据库服务组合成的逻辑数据库.GreenPlum是基于PostgreSQL(开源数据库)的分布式数据库,它采用 ...

  7. C#中动态读取配置

    有些时候,文件修改需要及时的响应,这个时候就需要实时读取文件,预先想的是写一个计时器,每隔多久运行一次,但是不能实时响应,所以采用监听文件的方式实现读取数据 C#监听文件变化 /// <summ ...

  8. SpringMVC参数绑定(二)

    在springMVC中,提交请求的数据是通过方法形参来接收的,从客户端请求的key/value数据,经过参数绑定,将key/value数据绑定到controller形参上,然后再controller就 ...

  9. .net MVC成长记录(二)

    今天上班的任务完成了,接下来写一下博客,巩固一下,再学习一些新知识. 闲话不多说,我们言归正传.昨天讲到了如何mvc框架在微软下,已经变成了一个非常灵活非常‘干净’的开发框架了, 同时也讲述了如何创建 ...

  10. 域名转让(bcd.cn,tjcpda.com,jscpda.com,fjcpda.com)

    因本人工作有所调整,现对所拥有的域名全部转让,有需要者请与我联系,谢谢. bcd.cn tjcpda.com jscpda.com fjcpda.com 联系方式: QQ:1181608198 Ema ...