西安尚学堂告诉你java开发为什么不要过分依赖框架

时间:2022-10-24 18:05:34

  使用第三方框架和库遇到坑是必然的,但是可以有解决方案的。如果你说我不使用第三方框架和库,就能避免这些坑吗?不是,就算你不使用框架,坑还是要遇到,而且比不用第三方框架和库可能更加麻烦。在我看来,你不是用第三方框架和库,就是在使用自己开发的框架和库。第三方框架和库有问题,有代码,有文档,有在线帮助;自己框架和库有问题,只有代码,没有文档和在线帮助,如果原开发人员走了,可能都不知道问题出在哪里。所以基于这些原因,我现在编程比较倾向于使用框架和第三方库。

  然而单独某一个框架是个时代性很强,竞争激烈,过度依赖的框架话问题会很大。下面谈谈框架问题和解决方案

  1. 大版本升级问题

  每个单独框架都是由进化时间线的,当大版本变动时候,升级底层的框架将会变得异常麻烦。第一,你的代码很多是针对现在这个版本代码优化或者是妥协变通的代码,升级后,很大程度的可能性就是这些代码将成为历史遗留问题。第二,如果你项目是大量修改框架内部,那么这样的升级可能会变成你的噩梦。

  大版本升级一定会发生,尤其在语言升级或者是技术升级后,框架升级不可避免。有些框架升级甚至可以说是个新框架了。

  最近最简单的例子是laravel4-5和angular.js版本1-2的升级,改动地方很多。而bootstrap基本上要你重新把所有html代码全部重新写过

  2.相似框架的移植

  现在用的框架不再更新了,有更好的框架出现了,那么你的代码就需要移动到新的框架下面了,这个时候,噩梦来了,你针对先用的框架代码,基本上和新的框架代码不兼容,那么等于要重新写一次代码。

  我做过把code igniter的代码用laravel重写一遍的事情,那是就是因为框架代码完全不兼容的原因

  3.框架的淘汰

  框架淘汰太快,今天火热,1年后就可能没人再提了。比如说jQuery,如今少有人提了,当然还算是很重要,但是当年的yahoo的YUI,如今是无人问津了。又比如php的code igniter原公司停止更新后,也没有人在提了。而如今的框架火热,让人实在是选择困难,生怕使用后,过段时间就不更新了。

  4.不同公司,不同项目的框架

  每个公司可能都有自己的技术架构,这家用这个框架,那家用别的框架;甚至不同项目用不同框架。所以太过于依赖某一个框架,那么你的跳槽范围就窄了很多。

  我用过的框架有yui,angular,vue,backbone(js),code igniter, laravel(php), bootstrap(css),都挺好用,然而使用过程中就遇到过以上那么多的问题。

  建议:

  项目开始前,要对使用的第三方库和框架做好调查,甚至要有他们开发停止的心理准备和技术准备

  不要面向框架编程,面向通用组件编程:把你的代码写成通用组件,可以在不同项目,不同框架下中直接调用

  面向接口编程,而不是面向细节编程:做一个有开放接口的中间件,封装第三方库api。在项目代码中,使用中间件接口,千万不要直接使用第三方库的api。这样第三方库过期了,可以马上换库而保证项目正常使用。

  学习通用的编程技术,不要学某个技术的细节:细节靠搜索即可,把框架的通用技术和知识学好,这样不同框架都可以快速上手,快速开发了。

  短期项目,可以不考虑框架升级;长期项目要好好考虑框架升级的情况。

  写unit test:在框架升级和换框架时候,进行单元测试,保证其在不同环境下可以正常工作

  再说说开发一个长期项目过程中,选择第三方框架的一些原则:

  有LTS版本(长期维护版本)

  开发组织是可以保证长期的:社区型开发,超级公司主导的开发(google,facebook)

  有代码覆盖100%的单元测试

  有良好的技术支持,包括:良好文档,在线技术问答,有好的官方网站,bug的快速报告和快速修复

  社区大小,生态良好:使用人员多,插件开发人员多的

  github上星星多的,下载量大的(可以作为参考,却不是决定因素)

  做好以上几项,你就可以很好的避免大部分所谓过度依赖框架的问题了。