IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> Android架构师:你的业务代码,阿里巴巴二面被血虐 -> 正文阅读

[PHP知识库]Android架构师:你的业务代码,阿里巴巴二面被血虐

几乎

没有代码

可以复用

每当

看到Activity里

2000行的函数

我就

想要离职


上面,是团队中一个文艺Android程序员的自述,表达的核心观点是:几乎所有代码都写在了Activity里(不理解Activity的,暂且认为是MVC里的view层),完全没有封装和复用。

假设一个具体的例子,微信登录的界面,点击登录按钮,此时可能要执行:

(1)验证用户名密码;

(2)拉取好友列表;

(3)拉取用户信息;

(4)拉取好友信息;

(5)拉取离线消息;

(6)…

画外音:那个大月亮的画面,要卡很久。

如果把这些都写在微信“登录Activity”里,会发现一些很严重的问题:

(1)登录整个逻辑不能复用;

(2)登录过程中的每个子逻辑也无法复用;

假设产品里有一个**“离线后重新登录”的功能**,步骤与登录相同,就需要把上述在“重新登录Activity”里代码复制一遍。

又假设产品里有一个地方需要**“拉取用户信息”**,也将把“登录Activity”里“拉取用户信息”的代码复制一遍。

封装复用的道理谁都懂,拷贝代码的坏处也谁都明白,那为什么大家还这么做,代码越来越“腐烂”呢?

根据个人经验,主要是这么几点原因:

(1)早期业务压力大,APP是少数几个同学的,没有提前做规划;

(2)后期代码越来越臃肿,不敢动,一动怕影响功能,怕出问题,怕担责任;

(3)项目中,是以功能界面进行编码划分的,一个同学会同时负责MVC三部分编码,加之项目压力又大,既然是一个人写,就没必要分层了,搞多了调用反而麻烦;

(4)项目中,有个需求好像之前做过,代码一看,写在Activity里,纠结。抽象成函数?还得改别人的代码,算了,还是拷贝一份吧;

(5)…

不管历史原因,项目原因,个人的原因,大家都知道分层抽象,代码复用是正确的,那有什么方案能够将这个分层抽象落地,从后端的分层架构中是否有可借鉴的地方呢?

一个典型业务系统的后端架构如上:

(1)web-server层调用RPC接口,从service层获取数据,拼装html/json,完成数据展现;

(2)biz-service/data-service向上游提供可复用的原子接口,实现业务逻辑,并通过DAO层,从db层获取数据;

(3)db层提供数据;

APP端的分层架构不是非常相似么?

还是以登录业务为例:

(1)登录Activity有两个按钮,一个确认按钮,一个取消按钮,这两个按钮的点击,分别只能调用一个函数:

  • on_LoginConfirm_Click

  • on_LoginCancel_Click

这里相当于展现层,除了交互与展现,View层只能调用这两个函数。

(2)这两个函数的实现,是通过若干可复用的“原子业务逻辑”函数实现的:

  • 验证用户名密码:bool verifyPass(name, pass)

  • 拉取好友列表:ListgetFriendList(uid)

  • 拉取用户信息:Use rgetUserInfo(uid)

  • 拉取好友信息:ListgetUserInfo(List<f_uid>)

  • 拉取离线消息:ListgetOfflineMst(uid)

这相当于服务层,实现业务逻辑,提供封装和复用

结语

网上高级工程师面试相关文章鱼龙混杂,要么一堆内容,要么内容质量太浅, 鉴于此我整理了上述安卓开发高级工程师面试题以及答案。希望帮助大家顺利进阶为高级工程师。
目前我就职于某大厂安卓高级工程师职位,在当下大环境下也想为安卓工程师出一份力,通过我的技术经验整理了面试经常问的题,答案部分是一篇文章或者几篇文章,都是我认真看过并且觉得不错才整理出来。

大家知道高级工程师不会像刚入门那样被问的问题一句话两句话就能表述清楚,所以我通过过滤好文章来帮助大家理解。

CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》

1307页字节跳动Android面试真题解析火爆全网,完整版开放下载

错才整理出来。

大家知道高级工程师不会像刚入门那样被问的问题一句话两句话就能表述清楚,所以我通过过滤好文章来帮助大家理解。

CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》

[外链图片转存中…(img-2XyyGkxU-1631006626471)]

现在都说互联网寒冬,其实只要自身技术能力够强,咱们就不怕!我这边专门针对Android开发工程师整理了一套【Android进阶学习视频】、【全套Android面试秘籍】、【Android知识点PDF】。

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-09-08 10:26:21  更:2021-09-08 10:27:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:22:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码