zoukankan      html  css  js  c++  java
  • 编程规范(一)(整理学习阿里)

    一、命名规范

    强制】不能以下划线(_)或者美元($)开始结尾 。反例:_name 、name_ 、$name、 name$

    强制】严禁使用中文拼音与英文混合命名,更不允许直接使用中文的方式。说明:正确的英文拼写和语法可以让阅读者更易理解,避免歧义。

    强制】类名使用UpperCamelaCase风格,必须遵守从驼峰式。以下例外(领域模型)DO、 BO、DTO、VO。正例MarcoPolo UserDO、 XmlService、TcpUdpDeal 等

    强制】方法名、参数名、成员变量名、局部变量名统一使用lowerCamelCase风格,必须遵守从驼峰形式。正例:localValue 、getHttpMessage() 、inputUserId

    强制】常量命名全部大写,单词间用下划线隔开,力求语义表达完整性,不要嫌弃太长。正例:MAX_STOCK_COUNT

    强制】抽象类命名使用Abstract或者Base开头。异常类命令使用Exception结尾。测试类使用Test结尾。

    强制】中括号是数组类型的一部分,数组定义:String[] args ;反例:String args[]。

    强制】pojo类中的布尔类型的变量,都不要加 is ,否则部分框架会引起序列化错误。反例:定义基本数据类型boolean isSuccess; 属性,它的的方法也是isSuccess(),RPC框架在做反向解析的时候,“以为”对应的属性名称是success。导致属性获取不到,进而抛出异常。

    强制】包名统一使用小写,点分隔符之间有且仅有一个自然语义英语单词。包名统一使用单数形式,但类名如果有复数含义,类名可使用复数形式。正例:应用工具类包名为 com.alibaba.open.util、类名为 MessageUtils此规则参考
    spring 的框架结构

    强制】杜绝完全不规范的缩写,避免望文不知义。反例:AbstractClass“缩写”命名成AbsCess; condition "缩写"命名成comdi,此类随意缩写降低了代码的可阅性。

    【推荐】如果使用到设计模式,建议在类名中体现出具体模式。正例:public class OrderFactory。

    【推荐】接口类中方法和属性不要加任何的修饰符(public 也不要加),保持代码的简洁性,加上有效的javadoc注释。尽量不要在接口里定义变量,如果一定要定义变量,肯定需要与此接口相关,并且是此接口的应用基础变量。

    说明:jdk8 接口中允许实现default方法,对所有实现类都有价值的默认实现。

     接口和实现类两套规矩:

    强制】对于Service和DAO类,基于SOA理念,暴露出来的服务一定是接口,内部实现类用Impl的后缀与接口区别。正例:CacheServiceImpl实现CacheService接口。

    【推荐】 如果是形容能力的接口名称,取对应的形容词做接口名(通常是-able的形式)。正例:AbstractTranslator 实现 Translatable 。

    【参考】枚举类名建议带上Enum后缀,枚举成员名称需要全部大写,单词间使用下划线隔开。说明:枚举其实就是特殊的常量类,且构造方法被默认强制的是私有的。正例:枚举名字: DealStatusEnum成员名称: SUCCESS / UNKOWN_REASON

    【参考】各层命名规约:

    A) Service/DAO 层方法命名规约
    1获取单个对象的方法用 get 做前缀。
    2获取多个对象的方法用 list 做前缀。
    3获取统计值的方法用 count 做前缀。
    4插入的方法用 save推荐insert 做前缀。
    5删除的方法用 remove推荐delete 做前缀。
    6修改的方法用 update 做前缀。
    B) 领域模型命名规约
    1数据对象: xxxDOxxx 即为数据表名。
    2数据传输对象: xxxDTOxxx 为业务领域相关的名称。
    3展示对象: xxxVOxxx 一般为网页名称。
    4POJO DO/DTO/BO/VO 的统称,禁止命名成 xxxPOJO

  • 相关阅读:
    DNNClassifier 深度神经网络 分类器
    浏览器对MP4视频 帧宽度 高度的兼容性
    UnicodeEncodeError:'latin-1' codec can't encode character
    文件夹下 文件计数
    the largest value you actually can transmit between the client and server is determined by the amount of available memory and the size of the communications buffers.
    the “identity” of an object
    广告特征 用户特征
    如果一个维度全覆盖,则有效维度应该对该维度全覆盖
    a high-level neural networks AP
    使用 LDA 挖掘的用户喜好主题
  • 原文地址:https://www.cnblogs.com/lxn0216/p/8027780.html
Copyright © 2011-2022 走看看