Java
1. static 方法的使用与特性
应使用 static 修饰的方法:
- 不依赖实例变量或实例方法的方法(工具方法)。
- 仅操作静态变量或参数的方法。
- 工厂方法、单例模式获取实例的方法。
- 纯函数式方法(无状态、输入决定输出)。
非 static 方法的特性:
- 依赖实例状态(操作实例变量)。
- 需通过对象实例调用(属于对象级别行为)。
- 常表示对象的行为或动作(如 student.study())。
Student 的 getName 是否应为 static?
否。getName() 通常返回实例的姓名(依赖实例变量 name),应作为实例方法。若设为 static,则无法访问实例的 name,除非将 name 也改为 static(不合理,因为每个学生姓名独立)。
2. 购物车案例的类与方法识别
识别方法:
- 类:从问题描述中提取名词(如 购物车、商品、用户)。
- 属性:类的特征(如 商品价格、购物车商品列表)。
- 方法:类的行为(动词短语,如 添加商品、计算总价)。
判定方法与属性的归属:
- 依据职责驱动设计:方法应属于操作对应数据的类。
- 例如:添加商品 方法应属于 购物车 类(因它直接操作购物车的商品列表)。
- 属性应属于持有该数据的类(如 商品价格 属于 商品 类)。
3. 避免类名冲突与代码管理
避免类名冲突:
- 使用包(package) 进行命名空间隔离(如 com.companyname.project.module.ClassName)。
- 遵循反向域名包命名规范(如 org.apache.commons.StringUtils)。
代码管理方式:
- 按模块分包:例如:
com.example.project├── model (数据模型类,如 User、Product)├── service (业务逻辑类,如 OrderService)├── dao (数据访问类,如 UserDao)└── util (工具类,如 StringUtils)
- 使用 IDE(如 IntelliJ IDEA/Eclipse)的包结构视图管理。
- 结合构建工具(如 Maven/Gradle)按模块组织代码。
4. 阿里巴巴 Java 开发手册规范(精选 7 条)
类别 | 规范内容 |
---|---|
类命名 | 类名使用 UpperCamelCase 风格(如 UserService)。 |
方法命名 | 方法名使用 lowerCamelCase 风格(如 getUserName())。 |
变量命名 | 变量名使用 lowerCamelCase,避免数字或特殊字符(如 messageCount)。 |
常量命名 | 常量名全大写,单词间用下划线分隔(如 MAX_RETRY_COUNT)。 |
包命名 | 包名全小写,使用单数名词(如 com.alibaba.util)。 |
代码格式 | 缩进采用 4 个空格,禁止使用 Tab;大括号 if/else 必须使用。 |
OOP 规约 | 禁止直接通过类访问静态变量(应通过类实例访问);重写方法需加 @Override。 |