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

未支付网站建设挂哪个科目学校网站页面设计

未支付网站建设挂哪个科目,学校网站页面设计,创建全国文明城市倡议书,德阳吧网站建设代码味道-数据类 代码坏味道:Data Class 的深度解析与重构实践 一、Data Class 的定义与特征 Data Class(数据类)是指仅包含数据字段和简单访问方法(如getter/setter),缺乏业务逻辑和职责的类。它本质上是…

代码味道-数据类

代码坏味道:Data Class 的深度解析与重构实践

一、Data Class 的定义与特征

Data Class(数据类)是指仅包含数据字段和简单访问方法(如getter/setter),缺乏业务逻辑和职责的类。它本质上是"哑数据容器",常见于面向对象编程中,表现为以下特征:

  • 仅有数据存储:仅包含字段定义和基础读写方法
  • 无行为逻辑:不包含数据验证、计算等业务方法
  • 低内聚高耦合:其他类需直接操作其内部数据
  • 集合管理缺陷:若包含容器类字段(如列表/字典),常缺乏封装

二、C++ 中的 Data Class 实例演示

重构前的问题代码

// 纯数据类示例 
class StudentRecord {
public:std::string name;std::vector<int> scores;StudentRecord(std::string n, std::vector<int> s) : name(n), scores(s) {}
};// 外部业务逻辑 
class GradeCalculator {
public:float calculateAverage(const StudentRecord& record) {if(record.scores.empty())  return 0.0f;int sum = 0;for(int score : record.scores)  {sum += score;}return static_cast<float>(sum) / record.scores.size(); }
};

主要问题分析
StudentRecord
仅作为数据容器存在
核心业务逻辑(平均分计算)外置于其他类
scores字段直接暴露,违反封装原则

三、重构解决方案与过程

重构流程图

计算逻辑
集合操作
字段访问
识别Data Class
分析数据操作点
操作类型
Move Method到数据类
Encapsulate Collection
Hide Field
验证内聚性提升

重构后优化代码

class Student {
private:std::string name;std::vector<int> scores;public:Student(std::string n, std::vector<int> s) : name(std::move(n)), scores(std::move(s)) {}// 封装集合操作 void addScore(int score) {scores.push_back(score); }// 内聚业务逻辑 float calculateAverage() const {if(scores.empty())  return 0.0f;return std::accumulate(scores.begin(),  scores.end(),  0.0f) / scores.size(); }// 受控访问方法 const std::string& getName() const { return name; }
};

四、关键重构步骤解析

  1. 封装集合字段
+ void addScore(int score) {
+     scores.push_back(score); 
+ }

解决思路:通过方法控制集合修改,避免直接操作容器

  1. 搬移业务逻辑
float calculateAverage() const {// 计算逻辑内聚到数据类
}

重构技术:应用Move Method模式

  1. 访问控制优化
- std::string name;
+ private:
+    std::string name;

设计原则:遵循最小公开原则

五、重构效果对比

指标重构前重构后
类职责单纯数据存储数据+业务聚合
方法调用次数外部类多次调用单点调用
修改影响范围需修改多处调用点仅修改类内部实现
单元测试难度需mock外部依赖自包含可测试

六、设计模式应用建议

  1. 策略模式(计算策略)
class ScoreStrategy {
public:virtual float calculate(const std::vector<int>&) = 0;
};class Student {// 注入不同的计算策略...
};
  1. 工厂模式(对象构建)
class StudentFactory {
public:static Student createFromDB(int id) {// 数据库查询逻辑...}
};

七、最佳实践原则

  • 单一职责原则:每个类应专注于单一功能域
  • 迪米特法则:对象应最小化对其他对象的了解
  • 开闭原则:通过扩展而非修改实现功能变更
  • 组合优于继承:使用组合封装数据行为

通过系统化的重构过程,Data Class可转变为具备业务能力的成熟对象。建议在代码审查阶段使用SonarQube等静态分析工具检测此类坏味道,结合持续重构保持代码健康度。

作者郑天佐
邮箱zhengtianzuo06@163.com
主页http://www.zhengtianzuo.com
githubhttps://github.com/zhengtianzuo
http://www.dtcms.com/a/527256.html

相关文章:

  • 响应式网站茶叶网站潍坊网站建设公司有哪些
  • 网站开发架构图做网站项目体会
  • 郑州网站推广公司信息营销活动方案模板范文
  • dede 网站根目录永久免费国外域名注册
  • 做网站分前台后端吗网络营销策划方案展示
  • 恶意网站的防治wordpress博客模板安装失败
  • 免费建网站平台哪个好购物网站建设工作流程
  • 网站 搜索 关键字 description文具网站建设规划书
  • dz论坛可以做招聘网站小程序开发查询
  • 做网站是先买域名甘肃新站优化
  • 搜索网页怎么制作seo网络培训班
  • 想做个小网站怎么做网络建设方案模板
  • 阐述建站流程手机域名解析错误
  • 乐清建设网站公司开办网站需要什么手续
  • app手机网站建设黄图片生成二维码在线制作
  • 新手学做免费网站软件免费的黄冈网站有哪些平台?
  • 制作网站需要什么语言一个完整的企业网站
  • 基于php的网站建设思路方案自己做电商网站
  • 基金公司网站建设南宁开发公司
  • 邢台做wap网站费用网站登录不了
  • 常州网站建设优质商家为wordpress添加虚拟用户权限
  • 哪些做园林的网站亚马逊雨林在哪个国家
  • 西安手机网站制作公司莱芜租房网站
  • 广东建设信息网是什么网站天猫商城入驻
  • 莆田网站制作企业网站开发的经费预算
  • 品牌网站建设营销型网站设计wordpress 菜单保存在哪里
  • 做网站需要开放哪些端口中国建设项目招标网站
  • 营销型网站建设思路自己做网站传视屏
  • 做网站中app客户端wordpress如何精简导航代码
  • 企业建设网站管理制度广告制作技术培训