split loop

news2024/11/26 20:45:33

在这里插入图片描述

// refactoringmotherfucker.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <vector>
#include <memory>

// before refactoring of split loop
class People {
public:
	People(double _age,double _salary) : age(_age), salary(_salary) {
	}
	double age;
	double salary;
};

class BeforeApplication
{
public:
	void doWork() {
		init();
		printValues();
	}
	void init() {
		peoples_.push_back(std::make_shared<People>(23, 8000));
		peoples_.push_back(std::make_shared<People>(25, 13000));
		peoples_.push_back(std::make_shared<People>(30, 15000));
	}

	void printValues() {
		double averageAge = 0;
		double totalSalary = 0;
		for (int i = 0; i < peoples_.size(); i++)
		{
			averageAge += peoples_.at(i)->age;
			totalSalary += peoples_.at(i)->salary;
		}
		averageAge = averageAge / peoples_.size();

		std::cout << "the average age is: " << averageAge << std::endl;
		std::cout << "the total salary is: " << totalSalary << std::endl;
	}
private:
	std::vector<std::shared_ptr<People> > peoples_;
};

// after refactoring of split loop
class AfterApplication
{
public:
	void doWork() {
		init();
		printValues();
	}

	void init() {
		peoples_.push_back(std::make_shared<People>(23, 8000));
		peoples_.push_back(std::make_shared<People>(25, 13000));
		peoples_.push_back(std::make_shared<People>(30, 15000));
	}

	void printValues() {
		std::cout << "the average age is: " << averageAge() << std::endl;
		std::cout << "the total salary is: " << totalSalary() << std::endl;
	}

	double averageAge() {
		double result = 0;
		for (int i = 0; i < peoples_.size(); i++) {
			result += peoples_[i]->age;
		}
		return result / peoples_.size();
	}

	double totalSalary() {
		double result = 0;
		for (int i = 0; i < peoples_.size(); i++) {
			result += peoples_[i]->salary;
		}
		return result;
	}
private:
	std::vector<std::shared_ptr<People> > peoples_;
};

int main()
{
	// refactoring before
	std::shared_ptr<BeforeApplication> before_app = std::make_shared<BeforeApplication>();
	before_app->doWork();

	// refactoring after
	std::shared_ptr<AfterApplication> after_app = std::make_shared<AfterApplication>();
	after_app->doWork();

}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1213379.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

day17_多线程基础

今日内容 零、 复习昨日 一、作业 二、进程与线程 三、创建线程 四、线程的API 一、复习 IO流的分类 方向: 输入,输出类型: 字节(XxxStream),字符(XxxReader,XxxWriter)字节输入流类名: FileInputStream字节输出流类名: FileOutputStream字符输入流类名: FileReader字符输出流类…

Spring lOC的注解使用与开发

Spring Spring IoC注解式开发为什么使用注解Spring注解的使用Value注解Autowired注解全注解式开发 Spring IoC注解式开发 为什么使用注解 注解的存在主要是为了简化XML的配置&#xff0c;注解的开发能大大提高我们的开发效率的&#xff0c;但它在一定程度上违背了OCP原则。 …

智能客服外包与传统呼叫中心人力外包对比有哪些优势?

随着人工智能技术的飞速发展&#xff0c;智能客服外包服务为企业提供了更高效、更智能的客户服务解决方案&#xff0c;越来越多的企业更愿意选择智能客服外包服务。与传统呼叫中心人力外包相比&#xff0c;智能客服外包有哪些优势呢&#xff1f; 减轻人力资源压力 智能客服系统…

Linux指令(二)

&#x1f3a0;&#x1f3a0;&#x1f3a0;&#x1f3a0;&#x1f3a0;&#x1f3a0;&#x1f3a0;&#x1f3a0;&#x1f3a0;&#x1f3a0;&#x1f3a0;&#x1f3a0;&#x1f3a0;&#x1f3a0;&#x1f3a0;&#x1f3a0; &#x1f396;️&#x1f396;️&#x1f396;️&a…

设备报修流程要怎么优化?工单管理系统如何提高设备维修效率?

在当今快速发展的数字化时代&#xff0c;传统的设备报修流程已经难以满足企业的需求。纸质记录、电话通知等传统方式不仅效率低下&#xff0c;而且容易造成信息遗漏和错误。为了解决这些问题&#xff0c;企业需要引入一种更加高效、便捷的维修管理系统——的修工单管理系统。  …

TSINGSEE青犀视频平台EasyCVR修改设备通道不生效是什么原因?该如何解决?

视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;在视频监控播放上&#xff0c;TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放&#xff0c;可同时播放多路视频流&#…

如何在Windows 10上恢复丢失的文件?

丢失文件时该怎么办&#xff1f; 在使用电脑的过程中&#xff0c;我们经常会遇到丢失重要文件的情况。无论是意外删除、病毒攻击还是电脑格式化&#xff0c;都可能导致文件丢失。在面对这些情况时&#xff0c;大多数人总是会问&#xff1a;“如何在电脑上恢复丢失的文件&am…

每天学习一点点之从 SonarQube Bug 看对线程中断异常的处理

最近在基于 SonarQube 对代码进行质量优化&#xff0c;说实话&#xff0c;之前觉得 SonarQube 这种很无聊&#xff0c;但最近静下心来看了一些扫描出来的问题后&#xff0c;发现这种工具作用还是挺大的&#xff0c;能够帮助我们找到代码中的隐藏缺陷&#xff0c;从而夯实基础。…

遍历一个对象,并得出所对应的值

var dates {//定义的对象year:now.getFullYear(),month:now.getMonth()1,date:now.getDate(),hour:now.getHours(),minute:now.getMinutes(),second:now.getSeconds() }//开始遍历循环 var val; for (val in dates){console.log(对象名称&#xff1a;val-对象的值&#xff1a;…

【性能】如何计算 Web 页面的 FP 指标

什么是 FP 指标 FP (First Paint) 为首次渲染的时间点&#xff0c;在性能统计指标中&#xff0c;从用户开始访问 Web 页面的时间点到 FP 的时间点这段时间可以被视为 白屏时间&#xff0c;也就是说在用户访问 Web 网页的过程中&#xff0c;FP 时间点之前&#xff0c;用户看到的…

网络嵌入综述

图嵌入综述整理&#xff08;上&#xff09; 来源&#xff1a;图算法探索系列&#xff08;一&#xff09;&#xff1a;图嵌入模型的原理和应用篇【万字长文】 图9是DeepWalk模型在推荐场景下的应用。图9&#xff08;a&#xff09;显示的是不同用户在不同Session中的item点击序列…

8年经验的软件工程师建议

我希望在职业生涯早期就开始做的事情和我希望以不同的方式做的事情。 大家好&#xff0c;我已经做了八年半的软件工程师。这篇文章来源于我最近对自己在职业生涯中希望早点开始做的事情以及希望以不同方式做的事情的自我反思。 我在这里分享的对任何希望提高和进步到高级甚至…

【PyQt小知识 - 2】:QTextEdit内容的更新和获取、隐藏或显示滚动条、光标插入文本、文本自适应移动

文章目录 QTextEdit更新和获取内容隐藏或显示滚动条光标插入文本文本自适应移动 QTextEdit 更新和获取内容 更新&#xff1a;QTextEdit().setText(text) 或 QTextEdit().setPlainText(text) 获取&#xff1a;QTextEdit().toPlainText() setText()和setPlainText()的区别&…

自动化测试Mock神器:轻松模拟HTTP请求..

一、背景 在日常测试过程中或者研发开发过程中&#xff0c;目前接口暂时没有开发完成&#xff0c;测试人员又要提前介入接口测试中&#xff0c;测试人员不仅仅只是简单的编写测试用例&#xff0c;也可以通过一些mock的方法进行来提前根据接口测试的情况进行模拟返回接口的信息…

怎么选好用的电脑监控软件

在选择好用的电脑监控软件时&#xff0c;需要考虑多个因素&#xff0c;包括功能和特性、安全性和隐私保护、用户界面、实时监控和报警功能、日志记录和报告功能、兼容性以及用户评价和口碑等。 首先&#xff0c;需要明确你需要监控的内容&#xff0c;例如屏幕活动、应用程序使用…

U盘变成了.lnk,怎么处理

没曾想客户电脑是是不是有个病毒啥的&#xff0c;把我的U盘直接干成了只有一个.lnk的一个快捷方式&#xff0c;后面百度找了很多方法&#xff0c;最后找到了一个非常实用的方法&#xff0c;后整理了一下交给大家 方法如下&#xff1a; 1.找到电脑U盘文件 2.搜索框中输入你之…

正则提取记录

使用正则 https?:\/\/([^\/\s])/

TikTok女性创作者:媒体世界的新领袖

在数字时代&#xff0c;社交媒体已成为媒体和娱乐产业的关键组成部分&#xff0c;而TikTok作为最受欢迎的短视频分享平台之一&#xff0c;为女性创作者提供了一个独特的机会来在媒体世界中崭露头角。 这个平台不仅为女性创作者提供了一个创作和分享自己的声音、观点和创意的空…

Arthas搭建与使用

背景 在平时开发过程中经常会遇到日志打印有问题、代码不知道是否执行、定位运行缓慢的代码段等需求&#xff0c;这时往往需要排查很久&#xff0c;并且由于我们基于docker进行部署&#xff0c;一旦有问题要发包调试的话构建过程还是比较复杂耗时的&#xff0c;有时候打包只是…

为什么说MES管理系统是车间层与管理层的桥梁

随着制造业的快速发展&#xff0c;企业对于生产过程中的管理要求越来越高。为了满足这一需求&#xff0c;MES生产管理系统应运而生。MES管理系统作为车间层与管理层之间的桥梁&#xff0c;扮演着至关重要的角色。本文将探讨为什么说MES管理系统是车间层与管理层之间的桥梁。 一…