最近在做项目的时候会遇到一些工程层面的问题,主要是软件质量没有保障、无法快速迭代、需求频繁等问题。因此我特地去找了一下相关方面的资料。 无意之间我发现了 XP 编程
XP 编程
xp 编程也称为极限编程, 主要是分为几个部分
- 价值观
- 原则
- 实践
XP 编程的价值观中强调的是多沟通、有问题及时反馈、尊重等等. 原则方面讲究的是人性化、多样性、反省、改进等等
从价值观和原则方面来讲, XP 编程期望的是一个具有共同目标并且能够不断进步的一个团队。
从实践方面来讲, XP 编程鼓励测试先行、增量设计、持续集成、自动化、小步迭代、频繁迭代、结对编程
首先抛开书本上的知识来讲, 单从程序员的角度来讲讲我对 XP 编程实践方面的几个点的理解
结对编程
俗话说的好, 三个臭皮匠顶过诸葛亮, 在与其余的同事的结对编程中, 能够迸发出更多更好的思维,同时能够审视现有的设计是否合理, 使彼此都更加的专注, 同时对彼此的团队实践负责
持续集成
现在的 CI CD 这类的工具是非常多的, 通过将构建和发布这类的工作自动化, 可以大大地提升效率, 减轻程序员的压力, 同时加上测试 lint 类的工具能够从一定程度上提高我们的代码质量
测试优先
测试优先 其实讲的就是 TDD 了, 在编写功能时先编写对应功能的测试用例, 之后在实现对应的功能逻辑, TDD 相当于是用测试用例来定义了功能需要实现的Interface
, 而后的开发只是对于Interface
的实现, 在配合上之前的持续集成 这样我们就不会出现那种这个 bug 修好别的 bug 又出现的情况, 通过测试来保证了程序的可用性
小步迭代
在 XP 编程中,会将用户需求变成一个个story
,并且进行重要度排序, 然后每一周都会有对应的story
进行迭代, 然后每天都要进行多次集成和测试,最后会有周会来总结当前进度及反省上周问题等等
以上部分是我读过 XP 编程后自己的一些总结, 确实, 就我待过的项目来说, 测试不足 自动化程度低 需求没有优先级等等一系列问题, 导致项目的质量不够 与预期的工期也是相差甚远,毫无软件工程性可言, 现阶段我打算逐步将一些 XP 的理念融入工作中, 提升效率 提升软件质量