本文中的代码规范,是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. 菜鸟nginx源代码剖析数据结构篇(六) 哈希表 ngx_hash_t(上)

    菜鸟nginx源代码剖析数据结构篇(六) 哈希表 ngx_hash_t(上) Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog. ...

  2. SqlService Date 格式化

    <choose> <when test="dateFlag=='day'"> ), FRI.INVOICE_DATE, ) AS CREATED_ON, & ...

  3. Caused by: java.lang.UnsatisfiedLinkError: Couldn&#39;t load BaiduMapVOS_v2_1_3: findLibrary returned nu

    在使用百度地图进行开发的时候.假设遇到了 Caused by: java.lang.UnsatisfiedLinkError: Couldn't load BaiduMapVOS_v2_1_3: fi ...

  4. 海思3518e mpp2/sample/venc makefile简析

    http://blog.csdn.net/u011003120/article/details/51324567

  5. multiple web application host under the same website on IIS (authentication mode)

    第一种方式,修改forms的name how to set the forms authentication cookie path assume you have already solved th ...

  6. Codeforces--630K--Indivisibility(容斥)

     K - Indivisibility Crawling in process... Crawling failed Time Limit:500MS     Memory Limit:65536 ...

  7. poj--2031--Building a Space Station(prime)

    Building a Space Station Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 6635   Accepte ...

  8. BZOJ1067 [SCOI2007]降雨量 RMQ???

    求救!!!神犇帮我瞅瞅呗...未完...调了2个半小时线段树,没调出来,大家帮帮我啊!!! 小詹用st表写. 我的思路就是把中间空着的年份设为无限,然后一点点特判就行了...然而没出来... [SCO ...

  9. [SDOI2007]游戏

    https://zybuluo.com/ysner/note/1184420 题面 题意简单,但不太好概括. 戳我 解析 不成熟想法 据题意可知,字符串字符的顺序无影响. 并且判断两个字符串能否接龙可 ...

  10. Java-java-com-util-common-service:CrudService.java

    ylbtech-Java-java-com-util-common-service:CrudService.java 1.返回顶部 1. package com.shineyoo.manager.ut ...