哪些原则、代码质量、实践、方法、语言或框架特性可帮助您在更广泛的情况下有效地重用函数、类等。所有情况都很有趣:您可以修改代码的实现和接口以启用/改进重用,或者只修改实现,或者什么都不做。重用有效性的关键指标是(就我而言):
- 它减少了实施和维护的工作量
- 应用质量不会降低
- 降低了多少复杂性
(所有这些都与从较低级别重新实现相比)。
PS。如果可能,请为每个答案指定一个因素,并说明它对您的情况有何帮助。
哪些原则、代码质量、实践、方法、语言或框架特性可帮助您在更广泛的情况下有效地重用函数、类等。所有情况都很有趣:您可以修改代码的实现和接口以启用/改进重用,或者只修改实现,或者什么都不做。重用有效性的关键指标是(就我而言):
(所有这些都与从较低级别重新实现相比)。
PS。如果可能,请为每个答案指定一个因素,并说明它对您的情况有何帮助。
这是一个经典 - 低耦合和高内聚。如果一个模块或函数执行一项特定任务并且几乎没有或没有依赖项,那么与执行多项任务、有很多副作用、需要其他模块相比,它的可重用性要高得多(因为它可以适应更多种类的情况) , ETC。
测试驱动开发。为了使代码易于单元测试,它应该:
1)只做一件事
2)尽可能少的依赖
3)经常传入这些依赖项(以便可以模拟它们)
巧合的是,这些因素也促成了可重用的代码。实际上这不是巧合——拥有可重用代码的最佳方法是确保它被至少两个调用者尽早使用。使用 TDD 创建的代码从两个父级开始 - 正在构建的代码和单元测试,因此它从一开始就被重用。
除了重用之外,TDD 还有许多其他优点——它为你的所有代码提供自动化测试,它充当如何使用代码的示例文档,它使重构更安全。使用 TDD 编写代码可能比编写没有测试的代码花费更长的时间,但您通常会通过需要少得多的调试时间来弥补这一点。
主要因素是人和他的技能、经验、大脑。
如果一个人不知道如何应用它们,那么所有的最佳实践都是毫无价值的。
为了更具体并解决评论,我将列出以下有助于代码可重用性的技能/个人态度:
这类似于成为一名优秀的数学家、科学家或艺术家。每个人都可以阅读和学习许多实践。但只有能应用这些实践的人才能掌握他们的手艺。
重点是可重用性的问题更多是关于个性,而不是技术性。
本质上,函数应该没有副作用。不要使用全局变量——传递函数需要的参数,并将函数的输出作为返回值传递