`
james_lover
  • 浏览: 44375 次
社区版块
存档分类
最新评论

一个方法几千行的程序是如何产生的?

 
阅读更多
最近查看公司的代码,发现有很多体积很大的类,其中一些方法竟有几千行。

这些方法有些共同的特点:

包含大量巨大的if else嵌套。
伴随着大量的magicnumber。
存在大量的重复代码。
难以测试。
对于任何一个没有足够业务知识的人,完全不可读。

这些代码成长过程都很相似:

第一个人:把业务流程和业务代码封装在一个类里。业务不复杂,代码看起来还行。
第二个人:业务流程不变,但新增了业务需求。把第一个人的部分代码copy过来,修改几个业务代码,然后用一个大大的if else包裹起来。
第三个人:把第二个人的copy过来,也用if else包裹起来,增加一些magicnumber。
后面的人:重复前任的工作。
两年以后,就像我眼前看到的这份代码。 要避免这种情况,我觉得责任主要在第二人和第三个人。他们的工作不能仅是简单的copy,而应该重构。按照业务流程与具体业务解耦,业务之间解耦,独立业务聚合的原则:

首先,把以前代码中“业务流程部分”分离出来,作为流程处理类。
把具体业务抽象成接口,交给流程调用。
把每个业务独立分开,实现业务接口,不同的业务之间不存在耦合。
每个独立的业务,其业务逻辑代码只存在于一个class里。
这样后来人新增业务,会copy前人的实现类, 修改一些业务代码和逻辑。却不会形成如此巨大的方法。
分享到:
评论

相关推荐

    千兆网 verilog程序

    此外,为了与上层软件交互,通常会有一个软核CPU(如MicroBlaze或Zynq中的ARM Cortex-A9)集成在同一个FPGA设计中,通过AXI4接口与MAC模块通信。 总的来说,实现千兆网Verilog程序涉及到对以太网协议的深入理解,...

    小程序开发大概需要多少钱?怎么选择合适的小程序开发公司?.pdf

    4. **SaaS软件工具**:如“得有店”,提供现成的功能组件,适合中小微企业和个体商家,成本几千到上万元,且无需额外的IT资源。 在选择小程序开发公司时,商家应关注以下几点: 1. **公司背景和业务**:考察公司的...

    单片机音乐程序流程图及实验方法

    1. **原理说明**:声音的频率范围大致在几十赫兹到几千赫兹之间。单片机通过控制某一口线的高低电平变化,可以在该口线上产生一定频率的矩形波。如果将这个口线与喇叭相连,就能使喇叭发出对应频率的声音。 2. **...

    【防破解】程序轮回加载128世

    就像人生一样,调试器跟踪的只是你的上一世,甚至是几百几千世前的你,而现在的你还好好的活着 因为程序是同一个程序,凭什么上一辈子要立即轮回,而这辈子就可以正常存活 于是.... 这个代码,循环7次,每次产生一个...

    windows 程序设计

    当子系统的数目在Windows最近版本中增多时,大多数典型的Windows程序产生的函数呼叫仍对应到这三个模块之一。Kernel(日前由16位的KRNL386.EXE和32位的KERNEL32.DLL实现)处理所有在传统上由操作系统核心处理的事务...

    面向对象程序设计实训报告.docx

    最后,`randomStudent`方法生成一个介于0到班级人数之间的随机索引,然后根据该索引从ArrayList中选取并打印出一位随机的学生姓名。 通过这样的设计,我们将不同功能封装到了单独的方法中,提高了代码的可读性和...

    8位数码管驱动程序

    4. **刷新机制**:为了保持稳定的显示,驱动程序需要定期更新所有数码管的状态,这个频率通常在几百赫兹到几千赫兹之间。 5. **错误处理**:检测并处理可能出现的硬件故障,如接口信号丢失或电源问题。 在实际应用...

    MCU.rar_单片机延时 程序

    单片机延时程序是电子工程领域中一个重要的技术应用,尤其在嵌入式系统设计中,延时功能经常被用于控制设备的定时操作、脉冲产生或是其他时间同步任务。"MCU.rar_单片机延时程序"这个压缩包提供了一个用于计算单片机...

    50 份 几千页 优质行业分析报告-隐私计算、机密计算、芯片、边缘计算、可信计算、数据安全、智能汽车

    50 份 几千页 优质行业分析报告-隐私计算、机密计算、芯片、边缘计算、可信计算、数据安全、智能汽车 机密计算是由机密计算联盟 (CCC) 定义的一个行业术语。CCC 是专业定义机密计算并加速其采用的基金会。 CCC 定义...

    win系统关闭程序代码

    在Windows系统中,关闭程序可以通过以下几种方法实现: 1. 使用`Taskkill`命令:这是Windows内置的命令行工具,可以用来终止进程。例如,要关闭进程名或PID为`notepad.exe`的记事本程序,可以使用以下命令: ``` ...

    重力感应测试程序,适合三星手机使用

    重力感应技术是移动设备中一个重要的功能,它主要用于检测设备在三维空间中的加速度变化,包括重力和用户产生的动态运动。这个测试程序专为三星手机设计,但同样适用于其他品牌如HTC的设备,为开发者提供了一个方便...

    C#编写的Ping测试小程序

    2. **测试字节数**:默认情况下,Ping命令会发送32字节的数据包,但用户可以自定义这个值,从几字节到几千字节不等,以评估不同大小数据包的传输效率。 3. **测试线程个数**:多线程技术被用于同时发送多个Ping请求...

    《软件工程》学习辅导.docx

    微型软件是只有一个人,甚至是半时,在几天之内完成的软件,写出的程序不到500行语句。小型软件是一个人半年之内完成的2千行以内的程序。中型软件是5人以内在一年多时间里完成的5千到5万行的程序。大型软件是5人至10...

    单片机音乐程序的设计原理解析

    我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单处机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”...

    AOLserver4.5源码+Windows下可执行程序+tcl8.5.7+HTTP Cookie Library

    大约在 1994 年时,在美国加州的圣芭芭拉市,两位 Unix 的高手,Jim Davidson 及 Doug McKee, 设计了一个 Web 出版系统,其中一部分是一个所见即所得的网页编辑程序,叫做 NaviPress。而他们所成立的 NaviSoft 公司...

    广告管理系统程序

    作为一个具有管理功能的广告显示系统,它涵盖了广告投放的各个环节,从广告创建、审批、发布到效果追踪,为广告主、广告运营商以及媒介提供了一体化的解决方案。 在广告管理系统中,以下几个核心知识点是至关重要的...

    RCC电路间歇振荡的研究完整设计报告(含电路原理图和程序).doc

    RCC 变换器是指自振式反激变换器,是由少数几个器件组成的高效电路,已经广泛用于小功率电路离线工作状态。RCC 变换器的控制电路能够与少量分立元件一起工作,不会出现差错,从而使得电路的总的花费要比普通的 PWM ...

    基于51单片机低频信号发生器Proteus仿真设计(包含原理图仿真及源程序)

    在这个项目中,51单片机将被编程来生成这些低频信号,频率范围可能涵盖音频频段,例如几十赫兹到几千赫兹。信号的频率、幅度和波形(如正弦波、方波或三角波)可以通过软件控制。 Proteus是一款强大的电子设计自动...

Global site tag (gtag.js) - Google Analytics