p3c-oop-standards
Provides OOP programming standards including method overriding, equals/hashCode, wrapper types, serialization, and access control. Invoke when user asks about OOP best practices or class design patterns.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
P3C OOP编程规范
本技能提供阿里巴巴Java开发手册中的OOP相关规范。
静态访问
- 【强制】避免通过对象引用访问静态变量或静态方法,直接用类名访问
方法覆写
- 【强制】所有覆写方法必须加@Override注解
可变参数
- 【强制】相同参数类型、相同业务含义才可使用可变参数,避免使用Object
- 可变参数必须放置在参数列表最后
接口稳定性
- 【强制】外部调用或二方库依赖的接口不允许修改方法签名,过时接口加@Deprecated注解
过时方法
- 【强制】不能使用过时的类或方法
equals方法
- 【强制】Object的equals方法易抛空指针,应使用常量或确定有值的对象调用equals
- 正例:"test".equals(object);
- 反例:object.equals("test");
- 推荐使用java.util.Objects#equals
包装类比较
- 【强制】相同类型包装类对象之间值的比较,全部使用equals方法
基本类型与包装类型
- 关于基本数据类型与包装数据类型的使用标准:
- 【强制】所有POJO类属性必须使用包装数据类型
- 【强制】RPC方法返回值和参数必须使用包装数据类型
- 【推荐】所有局部变量使用基本数据类型
POJO默认值
- 【强制】定义DO/DTO/VO等POJO类时,不要设定任何属性默认值
序列化
- 【强制】序列化类新增属性时,请不要修改serialVersionUID字段
构造方法
- 【强制】构造方法中禁止加入任何业务逻辑,初始化逻辑放在init方法中
toString方法
- 【强制】POJO类必须写toString方法,继承POJO类时在前面加super.toString()
split方法
- 【推荐】使用索引访问String的split方法得到的数组时,需做最后一个分隔符后有无内容的检查
方法顺序
-
【推荐】多个构造方法或同名方法应按顺序放置在一起
-
【推荐】类内方法定义顺序:公有或保护方法 > 私有方法 > getter/setter方法
setter/getter
- 【推荐】setter方法中参数名称与类成员变量名称一致,getter/setter方法中不要增加业务逻辑
字符串连接
- 【推荐】循环体内字符串连接使用StringBuilder的append方法
final关键字
- 【推荐】final关键字使用场景:
- 不允许被继承的类
- 不允许修改引用的域对象
- 不允许被重写的方法
- 不允许运行过程中重新赋值的局部变量
- 避免上下文重复使用变量
clone方法
- 【推荐】慎用Object的clone方法,默认是浅拷贝
访问控制
- 【推荐】类成员与方法访问控制从严:
- 不允许外部直接new创建对象,构造方法必须是private
- 工具类不允许有public或default构造方法
- 类非static成员变量与子类共享,必须是protected
- 类非static成员变量仅在本类使用,必须是private
- 类static成员变量仅在本类使用,必须是private
- 若是static成员变量,必须考虑是否为final
- 类成员方法只供类内部调用,必须是private
- 类成员方法只对继承类公开,限制为protected
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-03-11
- Index updated
- 2026-03-11
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!