03作业

03作业

一、关于static修饰符的问题

  1. 适合用static修饰的方法

    • 工具类方法(如Math类的abs()、StringUtils的isEmpty())
    • 工厂方法(用于创建对象的方法)
    • 单例模式的getInstance()方法
    • 与类本身相关而非实例相关的操作
  2. 不使用static修饰的方法特性

    • 属于对象实例,需要创建对象后才能调用
    • 可以访问实例变量和实例方法
    • 具有this指针,指向当前对象
    • 与对象的状态紧密相关
  3. Student的getName()不应该用static修饰,因为getName()是获取具体学生对象的姓名,每个学生对象有不同的姓名,属于实例级别的操作。

二、购物车案例中的类设计问题

  1. 识别类、方法、属性的方法

    • 从问题描述中提取名词(可能作为类或属性)
    • 提取动词(可能作为方法)
    • 根据业务逻辑分析实体间的关系
  2. 判定方法与属性所属类的原则

    • 谁拥有这个数据,属性就属于谁
    • 谁执行这个操作,方法就属于谁
    • 遵循"高内聚"原则,相关的属性和方法应该放在同一个类中

例如:购物车(Cart)有添加商品的方法,因为购物车"拥有"添加商品这个行为;商品(Product)有价格属性,因为价格是商品的固有特征。

三、类名冲突与代码管理

  1. 避免类名冲突的方法

    • 使用包(package)机制,通过不同的包结构区分
    • 采用公司域名反转作为包的前缀(如com.alibaba.service)
    • 在类名前添加项目或模块前缀(如OrderService、UserService)
  2. 代码管理方式

    • 按功能模块划分包(如controller、service、dao)
    • 按业务领域划分包(如user、order、product)
    • 使用Maven/Gradle等构建工具进行依赖管理
    • 采用模块化开发,将大型项目拆分为多个子模块

举例:一个电商项目可以这样组织包结构:

com.company.ecommerce
  user       // 用户相关
  order      // 订单相关
  product    // 商品相关
  cart       // 购物车相关
  common     // 公共类
  util       // 工具类

四、《阿里巴巴Java开发手册》中的规范

  1. 变量命名

    • 成员变量、局部变量命名采用lowerCamelCase风格,必须遵从驼峰形式。
    • 定义DO/DTO/VO等POJO类时,不要使用isXXX作为布尔类型变量的前缀。
  2. 类命名

    • 类名使用UpperCamelCase风格,必须遵从驼峰形式并首字母大写。
    • 抽象类命名使用Abstract或Base开头;异常类命名使用Exception结尾。
  3. 方法命名

    • 方法名使用lowerCamelCase风格,必须遵从驼峰形式。
    • 获取单个对象的方法用get作前缀,获取多个对象的方法用list作前缀。
  4. 常量命名

    • 常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚。
    • 不允许出现任何魔法值(即未经定义的常量)直接出现在代码中。
  5. 包命名

    • 包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。
    • 包名建议使用域名反转形式,如com.alibaba.xxx。
  6. 代码格式

    • 左大括号前不换行,左大括号后换行。
    • 注释的双斜线与注释内容之间有且仅有一个空格。
    • 单行字符数限制不超过120个,超出需要换行。
  7. OOP规约

    • 避免通过一个类的对象引用访问此类的静态变量或静态方法。
    • 所有的覆写方法,必须加@Override注解。
    • 构造方法禁止加入任何业务逻辑,如果有初始化逻辑,请放在init方法中。
posted @ 2025-09-20 11:59  救苦救难观世音  阅读(8)  评论(0)    收藏  举报