被那个几千行的方法恶心后,就开始着手对代码进行重构。
由于重构前的代码基本是不可测的状态,所以此次基本上是推倒重来式的重构(只有部分业务逻辑代码重用)。
花了三天时间,把原有的业务逻辑梳理后,按照下面三个原则重新设计代码流程:
1:流程处理与各个业务的逻辑处理分开,实现流程与业务解耦
2:不同的业务规则代码分开,实现业务间解耦
3:同一业务规则的实现代码集中在一个实现类里,实现业务代码聚合
2:不同的业务规则代码分开,实现业务间解耦
3:同一业务规则的实现代码集中在一个实现类里,实现业务代码聚合
粘一个丑陋的类图:
如此设计的原因是:
1:虽然业务纷杂,五花八门,但大体上的业务处理流程是一样的,而且非常稳定(快两年了,流程仍然是最初的5大步骤)。将流程代码剥离之后,业务只需专注于每个处理步骤的实现,测试范围大大缩小。
2:由于在数据库中,一个业务表被多个业务复用,一个表字段在不同业务中代表含义不同的现象非常普遍。造成业务代码中重复的if.else.判断非常多。 代码可读性很差,而且难于维护(一个简单的业务变动要改20几个地方,漏掉几个也难以测试出来)。
因此,把所有业务抽象了一个 abstract父类,所有具体业务都是该类的子类。 业务判断只在一个factory类里体现。业务变更的改动范围大大缩小。
3:同一业务的具体处理逻辑都在一个类里实现,实现同一个业务处理接口。由于接口封装了业务的变动,使流程处理的代码稳定下来。 增加新业务,只要实现该接口即可,大大减少了代码编写量。
重构后效果对比:(重构前,修改过一个简单的业务变更)
重构前:修改代码40行,花了1多小时。(改了10几处,大部分时间在看代码,眼都看花了)
重构后:只需改动2 行代码,不会超过5分钟。
重构后:只需改动2 行代码,不会超过5分钟。
重构前:测试花了2天,只覆盖变动的业务,改动代码涉及的其它业务没测试(都测一遍估计要半个月)。
重构后:0.5小时。
重构后:0.5小时。
从此以后:谁再说改这个业务要2天,我打他屁股。
相关推荐
通过这个压缩包,你不仅可以学习到一个经典游戏的实现,还可以借此机会提升你的编程技能,尤其是处理游戏逻辑和优化代码效率的能力。如果你是初学者,这将是一个极好的实践项目,帮助你更好地理解和应用编程概念。...
为了应对日益复杂的Web应用程序,Andi和Zeev在PHP 3.0发布后不久就开始了PHP的新一轮重构,目标是提高性能和代码的模块化。这次重构的结果是PHP 4,它基于改进的Zend Engine 1.0,继续增强了PHP的性能和功能。 ...
煤矿综合自动化系统是指在煤矿生产过程中,将各种监控系统和自动化控制设备集成起来,形成一个能够实时监控、自动控制矿井生产各个过程的综合信息化平台。这样的系统能够实现数据的集中管理、分析和展示,提高煤矿的...
这些规划和程序包括了园区的产业发展、基础设施建设、人才引进、金融服务等各个方面,旨在构建一个完善的农业生态格局。 头部园区的经验与未来发展趋势: 通过对头部园区如南京国家农业高新技术产业示范区、山东...
内容概要:本文介绍了西门子S7-200模拟器bet2.5e版本的功能特点及其应用价值。该模拟器支持多种通讯协议如PPI和Modbus RTU,允许用户在没有真实PLC设备的情况下进行程序测试。它不仅能够模拟主站和从站的通讯,还可以便捷地导入用户程序并提供无限期使用的优势。尽管缺少网络通讯功能,但对于基础学习和简单项目的测试依然非常实用。 适合人群:工控领域的初学者、工程师和技术爱好者,尤其是那些希望在没有真实PLC设备的情况下进行编程和通讯测试的人。 使用场景及目标:适用于需要测试PLC程序和通讯协议的场景,帮助用户熟悉PLC编程和通讯机制,提高开发效率,减少硬件依赖。主要目标是在无硬件条件下完成程序调试和通讯测试。 其他说明:文中详细展示了如何使用VB.NET、Python和梯形图语言进行具体的编程实例,强调了注意事项如地址映射、波特率设置等。此外,还提到了一些替代方法来弥补网络通讯功能的不足,如使用虚拟串口工具。
内容概要:本文介绍了一款用于抽水蓄能容量优化配置的CPLEX程序,旨在帮助用户通过数学规划方法实现抽水蓄能电站的最佳容量配置。程序不仅提供详细的代码示例,还包括视频讲解,使编程小白也能轻松理解。文中详细解释了容量优化的目标、配置参数的选择以及储能出力的重要性,并展示了如何通过CPLEX库构建线性规划模型,设定目标函数、添加约束条件并求解模型。此外,文章还讨论了实际应用场景中的注意事项,如充放电效率、水库容量变化、负荷跟踪约束等,并提供了修改参数进行场景分析的方法。 适合人群:对抽水蓄能容量优化感兴趣的电力系统工程师、研究人员及编程爱好者。 使用场景及目标:适用于需要进行抽水蓄能容量优化的工程项目,目标是通过合理的容量配置降低运营成本,提高系统稳定性。用户可以通过修改配置文件中的参数,如抽水效率、电价等,来进行不同的场景分析。 其他说明:程序包内含实战讲解视频,有助于更好地理解和应用代码。代码中包含了多种实用技巧,如处理浮点数精度、时间序列数据等,这些都是实际项目中积累的经验。
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Rust 以内存安全、零成本抽象和并发高效的特性,重塑编程体验。无需垃圾回收,却能通过所有权与借用检查机制杜绝空指针、数据竞争等隐患。从底层系统开发到 Web 服务构建,从物联网设备到高性能区块链,它凭借出色的性能和可靠性,成为开发者的全能利器。拥抱 Rust,解锁高效、安全编程新境界!
内容概要:本文详细介绍了三泵恒压供水控制系统的硬件配置、PLC程序设计、触摸屏组态以及调试技巧。首先讨论了硬件配置的选择,包括变频器、压力传感器的安装位置及其重要性。接着深入探讨了PLC程序的核心逻辑,特别是PID压力调节和泵组轮换策略,确保系统能够高效节能地运行并延长设备寿命。此外,文章还强调了触摸屏组态的关键要素,如压力趋势图和手动干预界面的设计。最后,作者分享了一些调试经验和常见故障排除方法,如模拟量处理、滤波算法的应用以及紧急情况下的手动模式保障。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程和恒压供水系统感兴趣的读者。 使用场景及目标:适用于需要设计和实施恒压供水控制系统的工程项目,帮助工程师掌握从硬件选型到软件编程再到系统调试的完整流程,最终实现稳定的供水控制。 其他说明:文中提供了详细的IO分配表、梯形图逻辑示例和触摸屏界面设计建议,有助于读者更好地理解和应用相关技术。同时,作者还分享了许多实践经验,为实际操作提供了宝贵的指导。
内容概要:本文详细介绍了利用西门子S7-200 PLC和组态王搭建三泵恒压供水系统的全过程。首先阐述了硬件配置,包括IO分配、接线方式以及变频器的使用方法。接着深入探讨了PLC程序的核心逻辑,特别是压力闭环控制和泵轮换策略的设计。文中还分享了组态王界面设计的经验,强调了动态压力曲线和手自动切换功能的重要性。最后,作者结合实际案例,指出了调试过程中常见的问题及其解决方案。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程和HMI设计有一定基础的人群。 使用场景及目标:适用于需要构建高效稳定的恒压供水系统的工程项目。主要目标是确保系统能够根据管网压力自动切换水泵,保持压力稳定,同时提高设备使用寿命和维护效率。 其他说明:文章不仅提供了详细的理论讲解,还包括了许多实用的操作技巧和经验分享,有助于读者更好地理解和掌握相关技术和应用场景。
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Rust 以内存安全、零成本抽象和并发高效的特性,重塑编程体验。无需垃圾回收,却能通过所有权与借用检查机制杜绝空指针、数据竞争等隐患。从底层系统开发到 Web 服务构建,从物联网设备到高性能区块链,它凭借出色的性能和可靠性,成为开发者的全能利器。拥抱 Rust,解锁高效、安全编程新境界!
将ppt转换成图片时,所有图片的文件名中会出现“幻灯片”三个字,这时,可以将本批处理文件复制到对应文件夹内,双击运行后,可以批量删除图片文件名中的“幻灯片”三个字。
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Rust 以内存安全、零成本抽象和并发高效的特性,重塑编程体验。无需垃圾回收,却能通过所有权与借用检查机制杜绝空指针、数据竞争等隐患。从底层系统开发到 Web 服务构建,从物联网设备到高性能区块链,它凭借出色的性能和可靠性,成为开发者的全能利器。拥抱 Rust,解锁高效、安全编程新境界!
内容概要:本文详细介绍了如何利用Matlab和CPLEX构建共享电动汽车的两阶段优化模型。首先,通过整数规划确定最佳充电站位置,考虑用户需求覆盖率和建设成本之间的权衡。其次,采用动态调度模型处理实时车辆分配,确保各区域需求得到满足的同时优化运营成本。文中还讨论了数据预处理技巧如K-means聚类、移动平均滤波以及CPLEX求解器的高效配置方法。 适合人群:从事交通规划、物流配送等领域研究的专业人士,尤其是对数学建模和优化算法有一定了解的研究人员和技术开发者。 使用场景及目标:适用于城市交通管理部门、共享汽车运营商等机构进行电动车基础设施布局规划和日常运营管理。主要目的是降低建设和运营成本,提高用户体验和服务质量。 其他说明:作者分享了许多实践经验,包括如何避免常见错误(如矩阵转置问题)、提高求解速度的小技巧(如稀疏矩阵的应用)以及如何通过可视化工具辅助结果分析。此外,还提到了一些潜在改进方向,如加入充电桩排队时间和路网结构的影响因素。
内容概要:本文旨在构建一种基于记忆序列回放机理的机器人全局路径优化算法模型。通过模拟大脑海马体和前额叶中的记忆回放过程,改进了传统的机器人导航算法。模型采用自适应的Top-k竞争规则和回报折扣思想,使得智能体能够在复杂障碍物环境中快速找到最短路径。实验结果显示,智能体经过1-3次探索即可收敛到稳定状态,并找到最短路径,验证了模型的有效性和快速收敛性。 适合人群:对机器人导航、智能算法、神经科学感兴趣的科研人员,尤其是从事机器人路径规划和认知计算模型研究的学者和工程师。 使用场景及目标:①适用于复杂环境下的机器人路径规划与导航任务;②用于研究大脑记忆回放机制及其对决策过程的影响;③提高机器人在未知环境中的自主学习和适应能力。 其他说明:该模型不仅在仿真环境中表现优异,还在真实机器人实验中得到了验证。通过ROS平台和MATLAB接口,实现了对智能小车的有效控制和路径优化。此外,模型的收敛性和鲁棒性优于现有的DN2和基于小脑及基底神经节的混合模型,显示出更强的适应性和更高的性能。
基于迁移学习的端到端发音检错研究.pdf
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Rust 以内存安全、零成本抽象和并发高效的特性,重塑编程体验。无需垃圾回收,却能通过所有权与借用检查机制杜绝空指针、数据竞争等隐患。从底层系统开发到 Web 服务构建,从物联网设备到高性能区块链,它凭借出色的性能和可靠性,成为开发者的全能利器。拥抱 Rust,解锁高效、安全编程新境界!
内容概要:本文详细介绍了基于51单片机的酒精检测报警器的设计与实现,涵盖了硬件选型、软件编程、功能实现等方面的内容。文中提供了两种不同版本的ADC芯片(AD0809和AD0832),分别阐述了它们的工作原理、代码实现及其优缺点。此外,文章还讨论了系统的各个组成部分,如MQ-3酒精传感器、LCD1602显示屏、按键设置、声光报警等,并给出了详细的代码示例和调试技巧。 适合人群:对单片机开发有一定基础的学习者、电子爱好者、从事交通安全管理的技术人员。 使用场景及目标:适用于防止酒驾的安全监控场景,旨在提高驾驶安全性和减少交通事故的发生。通过本项目的实践,读者可以掌握单片机的基本应用技能,了解传感器数据采集、处理和反馈机制。 其他说明:文中不仅提供了完整的代码实现,还分享了许多实际开发过程中可能遇到的问题及解决方案,如传感器预热、按键防抖、ADC读取时序等。同时,作者强调了该项目作为DIY作品,在正式应用中应注意合法合规性。
内容概要:本文详细介绍了基于虚拟同步发电机(VSG)技术的光储并网系统控制策略,涵盖光伏MPPT控制、储能直流稳压、VSG控制、虚拟阻抗增加及低压穿越控制等方面。针对每个控制策略提供了具体的实现代码和应用场景分析,强调了这些策略在保障电力系统稳定性方面的重要作用。文中不仅讨论了理论背景,还给出了大量实用的代码片段和技术细节,有助于理解和实施这些先进的控制策略。 适合人群:从事新能源发电系统设计、开发和维护的专业技术人员,特别是对光储并网技术和VSG控制感兴趣的工程师。 使用场景及目标:适用于希望深入了解光储并网系统内部工作机制的研究人员和技术爱好者;旨在为解决实际工程项目中的技术难题提供指导和支持,确保光储并网系统能够在各种复杂的电网环境下稳定运行。 其他说明:文章中提到的技术和方法已在多个实际案例中得到验证,能够有效提升系统的性能和可靠性。此外,作者还分享了一些调试经验和常见错误规避技巧,对于初学者非常有价值。
内容概要:本文详细解析了中兴ZXD2400电源电路图4.1版本,涵盖输入、转换和输出三大部分。输入部分介绍了LC滤波电路的作用及其参数计算方法;转换部分围绕UC3842芯片的工作原理展开,展示了其通过比较反馈电压和参考电压来实现电压稳定转换的功能;输出部分讨论了线性稳压芯片的应用。此外,还深入探讨了PWM控制、MOSFET驱动、补偿网络、电压采样、保护电路等关键设计细节,并提供了多个Python代码片段用于参数计算和电路特性模拟。文章不仅帮助读者理解电源电路的工作机制,还分享了许多实际操作经验和注意事项。 适合人群:从事电源设计的技术人员、电子工程师、DIY爱好者。 使用场景及目标:适用于希望深入了解电源电路设计原理和技术细节的人群,旨在提高读者对电源系统的理解和实际应用能力。 其他说明:文中提供的Python代码片段有助于快速定位关键芯片位置、计算重要参数,便于理论联系实际。同时提醒读者关注版本变更说明,避免因使用旧版图纸而导致的问题。
派克气动专业的系统组件