繁体   English   中英

构建可扩展(可扩展),可维护和松散耦合的软件的最佳技术是什么?

[英]What's the best technique to build scalable (extensible), maintainable, and loosely coupled software?

我一直在玩一些mvc框架实现的'模块'概念,它似乎是一个很好的解决方案,也有TDD,但我认为必须有更多东西,比如我错过的设计模式(我只知道一个很少),这将让我构建可以增长(在代码中)没有限制的应用程序。

有什么想法吗?

编辑:关于模块的另一个好处是它们可以以与应用程序无关的方式构建,因此可以重用它们。

在“软件工程的事实和谬误”中,Robert L. Glass说:

事实15.重复使用是一个很好解决的问题。

事实16.重复使用仍然是一个尚未解决的问题。

事实17.重复使用最适合相关系统的家庭。

换句话说,您可以重用模块,但只能在非常相似的应用程序之间重用。 试图使模块如此通用,你可以在任何应用程序中重用它们太难了。 您最终会生成可配置的模块,使用起来过于复杂,并且包含大量代码来处理对给定应用程序没用的场景。

您最好为每个应用程序编写自定义模块,这样可以满足每个应用程序的需求,而不是更多。 这对于像PHP这样的语言尤为重要,因为代码会在每个请求上加载,因此代码量对性能有很大影响。

重用更细粒度的功能是不同的。 无论应用程序彼此有多么不同,应用程序之间使用say,logging,都是相当类似的。 这就是为什么大多数框架都能很好地处理通用服务类的原因。


来自@A_Var的评论:

如果您事先知道可能的功能范围,那么可以使类可重用,因此需要可扩展的部分。 对于在每个应用程序中使用类似的简单类,这相对容易。 我提到了日志记录的例子。 这就是Glass所说的小型再利用

但我们不是在谈论简单的课程。 如果您尝试使用复杂模块执行相同的操作(考虑多个类来处理多个屏幕,表单,不同的数据库模式等),那么编写代码以使其足够通用以涵盖所有特定需求是非常困难的。每个申请。 您最终需要在通用模块中需要更多代码,而不是为每个应用程序编写单独模块所需的总代码。

此外,测试变得非常昂贵,因为您对基本模块所做的任何更改都需要您重新测试使用和扩展它的所有应用程序。

最后,为每个应用程序编写一个新模块的工作量减少了,通过使用更细粒度的可重用组件,您可以获得更高的效率。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM