1. 风格
    1. 工程规范
      1. 包结构
        1. com.sinosig.项目名
          1. base
          2. util
          3. common
          4. sms
          5. user
          6. controller/web
          7. dao
          8. model
          9. service
          10. impl
          11. common
      2. 分层
      3. 系统结构
      4. 结合命名规范
    2. 命名规范
      1. 正确英文拼写,禁止中英文混合
      2. 类名UpperCamelCase、名词
        1. 接口实现类 XXServiceImpl
        2. 接口:IXXService
        3. 数据操作服务类,IxxxDBService,继承if-base中的IBaseDBService
        4. 持久层:IxxxMapper
      3. 方法名lowerCamelCase、动宾
        1. DB操作
          1. 插入数据库方法命名为saveXXX();
          2. 删除数据库方法命名为removeXXX();
          3. 更新数据库方法命名为editXXX();
          4. 查询数据库方法命名为queryXXX()。
        2. 子主题 2
      4. 常量全大写,用_连接
    3. 格式
    4. 注释
      1. 完备的javadoc注释
        1. 引入code template
        2. 范围
          1. 类:业务含义;变更记录注释
          2. 方法:入参、出参、业务逻辑描述;方法变更后重新生成补充
          3. 域:业务含义、格式、默认值等
      2. 代码内注释
        1. 业务含义
        2. 业务原因
        3. 复杂的业务逻辑,需要清晰的说明
        4. 修改,变更标识
    5. 参照IDE格式化
  2. 编程
    1. 日志规范
      1. log配置、分级别记录
        1. 生产、测试、开发的日志级别是不一样的。
        2. 避免重复打印日志,浪费磁盘空间,务必在 log4j.xml 中设置 additivity=false。
      2. 代码日志记录
        1. 形式
        2. 内容
        3. 注意事项
          1. 日志长度
          2. 开发时养成看log日志的习惯,权衡日志完整性,是否能定位问题
          3. 多线程情况下,逐条日志是否能定位出某一请求
      3. Unearned Revenue:
        1. 100,000
    2. 可见性规范
      1. 定义类、方法时,建议尽量将其可见性缩减到最低。
      2. 模型 域,尤其减少set方法使用,使用构造函数
    3. junit 测试
      1. 覆盖范围
      2. 使用IDE new junit test case
      3. spring 测试,继承BaseSpring
      4. springmvc测试,继承BaseMockMvc。模拟请求
    4. controller
      1. 类@RequestMapping("XXX") xxx单个名词
      2. 方法@RequestMapping("xxx") xxx中不用包含类RequestMapping含义
      3. REST 风格
        1. 单条查询@PathVariable
        2. 列表查询 list
      4. jsp 放在WEB-INF下,所有跳转在controller中做,url命名toXXX,例如toLogin
  3. 数据库
  4. 安全
  5. 异常处理
  6. 其他
    1. 分页:pagehelper