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

第4章:Python TDD消除重复与降低依赖实践

写在前面


这本书是我们老板推荐过的,我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后,我突然思考,对于测试开发工程师来说,什么才更有价值呢?如何让 AI 工具更好地辅助自己写代码,或许优质的单元测试是一个切入点。 就我个人而言,这本书确实很有帮助。第一次读的时候,很多细节我都不太懂,但将书中内容应用到工作中后,我受益匪浅。比如面对一些让人抓狂的代码设计时,书里的方法能让我逐步深入理解代码的逻辑与设计。 作为一名测试开发工程师,我想把学习这本书的经验分享给大家,希望能给大家带来帮助。因为现在工作中大多使用 Python 代码,所以我把书中JAVA案例都用 Python 代码进行了改写 。

问题背景说明

随着代码量的增加,如果存在大量重复代码,会使代码的维护成本急剧上升。当功能需要修改时,可能需要在多个地方进行相同的更改,容易出现遗漏和不一致的情况。同时,代码之间的紧密依赖也会导致某个模块的变化影响到其他多个模块,降低代码的灵活性和可扩展性。因此,在开发过程中,及时消除重复代码和降低依赖关系是保持代码健康发展的重要任务。

在Python TDD的开发过程中,消除代码重复和降低代码之间的依赖关系是提高代码质量和可维护性的关键。

4.1 思路说明

分析之前代码中可能存在的重复部分,比如硬编码的乘法运算。通过封装这些重复的逻辑,将其集中到Dollar类的方法中,从而减少代码重复。同时,考虑到未来可能的变化,优化代码结构,降低不同模块之间的依赖,使代码更易于修改和扩展。

4.2 测试代码

import unittest


class Dollar:
    def __init__(self, amount):
        self.amount = amount

    def times(self, multiplier):
        return self.amount * multiplier


class TestDollar(unittest.TestCase):
    def test_dollar_multiplication(self):
        five = Dollar(5)
        result = five.times(2)
        self.assertEqual(result, 10)

    def test_dollar_multiplication_different_input(self):
        ten = Dollar(10)
        result = ten.times(3)
        self.assertEqual(result, 30)


if __name__ == '__main__':
    unittest.main()

4.3 源码说明

Dollar类的times方法中,我们封装了金额乘法的逻辑。如果之前存在多处硬编码的乘法运算,现在可以统一调用times方法来实现,避免了重复代码。从依赖角度看,当需要修改金额乘法的计算逻辑时,只需要在times方法中进行修改,而不需要在所有使用乘法的地方逐一修改,降低了代码之间的耦合度,提高了代码的可维护性。


http://www.kler.cn/a/510693.html

相关文章:

  • 数据结构漫游记:动态实现栈(stack)
  • 讲一下ZooKeeper的持久化机制?
  • LLM - 大模型 ScallingLaws 的 C=6ND 公式推导 教程(1)
  • RabbitMQ基础篇
  • SpringBoot项目打war包要点
  • QT开发技术 【基于TinyXml2的对类进行序列化和反序列化】一
  • 深度学习python基础(第一节) 变量和数据类型
  • 设计微服务的过程
  • 从Cursor到Replit Agent:AI编程技术全面综述
  • 【Python】endote参考文献格式获取,从PubMed
  • Next.js 实战 (八):使用 Lodash 打包构建产生的“坑”?
  • 【NLP高频面题】LSTM的前向计算如何进行加速?
  • 遥感应用论文精选
  • C++ 面向对象(继承)
  • 机器学习皮马印第安人糖尿病数据集预测报告
  • C#,入门教程(03)——Visual Studio 2022编写彩色Hello World与动画效果
  • # 爬楼梯问题:常见数列的解法总结
  • 冬季深圳小览
  • Pytorch深度学习指南 卷I --编程基础(A Beginner‘s Guide) 第0章
  • “深入浅出”系列之C++:(6)CMake构建项目
  • 蓝桥杯3525 公因数匹配 | 枚举+数学
  • DDD - 如何设计支持快速交付的DDD技术中台
  • 软工:第一部分(初识软工)
  • “深入浅出”系列之数通篇:(5)TCP的三次握手和四次挥手
  • JavaScript中提高效率的技巧一
  • A5.Springboot-LLama3.2服务自动化构建(二)——Jenkins流水线构建配置初始化设置