Android开发者的自我修养

Unity(Android)支付demo,个人开发者也能实现盈利! Unity(Android)支付demo,轻松接入支付,个人开发者也能实现盈利。项目中要修改的appid要去https://bmob.cn/申请。具体文档:http://blog.youkuaiyun.com/u013589048/article/details/78332612 立即下载

前言

上一任安卓同事离职后,我接手了他留下的两个APP项目,一个是他重构刚过的,用的是MVVM架构,一个是老的,MVC架构。在后续的一些业务需求上的改动时,审视相关的代码和结构,实在是有太多地方想吐槽,尤其是老的那款APP代码,前同事刚重构的那款,代码和结构上倒是清晰,但是一些设计上还是让我维护和扩展起来头疼。

于是前一阵子花了两个月左右的时间,我将老的那款APP重构了一版,用的是MVI框架,Compose写的UI(推荐赶紧学Compose,真香)。重构过程中也学习积累了一些APP从零到一的经验吧,在这里也记录分享一下,大家一起进步。

一、架构设计方面

1. 架构选择:没有最好的,只有最合适的

作为一名合格的Android开发者,对MVC、MVP、MVVM、MVI等常用的主流架构应该都要涉猎,了解他们的流程、使用、设计初衷以及各自的优缺点,并选择合适的架构。

了解主流框架可看我的这篇文章:Android主流架构心得总结 MVC\MVP\MVVM\MVI

2. 奥卡姆剃刀定律:如无必要,勿增实体

但是当你接手了APP的代码之后,后续的开发你应该基于它原有的架构和设计的基础上,你觉得不足的地方可以做优化,但是如非必要,最好不要破坏和魔改它原有的大框架,避免引起不必要的Bug和增加后续维护的复杂度

我接触过的一些陈旧项目中,有的就是经好多人之手,各种风格的代码胡拼乱凑到一起,代码冗余度极高、且非常混乱,不仅容易出Bug,而且不好排查和维护。

3. 学习必要的常用设计模式,并理解与合理巧妙运用

写代码不要很死板,只要能够实现需求的那个效果就好,不思考代码的设计,一味的埋头苦干,不仅吃力不讨好,还把自己发展成码农了!

作为一个优秀的开发工程师,拿到需求后,第一件事肯定是要思考如何设计实现,总的目标其实无非就是:高解耦、可扩展、可测试、易维护、低冗余等等,这其中每一条都值得好好研究一番,以后在写代码的过程中可以养成良好的意识和习惯,具体可参考:架构设计原则

二、常用工具的使用技巧

掌握一些常用的辅助工具、插件、及他们的使用技巧,记住一些常用的快捷键或者快捷指令,可以极大提高工作效率和减少不必要的工作量,以下介绍一些我工作和学习过程中经常用到的一些工具及其使用技巧

Android Studio的一些使用技巧

快捷键

我只讲我用的最多的,其他的不常用的我这里不赘述,可能部分没想起来会有遗漏,可以自行查看Android Studio快捷键设置

ctrl + tab :快速切换最近的页面,也可以多次按tab连续切换
ctrl + alt + ← 或 → :可以快速切换到之前或之后浏览的地方,也可以连续切换
ctrl + F :当前文件内查找匹配的文本,可配合通配符正则查找
ctrl + shift + F:全局或指定范围查找匹配的文本,可配合通配符正则查找
双击shift :全局或指定范围查找匹配的文件或类、对象等
shift + ctrl + alt :配合鼠标左键,可以灵活实现多处同时编辑
ctrl + alt + l : 自动格式化整理代码(强迫症的福音)

插件

语言国际化批量处理 (本地化) : AndroidLocalize
版本管理辅助 : GitToolBox
代码自动补全AI辅助 : GitHub Copilot (现在是收费的了)
翻译: Translation

其他欢迎补充~

三、编码习惯与规范

学习规则,尊重规则,适应规则

Android Studio有很多帮助我们提升代码质量规范的细节,我希望大家不要随意忽视,虽然可能那只是个不起眼的黄色标记,或者Warning而已

例如:

  1. Hardcoded string “xxx”, should use @string resource 文字硬编码
  2. Should use “sp” instead of “dp” for text sizes 字体大小应该用sp
  3. Typo: In word ‘xxx’ 拼写错误
  4. Parameter ‘xxx’ is never used 冗余方法
  5. ‘xxx’ tag description is missing 缺少描述的tag
  6. Method invocation ‘xxx’ may produce ‘NullPointerException’ 空指针安全问题

诸如此类的提示还很多,我只是在老项目的代码里随便找了几个,给大家看看老项目随便一个Activity的黄标:
老项目的警告情况
这是我重构的同模块的代码,除了引入的一些经典的工具类文件,其他黄标都被我消灭掉了:
在这里插入图片描述
暂时写到这里,后续再来补充

V93000 SmarTest 8入门:从零搭建你的第一个半导体测试程序 半导体测试是芯片从设计走向量产的关键环节,而ATE(自动化测试设备)正是支撑这一环节的核心工具。理解ATE测试程序开发的基本原理,不仅需要掌握测试机台的硬件架构,还要熟悉其软件环境中的管脚映射、电平时序、测试流程等底层逻辑。V93000作为爱德万的主力平台,其SmarTest 8环境通过对象化与流程化设计,将复杂的芯片测试任务拆解为可配置、可复用的模块,极大提升了并行测试效率与调试的便利性。无论是数字逻辑芯片的功能验证,还是模拟混合信号器件的参数测量,掌握SmarTest 8的核心操作都能帮助你快速搭建出可 阅读详情

相关推荐

STM32CubeMX-电机控制2-电机相关配置部分

STM32CubeMX-电机霍尔传感器 写在前面的话:之前一直使用库函数,调程序时总会觉得是配置出现问题,要画一些时间去检查配置程序,所以目前转到了STM32CubeMX。写这些内容一方面是整理记录,因为是刚入门,所以难免出现错误,希望能得到大家指正;另一方面是因为自己一个人调试,走了很多弯路,写下来希望能给相同处境的人一些参考。 步骤一: 电机霍尔传感器接口 我目前使用的是STM32F4,电机的...

niker_co的博客 1万+

产品设计理念——让软件的使用者成为软件的设计者&如无必要勿增实体

产品设计理念一:如无必要,勿增实体 如无必要,勿增实体? “如无必要,勿增实体“”这个原理来自于奥卡姆剃刀定律(Occam's Razor, Ockham's Razor),它是由14世纪来自奥卡姆的逻辑学家威廉(William of Occam,约1285年至1349年)提出。这个原理称为“如无必要,勿增实体”,即“简单有效原理”。 它的本意是:如果有两套理论都可以解释一件事情,用那个简单的理论。空洞无物的普遍性要领都是无用的累赘,应当被无情地“剃除”。但现在大家提到“奥卡姆剃刀定律”,更多是取它的

Ariel_欢 3832

如何在Tagetik系统中抽取处理SAP系统财务数据

如何在Tagetik系统中抽取处理不同核算系统财务数据:以SAP为例,简单讲一下Tagetik对接SAP数据的基本情况

2201_75401663的博客 577

个人开发者做一款Android App需要知道的事情

在大学时, 自己是学计算机专业的,而且还和老师一起做过一年半的项目。 有时候是不是有这样的想法,做一个自己的网站、但一直未付诸行动。 2012年时, 终于付诸行动了,花了三个月,现学现卖, 熬夜通宵用PHP做了一个小网站,但后续就再没有坚持下去。  直到从电信行业转行互联网行业后,做一款属于自己的应用的的想法越来越迫切,于是今年开始便投入到Android App开发的阵营中来。 今年断断续续

hubcarl的专栏 1699

Flowable任务节点动态预测:基于任务ID与参数获取下一节点及候选分配策略

本文深入探讨了Flowable工作流引擎中任务节点动态预测功能的实现。通过解析任务ID与运行时参数,模拟流程执行路径,精准预测下一节点及候选用户/组集合,从而提升用户体验与系统透明度。核心在于利用自定义命令实现表达式求值,并深度解析候选者分配策略,确保预测结果与实际流程执行一致。

nnn11的博客 737

【电路设计实战】BUCK降压电路:从原理到PCB布局的降噪与效率优化

本文深入剖析了BUCK降压电路的工作原理,并针对其固有的开关噪声问题,提供了从核心元件选型到PCB布局的全面优化方案。文章重点探讨了电感、电容等关键元件的选型要点,强调了低ESR电容和肖特基二极管的重要性,并详细阐述了如何通过最小化功率回路、保护敏感信号线等PCB布局实战技巧,有效抑制噪声、提升效率与稳定性。

weixin_29304021的博客 219

Android个人开发者的上架应用商店流程,亲测

作为一名合格的开发者,没有几款自己的软件怎么能体现出独立开发的能力呢?我们移动开发者不像前端或者后端或者小程序一样,依附于强大的平台,想要给其他人使用给一个链接或者登陆小程序入口即可。现在设备复杂多样,我们也不能做到设备通用,不同的手机厂家都搞自己的商店,并且有自己的一套审核逻辑。并且作为个人开发者,很多应用商店为了所谓的安全性,已经不支持个人开发者了,以下是作为个人开发者,到目前为止成功上传应用商店的案例。

As_thin的博客 1万+

用 Docker 一键部署 SillyTavern酒馆 mac/windows/linux通用教程,我再也不手动折腾了!

本文介绍了如何使用 Docker 一键部署 SillyTavern 项目,适用于 Mac、Windows 和 Linux 系统。SillyTavern 是一个本地部署的大语言模型聊天界面,支持多种插件和扩展。文章详细说明了安装 Docker、拉取项目、启动容器、配置白名单、启用插件等步骤,并提供了常见问题的解决方法。通过 Docker 部署,用户可以避免繁琐的手动配置,快速搭建和运行 SillyTavern,适合希望简化部署流程的用户。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2620

Android开发者能在业余时间赚钱吗?分享自己的接私活经验及学习经验

前段时间,互联网公司京X、美X等巨头纷纷裁员,其他一些二三线公司的裁员更是家常便饭。时不时就有互联网公司裁员减薪的传闻爆出,职场人可谓是如履薄冰。加上疫情、国家政策,各大公司开始收缩招聘,致使原本岗位缩减,加剧了大环境下的内卷,许多人被裁后都待业在家,几个月找不到工作,车贷,房贷压力剧增,Android开发者亦是如此。但根据艾瑞的来看,行业的人才需求总量从2011年到现在,一直是提升的状态。从上图可以看出到2020年底的时候,整个IT行业整体都是呈递增趋势。。...

老皮的博客 1730

VLA数据采集以及训练

直到15s计时结束,弹出下面的内容,这个时候不会录制视频了,这里就是需要复位物体到初始位置,尽量保证物体的初始位置放在一样的位置,计时3s,同样根据自己的复位时间来修改(--dataset.reset_time_s=3),这里和前面录制数据的区别就是fps后面多了一个nment,可以作为一个标记,知道什么时候开始去复位而不会拍到自己的手臂。复制网址,在浏览器打开,会出现下面的窗口,依次检查每一轮是否存在问题,例如是否出现录制不完整,是否存在除了机械臂以外的其他移动物体,这些都可能会影响最终训练的效果。

weixin_45303602的博客 496

上海计算机学会2020年5月月赛C++乙组T2经济普查

中国正在以前所未有的力度推进脱贫攻坚,国家计划在2020年使得在现行标准下的贫困人口实现全面脱贫,为此,需要对居民的经济状况进行普查。 题目描述 给定一个正整数n,表示人口数量。一开始,每个居民拥有的财产记为a1​,a2​,⋯,an​,财产可能发生两种变化: 一种来源于个体,由某个居民的经济活动而产生。在某个时刻,某个居民的财产会直接变成某个数值,可能升高也可能降低。 一种来源于政策,在某个时刻,国家会对财产低于某个标准线全部的居民,实施政策支持,使得他们的财产全部正好到达标准线。 给定这些变

长春高老师编程 905

2024个人开发者做一款Android-App需要知道的事情,年薪百万在此一举

下面是辛苦给大家整理的学习路线,有需要的可以点击这里免费获取,有需要的可以点击这里免费获取[外链图片转存中…(img-KNW3HEJZ-1710745034505)]

芯_v_648374雨馨博客 526

华为的LTC(Lead to Cash,从线索到现金)流程是其销售管理体系的核心,覆盖了从发现销售线索到最终收回现金的全过程,强调端到端的业务贯通和以客户为中心的运营理念

华为LTC流程是覆盖销售全周期的管理体系,包含四大阶段:线索转机会(LTO)、机会转订单(OTO)、订单转交付(OTD)、交付转现金(DTC)。其核心采用"铁三角"团队模式(AR/SR/FR协作),通过多部门联合评审把控关键节点,实现端到端业务贯通。该流程与IPD、MTL、ITR等体系高效协同,结合iSales平台实现数字化管理,有效提升销售效率、客户满意度和资金回笼速度。

金牌架构师 1718

阿里工程师的自我修养 && 阿里Java开发手册

和你一起终身学习,这里是程序员Android本篇文章主要介绍Android开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:1.阿里工程师的自我修养关注微信公众...

程序员Android 189

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Android 面试官:“面试季面试了近百名开发者,符合要求的不到一半 ”

第一,主要依靠第三方类库,自己不了解内部实现。简历上罗列一大批开源类库,使用经验有,内部原理一无所知。简单来说imageloder怎么做缓存的,缓存算法有哪些,lru的特性是什么,为什么用linkedhashmap实现。。。基本没有能讲清楚的。第二,Java功底不足。arraylist怎么实现的,map怎么实现的,hashmap和arraymap适用场景,volatile和synchronized有什么区别,多线程如何同步。。。这些都是基础知识,不懂的大有人在。第三,虚拟机不了解,就敢说精通性能优化。

2401_84132723的博客 906

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Android 面试官:“面试季面试了近百名开发者,符合要求的不到一半 ”(1)

写到这里也结束了,在文章最后放上一个小小的福利,以下为小编自己在学习过程中整理出的一个学习思路及方向,从事互联网开发,最主要的是要学好技术,而学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯,更加需要准确的学习方向达到有效的学习效果。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!套讲解视频、实战项目源码讲义》点击传送门即可获取!**

2301_79098336的博客 351

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

开发1年的学弟问我:有没有必要阅读Android源码?(1)

今天关于面试的分享就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。最后在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司19年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。还有。

2401_84132401的博客 834

最近想读的一些书籍文章

 1.《小强的升职日记》GTD(时间管理)方面的书籍。参考网站:http://www.mifengtd.cn/    褪墨 2.《程序的自我修养》讲述程序的生命过程,也是我最想知道的。为了能够读懂这本书,需要先掌握以下内容:   1). CPU体系结构   2). 计算机体系结构   3). 汇编语言   4). 编译原理   5). 操作系统   6). C/C++语言

大傻的专栏 544

Android 架构师的自我修养

本篇 Chat 从实践经验入手,让读者了解并掌握 Android 架构师的基本知识及需要掌握的技能。 成为一个 Android 架构师,需要从知识、技能、架构三个方向去修炼。本篇 Chat 先讲一下 Android 架构师需要具备的「技术深入能力」。 其他知识会在以后的文章中分享。 本文适合中高级 Android 开发,以及想突破技术瓶颈的工程师。 相信你的收获会非比寻常。...

GitChat 646

安卓程序员的自我修养

  近期觉得技术水平进步了一点,但是又觉得远远不够,于是记录下平常看到的和听到的,以作为前进方向。   要开始某个项目了,竞品分析--金立,预言。   拉勾上面的大公司和成熟公司在招聘的时候一般都要求,熟悉数据结构和算法,熟悉面向对象和设计模式。   熟悉TCP/IP协议,具备web后端视野者优先。   熟悉Android自动化测试工具的使用和编写, 如junit、instrumentat...

weixin_33704591的博客 82

PM的自我修养——关于AndroidDesign的一些基础知识

这篇日志来自于一个问题:独立 Android 开发者如何零基础学习 UI 设计并设计出符合 Android Design 的作品?

叶与诗 1399

一位初中级进阶高级Android工作的自我修养

对于高级,就不仅限于功能和业务开发,还需要深入理解Android系统的运行原理,达到融会贯通,部分可够作为Android端架构师。如果学完以上内容,恭喜你,你已经超过90%左右的人,但是如果要再进一步,比如架构师/开发专家,那么除了理解Android的一些核心原理外,还需要具有架构设计能力,能够从更高层面看待问题,理解整个系统的设计。至于专家,那么基本上是在一个领域处于顶尖的那一批人了,很对人迷茫的原因我想还是对市场的不看好以及技术已经无法跟随市场的变化,未来不知道往哪方面提升。

老皮的博客 115

Android开发者进退两难的出路;转行还是进阶?

互联网寒冬的话题沸沸扬扬几个月了。被裁过的程序员更迷茫了,没被裁的无论是离职还是面试跳槽也变得更谨慎了。 2018年6月以来,全国上百家P2P平台接连爆雷,裁员潮在互金领域抢先发生。 2018年8月,美图公司Q2季度财报收入同比下降5.9%,净亏损1.27亿,较上年同比收窄3.4%,随即网 曝美图公司裁员消息。 2018年10月,阿里京东全面“缩招” 2018年12月,美团3分钟裁员。 201...

Android_JIE的博客 3920

Android程序员的自我修养-计算机网络篇(二)

学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!最后如何才能让我们在面试中对答如流呢?答案当然是平时在工作或者学习中多提升自身实力的啦,那如何才能正确的学习,有方向的学习呢?有没有免费资料可以借鉴?为此我整理了一份Android学习资料路线:这里是一部分我工作以来以及参与过的大大小小的面试收集总结出来的一套BAT大厂面试资料专题包,主要还是希望大家在如今大环境不好的情况下面试能够顺利一点,希望可以帮助到大家。

m0_75012072的博客 1029
上一篇: Android主流架构心得总结 MVC\MVP\MVVM\MVI
下一篇: Jetpack-Compose绘制雷达扫描动画
LiePy
博客等级 码龄7年 1927粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值