我一直在玩'模块'的概念,有些mvc框架实现了这个概念,它似乎是一个很好的解决方案,也有TDD,但我认为必须有更多东西,比如我错过的设计模式(我只知道一些),这将让我构建可以增长(在代码中)没有限制的应用程序。
有什么想法吗?
编辑:关于模块的另一个好处是它们可以以与应用程序无关的方式构建,因此可以重用它们。
答案 0 :(得分:3)
在“软件工程的事实和谬误”中,Robert L. Glass说:
事实15.重复使用是一个很好解决的问题。
事实16.重复利用仍然是一个尚未解决的问题。
事实17.大型重复使用最适合相关系统的家庭。
换句话说,您可以重用模块,但只能在非常相似的应用程序之间重用。尝试使模块如此通用以至于您可以在任何应用程序中重用它们太难了。您最终会生成可配置的模块,使用起来过于复杂,并且包含大量代码来处理对给定应用程序没用的场景。
您最好为每个应用程序编写自定义模块,这样可以满足每个应用程序的需求,而不再需要。这对于像PHP这样的语言尤为重要,因为代码会在每个请求上加载,因此代码量会对性能产生重大影响。
重用更细粒度的功能是不同的。无论应用程序彼此有多么不同,应用程序之间使用say,logging,都是相当类似的。这就是为什么大多数框架都能很好地处理通用服务风格的类。
来自@A_Var的评论:
如果您事先知道可能的功能范围,那么可以使类可重用,因此需要可扩展的部分。对于在每个应用程序中使用类似的简单类,这相对容易。我提到了日志记录的例子。这就是Glass所指的在小型中重复使用。
但我们不是在谈论简单的课程。如果您尝试使用复杂模块执行相同的操作(考虑多个类来处理多个屏幕,表单,不同的数据库模式等),那么编写代码以使其足够通用以涵盖所有特定需求是非常困难的。每个申请。您最终需要在通用模块中使用更多代码,而不是为每个应用程序编写单独模块所需的总代码。
此外,测试变得非常昂贵,因为您对基本模块所做的任何更改都需要您重新测试所有使用和扩展它的应用程序。
最后,为每个应用程序编写一个新模块的工作量减少了,通过采用更细粒度的可重用组件,您可以获得更高的效率。