我倾向于使用大多数Web应用程序,即使我试图变得笼统,但我的答案可能不适用于您的编程领域。
我还将使用与“库”同义的“框架”。
在实施框架之前,必须考虑一些事项,这里有一些一般示例。
#1 框架会节省时间和精力吗?
这个问题的答案几乎总是肯定的。倾向于建立框架来解决特定问题,并很好地解决它们。例如,诸如EntityFramework之类的框架可以完全避免编写SQL代码。如果您的编程团队不熟练使用SQL,那就太棒了。
构建框架的目的是:a)向其他复杂的组件添加程序员友好的接口,或b)向已经众所周知(或已建立)的组件添加抽象。
后者(在某些情况下甚至是前者)实际上可以阻碍发展。这在您或您的编程团队将要实施他们从未使用过的新框架时尤其适用。
这可能会减慢您的开发过程,并可能导致高昂的成本。
#2应用规模
有人说“任何值得做的事都值得超越”,但通常情况并非如此。如果应用程序的重点是打印“ potato”,那么可能没有充分的理由来实现超大型框架。
在开发应用程序(Web,桌面,移动或任何其他可能的应用程序类型)时-如果您觉得框架的规模“使”您(可能将来)的实现“相形见,”,那么这可能会很大警告标志说明您的框架可能只会使您的应用程序膨胀。一个很好的轶事是,如果您包含jQuery,则只是在文档准备就绪时将“已加载”类添加到您的body-tag中。仅使用原生JavaScript可能会有点困难,但这不会使您的应用程序application肿。
另一方面,如果一个框架在内部(例如数据库框架)做了很多肮脏的工作,那么即使您只是“部分”使用该框架,也可以实施它。一个很好的轶事就是不要尝试构建自己的ADO.NET或MongoDB驱动程序,只是因为您不需要利用整个库。
有时,框架来自开源(并带有“随心所欲”许可)。这为编程团队仅选择框架的一部分开辟了新的可能性。
最终,这与问题1和问题3息息相关。
#3影响。
有时实施框架会直接影响最终用户。对于Web应用程序尤其如此,因为拥有大型客户端框架可能会对最终用户的体验产生负面影响。使用较慢计算机的用户可能会遇到渲染速度慢,JavaScript性能问题或由低于标准计算机导致的类似问题。连接速度慢的用户可能会经历缓慢的(至少是初始)加载时间。
即使在其他类型的应用程序中,最终用户也可能会受到应用程序依赖性的负面影响。框架至少总是占用一些磁盘空间,并且如果您正在开发移动应用程序(甚至是台式机应用程序),则可能需要考虑这一点。
服务器端框架(甚至更多特定于Web的框架)很可能不会影响您的最终用户,但会影响您的基础结构。某些框架本身具有依赖关系,这可能需要您重新启动Web服务器,或者仅重新启动服务,或者完全重新启动服务器。
有些框架可能也很耗资源。
当然,这与点1和点2有关。
这只是一个很大的“考虑因素”,并且没有真正的科学方法来决定是否应该实施框架。
科宾·马奇总结得很好:
我与之共事的小组都做同样的事情-估算成本和收益,选择最有生产力的路线,并希望他们是对的。这不是非常科学的-一部分是直觉,一部分是经验,一部分是对市场的敏感性,一部分是狡猾,五部分是等级观点。
不要精英人士也很重要。框架是要使用的工具。我认识两个极端的人。一方面,您可以让自己为自己的生活变得非常艰难;另一方面,您可以让您创建缓慢而肿的应用程序。
所有框架都有用例,只是为了正确的目的实现它们即可。