这么多开源框架,该用哪个好?

2023-10-29 21:08
文章标签 框架 开源 该用

本文主要是介绍这么多开源框架,该用哪个好?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    • 疑惑问题
    • 什么样的框架不要采纳
    • 如果你的项目在从0到1的初始阶段
    • 如果你的产品在从1到N的成熟阶段
    • 纯推荐

原文链接:http://www.jianshu.com/p/f3227c7008d4
转载请注明出处:http://blog.csdn.net/sange77/article/details/51980764

疑惑问题

这么多开源框架,该用哪个好?想必这样的问题,大家都有疑惑过。我想大部分的疑惑无非以下几点:

  • 这个框架稳定吗?要是有bug怎么办?
  • 这个框架能满足我的所有需求吗?如果用到一半发现不适用该怎么办?
  • 这个框架耦合度高吗?是否能按照需求再去定制扩展?

什么样的框架不要采纳

先不看以上几点,我们先来说什么样的框架一定一定不要采纳:

  • 聚合型框架一定要放弃(比如Afinal,xUtils),why?越是大而全,越容易牵一发而动全身,而且在框架世界里没有1+1>2这一说。相反的可读性差,耦合高,难扩展。是Afinal中的图片缓存好还是fresco,Picasso等好,不言而喻了吧?
  • github上last commit超过一年以上或者issues一大堆没fix的一定不要使用。这其中会有很多坑,要是出问题了,你都不知道找谁问。相应的,我最怕别人问的问题就是:Stay,你用过xxx框架么?帮我看看这问题吧。。
  • 仿 xxx UI效果大全,请慎重使用,如果可以,多跟产品经理沟通,尽量使用Material Design设计,另外可以参考InstaMaterial。别把大量时间跟精力花在了调UI效果上。UI性能与潜在bug是最不好调试的。大多数人对touch事件,view绘制都是一知半解。

通过上述条件,基本可以pass掉60%的开源项目。技术更新还是很快的,很多以前实现复杂或者根本无解的需求在未来都能有很好的解决方案。当你好几天都没找到你想要的解决方案,不妨去做沟通,选用其他替代需求。

如果你的项目在从0到1的初始阶段

不妨先花上一周时间来做调研。这是款什么样的产品,做做竞品分析,考虑未来可能会有的扩展。根据产品业务来选择框架才是最优解。整体项目结构在未来重构的可能性非常小,所以一开始得尽可能得多去考虑扩展,不然会非常痛苦。

另外,你可以放心大胆的去尝试新出的开源lib,但凡写框架,都以简单易用为最根本目的,随着技术的推进,新出的框架也会吸收前人的经验而越来越成熟。而且用户量还很少,前期还有很长的过渡期,你有充足的时间来验证这个框架是否好用。

如果你的产品在从1到N的成熟阶段

这个时候每个框架的更换都需要慎重考虑了,在用户基数大的情况下,任何一个bug都会导致严重的后果。尽可能的采用灰度发布,小规模测试后再统一升级。

比方说,你觉得universal-image-loader不够好用,经常oom,而且下载显示速度慢,那你可以选择fresco,glide对吧。那么,如果你以前没有对图片缓存框架进行一次再封装,尽量在你换框架时做一下封装。即:别在代码中显示的调用UniversalImageLoader.display()或fresco.display(),因为这些代码被调用的地方太多了,一旦你要换框架,那么要改的地方就炒鸡多。为了以后再发生这样的问题,不妨将它们再包一层。以后就轻松些。你说对吧。

或者说,IM的消息收发,现在有那么多平台的云推送,如何选择也是个问题,如果拿不准,那么在使用之前要尽量去解耦和,别显式调用任何云推送API,自己再包装一层,这样随便你怎么换,都不需要去更改业务逻辑,只用替换云平台API就ok了。

至于类似框架之间该如何选择,其实都差不多,有一些准则,仅供参考:

  • 如果框架A依赖另外的jar比较多,谨慎使用,学习也是要成本的。
  • 如果框架B没有详细的文档,谨慎使用,理由同上。
  • 如果框架C对你目前的App影响较大,改动的地方多,那么谨慎使用。
  • 如果框架D耦合度高,不方便扩展,谨慎使用。

纯推荐

  • 网络层: Retrofit或者Volley+OkHttp,async-http-lib尽量就别用了,比较老。另外这些都需要再进一步扩展的,可以自己搜下,有用的就集成进去。
  • 数据库: GreenDao,LiteORM、 ORMLite或者Realm,要加密的话用SqlCipher
  • 图片缓存: Fresco, glide,如果集成的效果不理想,多看看配置参数是否正确
  • 工具:
    • 查内存泄漏(leakcanary)
    • 异步通知(RxJava谨慎使用)
    • 数学计算表达式(expression4j)
    • 日期处理(joda time android)

原文链接:http://www.jianshu.com/p/f3227c7008d4
转载请注明出处:http://blog.csdn.net/sange77/article/details/51980764

这篇关于这么多开源框架,该用哪个好?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/303346

相关文章

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

无需邀请码!Manus复刻开源版OpenManus下载安装与体验

《无需邀请码!Manus复刻开源版OpenManus下载安装与体验》Manus的完美复刻开源版OpenManus安装与体验,无需邀请码,手把手教你如何在本地安装与配置Manus的开源版OpenManu... Manus是什么?Manus 是 Monica 团队推出的全球首款通用型 AI Agent。Man

SpringBoot集成图片验证码框架easy-captcha的详细过程

《SpringBoot集成图片验证码框架easy-captcha的详细过程》本文介绍了如何将Easy-Captcha框架集成到SpringBoot项目中,实现图片验证码功能,Easy-Captcha是... 目录SpringBoot集成图片验证码框架easy-captcha一、引言二、依赖三、代码1. Ea

Gin框架中的GET和POST表单处理的实现

《Gin框架中的GET和POST表单处理的实现》Gin框架提供了简单而强大的机制来处理GET和POST表单提交的数据,通过c.Query、c.PostForm、c.Bind和c.Request.For... 目录一、GET表单处理二、POST表单处理1. 使用c.PostForm获取表单字段:2. 绑定到结

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核