### 阿里巴巴编码指南知识点详解 #### 一、编程规约 ##### (一)命名规约 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币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- WebSocket详解-TCP全双工通信协议的工作原理与应用
- 信捷xdm plc三轴可编程运动控制程序,支持信捷XDM系列PLC ?信捷TG765触摸屏 支持直线插补 ,圆弧插补,延时,等待输入ON,等待输入OFF,执行输出ON,执行输出O
- Qt+OpenCV图像视觉框架全套源码上位机 工具可扩展 除了opencv和相机sdk的dll,其它所有算法均无封装,可以根据自己需要补充自己的工具 基于 Qt5.12.12 + VS2019 +
- 自动驾驶控制器,自动驾驶多传感器联合标定系列之毫米波雷达到车体坐标系的标定工程 , 本对毫米波雷达的偏航角yaw进行标定,分为粗略标定、静态目标识别和曲线拟合三个步骤 这个工程带有代码注释,帮助您
- 模块化多电平流器MMC,最近电平逼近调制+电压均衡控制
- 基于STM32开发的智能光控窗帘项目 主控芯片STM32F103. 其他控制:光敏电阻,1602显示屏,电机驱动控制模块 工作原理:ADC采集光敏电阻电压 判断电压值,对光照强度判断,光照太强关闭
- simulink二次调频风机储能水轮机水电火电汽轮机二次调频,有随机扰动负荷,可连续波动,可对频率分频调频,分低频,中频,高频,也可对不同死区的风储同步机进行二次调频,系统示意图和波形如图所示,新品
- 磁链观测器 vesc中使用的方法 已经移植到了自己的工程中,实现0速闭环启动 代码、文档、仿真是一一对应的,方便学习 送仿真模型
- uvw对位平台,XXY,XYθ对位平台源码,halcon定位算法,C#联合halcon,含C#和halcon源码,开发平台,vs2015,halcon17
- 考虑源荷不确定性的热电联供微网优化 复现《含可再生能源的热电联供型微网经济运行优化》,采用粒子群算法,采用机会约束规划理论出力源荷不确定性,采用概率方法来表达,目标函数代码完美复刻了文献中的目标函数和
- Python 实现的 TCN(时间卷积网络)进行多特征分类预测的详细实例(含完整的程序,GUI设计和代码详解)
- 基于EKF扩展卡尔曼滤波算法的永磁同步电机PMSM无传感器矢量控制Simulink仿真模型 1.依据PMSM的数学模型搭建电机模型 2.双闭环dq解耦控制,转速外环,转矩内环 3. EKF算法对电机
- Python 实现的 CNN-LSTM(卷积长短期记忆网络)用于时间序列预测的详细实例(含完整的程序,GUI设计和代码详解)
- 下垂控制三相LCL并网 离网matlab仿真模型(户用型储能逆变器)孤网运行联网运行 多机 单机运行 参数计算 仿真模型 ,逆变器,微电网
- Python 实现遗传算法(GA)和(PSO)粒子群优化算法来优化反向传播(BP)神经网络的多输入单输出预测的实例(含完整的程序,GUI设计和代码详解)
- 电子竞技信息交流平台+ssm-微信小程序毕业项目,适合计算机毕-设、实训项目、大作业学习.rar