当前位置: 首页 > news >正文

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.ecommerceuser       // 用户相关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方法中。
http://www.gsyq.cn/news/8465.html

相关文章:

  • 软工作业个人项目
  • YOLO进阶提升 6模型训练与测试
  • 解码C语言位字段
  • Sql Server 多层嵌套事务的执行结果
  • es入门
  • 02-Media-7-uvc.py 应用软件解码的USB摄像头(UVC)捕获视频并显示的程序
  • YOLO入门理解 评估指标
  • [ICPC 2024 Yokohama R] Peculiar Protocol
  • The 2025 ICPC Asia East Continent Online Contest (II)(C,D,E,H,I)
  • 实用指南:微信小程序-6-页面布局和事件绑定以及页面跳转
  • 终旅之始——2025 . 9 . 20
  • 深入理解Django Admin只读字段与保存模型的自定义操作 - 详解
  • 深度学习(视觉注意力SeNet/CbmaNet/SkNet/EcaNet)
  • qoj6277 Linear Congruential Generator
  • Node.js、npm 和 npx:前端开发的三剑客 - 指南
  • docker+k8s
  • JBoltAI多模态赋能:制造业数智化升级的新引擎
  • 直播软件开发,单例设计模式很简单吗? - 云豹科技
  • JBoltAI:赋能Java老项目快速接入AI能力的创新之道
  • Java开发生态的数智化升级:JBoltAI如何重塑企业AI应用架构
  • 【深度学习计算机视觉】05:多尺度目标检测 - 实践
  • 初步研究vivio的互传的备份数据格式
  • 完整教程:C#.NetCore NPOI 导出excel 单元格内容换行
  • 直播软件怎么开发,自适应两栏布局方式 - 云豹科技
  • 基于SpringBoot的足球论坛系统+论文示例参考 - 指南
  • go: 生成缩略图
  • git: 报错: fatal: 协议错误:错误的行长度字符串:This 或 fatal: protocol error: bad line length character: This
  • gin: 打包模板文件、静态文件到二进制文件中
  • gin: 判断是否ajax请求
  • An Empirical Study on Commit Message Generation using LLMs via In-Context Learning 论文笔记