这篇文章全程文字,不带图,不带电影。但真的有可能给你带来不一样的视角;要认真看!

还有不对的地方留言评论。也希望多评论留下你的看法,这也许能帮助到我。感谢

前言

工作两年,一直都是从事App开发方面,做过原生App,混合App,公众号,小程序也偶尔写一下简单的后台接口。在开发一个App的过程中,开发原生以及混合的方式有很大不同。 在原生(java)的时候经常会尽力的去构想如何构建基类,如何抽象。代码的分层分类都井然有序的感觉。而在混合开发(前端代码)中,对封装,基类,类等等的构思十分少,仅仅是做一些类似工具类的封装。我原本以为前端是不支持继承多态之类的,但没想到我错了,这仅仅是因为我不会而已。

看完能学到什么?

这里没有具体的代码,有的仅仅是自己这两年接触的项目总结,从架构的角度尽量去思考。 无论哪种开发形式,原生App,混合App,公众号,小程序,网站等等在开发前都应该先有对整体的设计。

博主小白的看法 框架设计是从上到下去思考,而实现代码是由下往上去实现。 举个例子,当你要去完成一个开发App的项目的时候。往往需求都不是那么的明确,总有那么一些不明确,可能被修改的点。而框架的做法就是把这些问题都抽象起来,避免具体实现;也就是说构思框架的时候不要跟业务扯上关系;不过同样有说法就是,不考虑业务的框架都是shit。这也对,总之见仁见智。

开始做一个项目之前应该要考虑的事情:

所以我在刚开始思考的是:

  1. 整体框架搭建
  2. 结合业务需求进行技术选型

整体框架搭建:

APP交互分层:MVC / MVP / MVVM;最整体的代码分层,各层之间的关系。 例如MVP在其中再细分层: M:

  • core(核心实体类)
  • domain(app辅助实体交互类)
  • func(业务类)

V:

  • activity/page
  • fragment/component

P:

  • presenter

一般我会新建一层与MVP同级别的,O(other);这一层是辅助MVP能够顺利工作的。能够让MVP能够更加专心做自己只关心的是。 O:

  • base (存放base类的定义);
  • constant(全局常量定义)
  • util(工具类相关)
  • http(网络相关)
  • sql(数据库相关)
  • imageLoader(图片相关)
  • toast()
  • dialog()
  • ...

这里有很多人会有疑问,为什么toast,dialog都要作为一层?直接Toast.show这样不就好了吗?其实也行,功能照样能够实现。不过你把他定义为toast到外层,每个需要弹toast的找他。如果你的app很多地方都能做到这样的话,那说明会是一个很不错的点。譬如,你的项目经理说:那个toast有点丑,能不能把背景颜色改一改啊?只是后你就知道这样统一的出口是多么重要了,而不是散落在各个地方。举一反三...很重要

构建基类: 也就是base类的建设, BaseApplication、BaseActivity、BaseView、BasePresenter、BaseModel、BaseMvpView.... 等等。对于基类的建设有一点要注意的是,真的只放最通用的行为在里面。不要为了贪图方便而把一些基类不应该做的事情强迫基类去做,不然基类不变成gay类了。或者是这些动作不应该是该类或者该方法去做的,却为了方便贪图一时酒池肉林而纵容自己写下这该死的代码。

案例1:

BasePresenter,以及BaseMvpPresenter。BasePresenter只放最基本的,而在MVP模式中往往需要针对MVP模式区构建一个更加适用的Presenter,好多同学会把这些功能写到BasePresenter中去;这真的不太好。我们要新增BaseMvpPresenter去继承BasePresenter再完成BaseMvpPresenter该做的事情。

案例2:

关于网络请求Http的封装,Http中核心方法,request()这个方法是真正发起请求的,那么就让他只做这些如何发起请求相关的事情吧,至于后面需要控制个loading显示与否;就不要让这个方法去控制了;又或者说组装参数什么的...乱起八糟的事情就不要让人家去做,真的很烦你们这样。不然到时候改个loading的控制之后,"咦,怎么喔的传参穿错了?不可能啊根本没动过这个代码...".举一反三...很重要。。 这个话题不仅仅是针对构建基类的了,而是从框架分层--->类--->方法;都要保持这样的底线。这样满满培养好的习惯,到以后接手别人代码的时候你就会想打人了,这个时候也说明你真的很不错。

结合业务需求进行技术选型

然后就是结合业务需求去进行技术选型,像图片加载的框架呀,网络请求框架呀。其实这些我个人大多都是喜欢哪个用哪个!!! 最基本的网络请求框架:okhttp,retrofit,volley这几个肯定要知道他们之间的优缺点差异的...不需要都会用,但是要清楚他们的优缺点,能知道用这个能做哪些不能做哪些基本就可以了,这根本不影响单手敲代码的速度。

差不多可以进入真正敲代码的阶段了!!! 敬请收看下一篇:

虽然只有两年的开发经验,在一些大牛眼里看来可能觉得对框架设计怎么可能有什么见解;你说对了,但每个开发者都会经历的过程,从撸代码到思考设计。我是小白,但有一些比我更白的人他们有时可能会更愿意看到一般白的人是怎么开发的?因为更符合实际,哈哈哈。

APP开发两年的心得:App代码架构设计(1)相关推荐

  1. 短视频APP开发主要依赖于短视频SDK架构设计

    短视频 SDK 架构中主要做的一些事情,这其中最重要的就是短视频 SDK 的架构设计,包括架构设计理念.架构图.整体数据流程.模块架构设计等.今天小编就简单介绍一下短视频APP开发中,选择什么样的厂家 ...

  2. 安卓app开发方案_「安卓APP开发流程」安卓APP如何开发的?

    21世纪,智能手机走进了人们的生活,现在的智能手机的操作系统基本分为两种,一种是IOS系统(苹果系统).安卓系统,其中,安卓系统是开源的,所以很多品牌商会讲安卓包装成自己的系统,但核心还是一样的,都是 ...

  3. 在线教育培训APP开发,在线教育培训APP开发介绍

    在线教育培训APP开发,在线教育培训APP开发介绍 介绍 在线教育一直全是呈持续上升发展趋向,尤其是2020年的肺炎疫情缘故,促使在线教育的销售市场更为宽阔,在线教育app不但能为用户提供线上一对一辅 ...

  4. 华为云DevCloud管理App开发之一:Git连接华为代码托管CodeHub,iOS和Android本地和云端开发环境搭建

    目录 背景 1 华为云DevCloud端建项目 2 华为云DevCloud端建仓库 3 本地Xcode通过Git连接华为云LiOS仓库 4 本地Android Studio通过Git连接华为云LAnd ...

  5. HTML5 混合APP开发学习笔记(三)——CSS样式设计

    CSS样式设计 CSS高级特性 继承性 书写CSS样式时,子标签会自动继承父标签的某些样式,恰当地使用继承这个特性可以简化代码,降低CSS样式的复杂性 以下CSS样式不能被继承: 边框属性 边距和填充 ...

  6. android app开发_如何雇用Android App开发人员

    android app开发 You have thought of a good project for an application in android and you have a gut fe ...

  7. app开发需要多少钱?app开发价格受什么影响?

    app开发是通过功能,效果来定价格的,首先需要明确需求,才能初步定价,同一款app,不同的需求,对价格的影响非常大.不同行业制作app的功能需求也有一些差异,有的软件的功能是一个app开发的核心价值部 ...

  8. jquery实现app开发闹钟功能_商城app开发价格及功能列表

    商城app开发需要多少钱?如何快速开发商城的app呢?现在随着移动互联网开发技术的进步,不需要找专业的app开发公司,不需要等专业开发技术,使用应用公园app在线制作平台,自己能快速制作商城app的. ...

  9. APP开发从需求到产品—APP产品经理成长日记

    本篇本来打算写如何跟技术进行沟通,其实跟技术的沟通,是贯穿于整个从需求文档到产品上线.产品跟踪.迭代的过程之中的.本篇更多的是讲作者工作半年来,在app开发领域从需求文档到产品上线的过程,也希望与同行 ...

最新文章

  1. Ubuntu VSCode OpenCV 环境配置
  2. yarn的组成部分_图解YARN工作原理
  3. linux系统12,Linux操作系统12则经典应用技巧
  4. ERROR in static/js/vendor.js from UglifyJs UUnexpected token: name (Dom7)
  5. MySQL去重保留最大的那条记录(取最新的记录)
  6. 下拉默认选择_在Excel中制作二级联动下拉菜单,太有用了
  7. 年底各类年会邀请函也要美美的设计
  8. vue echarts数据变化重新渲染_vue实例创建及数据挂载渲染
  9. Java 后端自学之路
  10. FI-MM-CO T-CODE (中英文)
  11. 2020 智慧城市解决方案(智慧城市系统及相关技术)
  12. 单片机交通灯c语言实验报告,模拟交通灯单片机实验报告.doc
  13. 银行客户用户画像_客户分类、客户标签与用户画像,怎样助力转化?
  14. Windows系统盘瘦身指南
  15. Java 将数字金额转成中文大写
  16. # 后端开发技巧、常用规范
  17. 单片机的调试接口 JTAG SWD
  18. WORD转PDF时候出现空白页的解决办法
  19. 公交IC卡读写器设计指南
  20. 阅读笔记之:Multimodal learning in Loosely-organized web images-CVPR2014

热门文章

  1. SAP MM服务类采购申请里的总账科目的修改
  2. SSH连接问题:1.Software caused connection abort2.client_loop: send disconnect: Connection reset
  3. 生命如何在复杂环境中生存?信息、调控和几何结构的交织
  4. 把握芯片科技发展趋势 促进半导体产业创新突破
  5. 3D原子映射有助于研究生命的起源
  6. 从生态、业绩角度分析芯片行业
  7. 我国北斗卫星导航系统在轨卫星已达39颗
  8. 斯坦福全球AI报告:人才需求两年暴增35倍,中国机器人部署量涨500%
  9. 腾讯阿里是否开始走向没落,用新互联网大脑模型分析
  10. 汇真科技李利鹏 :人工智能的应用边界