### 阿里巴巴编码指南知识点详解 #### 一、编程规约 ##### (一)命名规约 1. **【强制】** 所有编程相关的命名都不能以下划线`_`或美元符号`$`开始,也不能以此两种字符结束。这种规定有助于保持代码的一致性和可读性。例如,`_name`, `__name`, `$Object`, `name_`, `name$`, `Object$`这样的命名都是不允许的。 2. **【强制】** 所有的编程相关的命名严禁使用拼音与英文混合的方式,也不允许直接使用中文。正确的英文拼写和语法可以使阅读者更容易理解代码的意图,减少误解。例如,`DaZhePromotion`(打折)、`getPingfenByName()`(评分)、`int 变量 = 3;`这些命名都不被推荐。正确的做法是使用国际通用的英文词汇如`ali`, `alibaba`, `taobao`, `cainiao`, `aliyun`, `youku`, `hangzhou`等。 3. **【强制】** 类名使用`UpperCamelCase`风格,即首字母大写,中间每个单词首字母也大写的形式,但领域模型相关的命名如`DO`(Data Object)、`DTO`(Data Transfer Object)、`VO`(View Object)、`DAO`(Data Access Object)等可以例外。例如正确的是`MarcoPolo`, `UserDO`, `XmlService`, `TcpUdpDeal`, `TaPromotion`;错误的是`macroPolo`, `UserDo`, `XMLService`, `TCPUDPDeal`, `TAPromotion`。 4. **【强制】** 方法名、参数名、成员变量、局部变量统一使用`lowerCamelCase`风格,即首字母小写,后续每个单词首字母大写的形式。例如:`localValue`, `getHttpMessage()`, `inputUserId`。 5. **【强制】** 常量命名全部使用大写字母,单词间用下划线`_`隔开,以确保语义清晰完整。例如:`MAX_STOCK_COUNT`。 6. **【强制】** 抽象类命名使用`Abstract`或`Base`开头;异常类命名以`Exception`结尾;测试类命名以其要测试的类的名称开始,以`Test`结尾。这样做的目的是使类的用途更加明确。 7. **【强制】** 数组类型定义时中括号`[]`应紧跟在类型后面。例如:`String[] args;`。错误的示例是`String args[]`。 8. **【强制】** POJO(Plain Old Java Object,普通老式Java对象)类中的布尔类型变量不要加前缀`is`,因为这可能会导致某些框架在序列化时出现问题。例如,如果一个字段被命名为`boolean isSuccess;`,那么它的getter方法也将是`isSuccess()`,某些RPC框架可能会将其解释为属性名为`success`而非`isSuccess`,从而引发异常。 9. **【强制】** 包名统一使用小写字母,点分隔符之间只允许出现一个自然语义的英语单词。包名统一使用单数形式,但类名若有复数含义则可以使用复数形式。例如,应用工具类包名为`com.alibaba.mpp.util`,类名为`MessageUtils`。 10. **【强制】** 杜绝使用完全不符合规范的缩写,以避免让人难以理解。例如,不要将`AbstractClass`缩写为`AbsClass`或将`condition`缩写为`condi`。 11. **【推荐】** 如果使用了设计模式,则建议在类名中体现具体的设计模式。例如:`OrderFactory`, `LoginProxy`, `ResourceObserver`。 12. **【推荐】** 接口中不要添加任何修饰符(包括`public`)。同时,尽量不要在接口中定义变量,除非确实需要定义与接口方法相关的基础常量。例如,接口方法签名:`void f();` 接口基础常量:`String COMPANY = "alibaba";`。 13. **【强制/推荐】** 接口和实现类的命名有两种规则: - 对于`Service`和`DAO`类,遵循SOA理念,暴露的服务一定是接口,而内部实现类应使用`Impl`作为后缀与接口区分开来。例如,`CacheServiceImpl`实现`CacheService`接口。 - 对于描述能力的接口名称,建议采用形容词的形式(通常以`-able`结尾)。例如,`AbstractTranslator`实现`Translatable`接口。 14. **【参考】** 枚举类名建议带有`Enum`后缀,枚举成员名称需全大写,单词间用下划线隔开。例如:`public enum ColorEnum { RED, GREEN, BLUE }`。枚举实际上是一种特殊的常量类,用于表示一组固定的选项或状态。 通过以上这些规则和推荐做法,阿里巴巴编码指南旨在提高代码的质量、可读性和可维护性。这些规定不仅适用于阿里巴巴内部的开发人员,也对其他开发者有着重要的参考价值。
剩余31页未读,继续阅读
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助