大概这样的问题,大家都有过怀疑。在我看来,大多数疑问不外乎以下几点:
框架稳定吗?如果出现bug怎么办?
这一框架是否满足了我的所有需要?要是用到一半发现不适用怎么办?
此框架是否具有高度耦合?能否根据需求重新定制扩展项?
以上几点先不谈,我们先来看看哪些框架一定不能采用:
聚合框架必须放弃(例如Afinal,xUtils),why?愈大愈完整,愈容易被牵连,且在框架世界中没有1+1>2的说法。可读性差,耦合度高,难以扩展。在Afinal中是用图片缓存,还是用fresco,Picasso等等,不言自明?
在github上lastcommit超过一年或者issues有很多没有fix的务必不要使用。这里会有很多坑,如果出错的话,你不知道是谁问的。对此,我最害怕别人问的问题就是:Stay,你有没有用xxx框架?请把这个问题给我看一下。
仿照xxxUI效果,请谨慎使用,如有可能,请与产品经理多沟通,尽量使用MaterialDesign设计,也可参考InstaMaterial。不要花太多的时间跟精力去调整UI效果。用户界面性能和潜在的bug是最糟糕的调试。大部分人对touch事件,视图绘制了解很少。
有了上面的条件,基本上就可以把开放源码项目的60%减少。科技进步仍然很快,许多以前实现过复杂或根本没有解决的需求将来都可以得到很好的解决。如果你已经好几天没有找到你想要的解决方案,不妨去进行沟通,选择其它的需求。
您的项目是否处于0-1的初始阶段?
不如先花一个星期的时间进行调查研究。做一个竞品分析,考虑一下将来可能有哪些扩展,这是一个什么样的产品?基于产品业务的框架选择就是最优解。整个项目结构在将来被重构的可能性很小,因此首先必须尽可能多地考虑扩展,否则会很痛苦。
此外,您可以放心大胆地尝试新的开源lib,但任何以简单易用为根本目的的框架,在技术不断进步的同时,新出的框架也会吸收前人的经验,变得越来越成熟。并且用户数量还不多,前期还有很长的过渡期,您有足够的时间来检验这个框架的性能。
您的产品是否处于1-N的成熟期?
此时,每一个框架的替换都需要仔细考虑,如果用户基数大,任何一个bug都可能导致严重的后果。尽量采用灰度级发布,小尺寸测试后统一升级。
比如说,你觉得universal-image-loader不够好,经常oom,下载显示速度慢,那么你可以选择fresco,picasso。所以,如果你之前没有重新封装过图片缓存框架,试着在你更换框架时重新封装它。也就是:不要调用UniversalImageLoader.display()或fresco.display()中的代码,因为这些代码被调用的地方太多,一旦您要更换框架,那么要修改的地方就很多。为使这些问题在将来再次发生,您可能需要对它们进行更深入的研究。过一会儿就好了。是啊,没错
又或者,IM的消息接收,现在云推有很多平台,如何选择云推也是一个问题,如果拿不准,那么在使用之前要尽量去分离和,不要显式调用任何云推API,自己再包装一层,这样无论你怎么换,都不需要改变业务逻辑,只用替换云推API就可以了。
对于相似的框架之间应该如何选择,其实差不多,有些指导原则,仅供参考:
如果A框架依赖其他jar,那么小心使用,学习也是要花费成本的。
如无详细文档,请谨慎使用,原因同上。
假如框架C对你当前的应用程序有很大的影响,在哪里修改,那么要小心。
若框架D耦合度高,不便于扩展,请谨慎使用。
几乎就是这些,开源lib太多了,mark的lib,可以使用10%就很不错了,可以熟读和扩展源代码的1%,也算是一个seniordeveloper。
讲了那么多,好像什么都没有讲,为什么要写这篇文章,是同学问我要怎么选的。
假如上面的一切都不明白,那我就直截了当地告诉你怎么做。在我的项目中,几乎所有的框架都是自己写的,除了一些UI会找lib,可以自己写的基本自己动手,毕竟架构再完美也很难满足特定的需求。
下面的建议纯属建议,不代表我使用过,如果有错误,不要来指责我哈。
网际网路层:Retrofit或Volley+OkHttp,async-http-lib尽量不要使用,会更老。此外这些还需要进一步扩展,可以自己去搜索一下,有用的就整合进去。
Database:Ormlite或Realm,加密时使用SqlCipher。
Picasso图片缓存:Fresco,Picasso,如果集成并不理想,查看配置参数是否正确。
工具书:查找内存泄漏(leakcanary)的异步通知(RxJava谨慎使用)数学计算表达式(expression4j)日期处理(jodatime)
关于UI层的lib我就不多说了,自己找吧。
知难而退,遇到问题耐心等待,在写代码前多分析google,一定要把后期的重构花在前面。
关于《开源框架应该用哪一个比较好?》的相关内容,就给大家讲到这里。
本文链接地址:https://www.xiaozeseo.com/jzjc/366.html 未经允许禁止转载。