当前位置: 首页 > 面试题库 >

不良系统设计上的代码重构

郝君博
2023-03-14
问题内容

我是一名初级软件工程师,曾负责接管旧系统。根据我的初步评估,该系统存在几个问题。

  1. 意大利面代码
  2. 重复码
  3. 10k行及以上的课程
  4. 使用log4j滥用和过度记录
  5. 错误的数据库表设计
  6. 缺少源代码管理->我为此设置了Subversion
  7. 缺少文档->除了阅读代码外,我对业务规则一无所知

我应该如何处理才能提高系统质量并解决此类问题?我可以考虑使用静态代码分析软件来解决任何不良的编码做法。

但是,它无法检测到任何不良的设计问题。我应该如何逐步解决这些问题?


问题答案:

首先关注稳定性。您必须在应用程序周围建立某种稳定的环境,然后才能增强或重构。

一些想法:

  1. 修订控制 。您已经通过设置Subversion开始。现在,确保您的数据库架构,存储过程,脚本,第三方组件等也都处于修订控制之下。有一个版本标记系统,请确保您标记版本,并且将来可以准确访问旧版本。
  2. 构建并发布 。有一种方法来建立一个机器上的稳定版本 的其他 比你的dev的机器。您可能要使用ant / nant,make,msbuild甚至批处理文件或shell脚本。如果部署脚本/安装程序不存在,则可能也需要它们。
  3. 对其进行测试 。在您有办法知道您的更改是否破坏了它之前,请不要更改该应用程序。为此,您需要测试。希望您应该能够为一些更简单的独立类编写xunit单元测试,但是尝试构建一些可对整个应用程序进行练习的系统/集成测试。如果没有较高的代码覆盖率(您不必首先开始),那么集成测试是您的最佳选择。养成尽可能经常运行测试的习惯。抓住一切机会扩展它们。
  4. 进行小而集中的更改 。尝试识别应用程序中的系统/子系统,并改善它们之间的界限。这样可以减少您所做更改的连锁影响。注意通过重新格式化或采用最新的流行设计模式来“美化”代码的诱惑。扭转这样的系统需要 时间
  5. 文件资料 。它是必需的,但不必太担心。根据我的经验,很少使用系统文档。好的测试通常比好的文档更好。专注于记录应用程序与运行它的系统上下文之间的接口(输入,输出,文件结构,数据库模式等)。
  6. 管理期望 。如果它的状态不好,那么它可能会阻止您进行更改,并且时间表可能比平时更难估计。确保管理层和利益相关者理解这一点。

不惜一切代价,要提防只重写整个内容的诱惑。在这种情况下,这几乎永远都不是正确的事情。如果可行,请集中精力使其正常运行。

作为初级开发人员,不要害怕寻求帮助。正如其他人所说, 《有效使用旧版代码》 是一本好书,Martin Fowler的《 Refactoring
也是一本好书。

祝好运!



 类似资料:
  • 本文向大家介绍PHP递归统计系统中代码行数,包括了PHP递归统计系统中代码行数的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了PHP递归统计系统中代码行数的具体代码,供大家参考,具体内容如下 1、统计代码行数,必然用到的两个关键的知识点:函数递归以及文件读取。 函数递归无非就是在函数的代码中调用本身的函数名,以此形成递归循环 在文件读取中,有很多读取方式,采用了file()读取,按行

  • 了解如何与您的团队一起轻松创建、共享和管理可重复使用的颜色、样式和组件。XD 中的设计系统 在大规模设计数字产品时,保持一致性变得越来越具有挑战性和关键性。在内容速度压力越来越大的情况下,组织正在寻找方法,以在设计和构建客户体验时更快地采取行动。  设计系统提供了可重复使用的一致且稳健的设计模式,这些模式围绕共同的可视语言将多学科产品团队(设计人员、开发人员和利益相关者)联合起来。它减少了设计债务

  • 主要内容:1.订单系统在企业中的角色,2.订单系统与各业务系统的关系,3.订单系统上下游关系,4.订单系统的业务架构1.订单系统在企业中的角色 在搭建企业订单系统之前,需要先梳理企业整体业务系统之间的关系和订单系统上下游关系,只有划分清业务系统边界,才能确定订单系统的职责与功能,进而保证各系统之间高效简洁的工作。 2.订单系统与各业务系统的关系 2.1 对外系统 所有给企业外部用户使用的系统都在这一层,包括官网、普通用户使用的C端,还包括给商户使用的商家后台和在各个销售渠道进行分销的系统,比如与

  • 一、性能 二、伸缩性 三、扩展性 四、可用性 五、安全性 参考资料 一、性能 性能指标 1. 响应时间 指某个请求从发出到接收到响应消耗的时间。 在对响应时间进行测试时,通常采用重复请求的方式,然后计算平均响应时间。 2. 吞吐量 指系统在单位时间内可以处理的请求数量,通常使用每秒的请求数来衡量。 3. 并发用户数 指系统能同时处理的并发用户请求数量。 在没有并发存在的系统中,请求被顺序执行,此时

  • 主要内容:1.考虑一:负负得正,2.考虑二:终态设计,3.考虑三:长尾效应,4.考虑四:存储周期,5.考虑五:AKF扩展,6.考虑六:服务自治,7.考虑七:应急预案,8.考虑八:故障隔离,9.考虑九:风险巡检,10.考虑十一严格准入1.考虑一:负负得正 如果把错误的逻辑改对了反而可能引起问题。 这种问题要避免最好的时机是初版设计和开发阶段就避免。除了设计阶段逻辑要清晰,代码要做好审查、加上单体测试等测试手段外,可以将中间结果用debug日志打印。建议自测阶段多用debug级别日志跑几遍,进行观察

  • 问题内容: 关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。 想要改善这个问题吗? 更新问题,使它成为Stack Overflow的主题。 2年前关闭。 改善这个问题 我正在寻找有关关系数据库设计,性能调整等最佳实践的书/站点/教程。有很多“这里是归一化,这是ER图,”,但在实际示例中却没有太多。有人有想法么? 问题答案: 图书:仅凡人的数据库设计