阿里内部偷师Android规范文档

Android 开发规范(完结版),Android多线程实现方式及并发与同步 名词,采用大驼峰命名法,尽量避免缩写,除非该缩写是众所周知的, 比如 HTML、URL,如果类名称中包含单词缩写,则单词缩写的每个字母均应大写。 类 描述 例如 Activity 类 Activity 为后缀标识 欢迎页面类 WelcomeActivity Adapter 类 Adapter 为后缀标识 新闻详情适配器 NewsDetailAdapter 解析类 Parser 为后缀标识 首页解析类 HomePosterParser 工具方法类 Utils 或 Manager 为 阅读详情

前言

一份合格的代码不应只满足于实现功能, 更应该遵循良好的规范. 遵循良好的代码规范有利于:

  • 提升程序稳定性, 减少代码隐患, 降低故障率;
  • 增强可扩展性, 大幅提高维护效率;
  • 统一标准, 提升多人协作效率;
  • 方便新人快速上手, 在项目组人员发生变动时保证项目进度;

这里梳理一下Android开发过程中需要注意的一些地方, 包括多个部分, 另外根据约束力强弱分为两类:

  • 强制: 如果不遵守会导致代码严重混乱, 后期维护复杂, 甚至会出现严重bug;
  • 推荐: 如果不遵守可能会导致代码描述不清, 理解困难, 导致功能越多维护越难的问题;

下面是规范正文

系统设计

强制:

  1. 不允许出现两段相同的逻辑块, 必须抽出为公共方法, 差异性使用参数控制, 避免修改时多处修改导致遗漏;
  2. 不允许出现两段相同的处于同一逻辑组的复杂布局, 必须抽为单独的include/merge;
  3. 不允许父类中出现子类具体方法, 如果需要的话可以父类定义抽象方法, 交由子类实现;
  4. 不允许Activity内多Fragment之间的直接沟通, 必须通过Activity中转;

推荐:

  1. 推荐使用MVP或者MVVM架构;
  2. 推荐使用Kotlin语言;
  3. 采用模块分类方式替代文件类别方式, 方便快速查找模块相关内容, 例: LoginActivity/LoginPreenter/LoginHttpRequest/LoginBean/LoginAdapter等所属同一登录模块的文件放入一个文件夹, 而不是所有activity放入一个文件夹, 所有adapter放入一个文件夹.

命名方式

强制:

  1. 不允许出现中文命名方式;
  2. java/kotlin文件使用大驼峰方式, 例: LoginActivity.kt, NewsAdapter.kt, NewsBean.java;
  3. layout/drawable/anim/style等resource文件使用小写+下划线的方式, 例: login_activity.xml, login_logo.png;
  4. 类定义使用大驼峰方式, 例: class LoginPresenter {}, class NewsBean {};
  5. 对象使用小驼峰方式, 例: LoginPresenter loginPresenter, NewsBean newsBean;
  6. 静态常量使用全大写+下划线的方式, 例: public static final boolean IS_RELESAE = true;
  7. Kotlin使用的布局中的控件id必须使用小驼峰方式, 例: android:id="@+id/tvLogin"

推荐:

  1. 文件/资源命名时采用 模块+类型 的方式, 以便迅速查找相关内容, 例如登录页面: LoginActivity.kt, login_activity.xml, login_logo.png, <string name="login_net_error">网络错误</string>, <color name="login_page_backgroud">#f3f3f3</color>
  2. java使用的布局中的id名建议使用小驼峰方式, 并且使用控件类型缩写开头, 例: android:id="@+id/tvLogin", 附录常用控件缩写:

可见性

强制:

  1. 所有新定义的类/方法, 默认写成private, 只有在其他类需要引用时再看情况标为public, protected, package-private;

推荐:

  1. java定义的父类中定义的方法如果子类重写会导致问题时, 添加final关键字;

注释相关

类/复杂或者不能从方法名字看出意图的方法必须添加注释, 当类/方法添加注释时, 必须使用此类型注释:

/**

* Created by XXX on 2019/6/19.

* 描述此类作用, 逻辑复杂的说明一下主要思路

*/

publicclassLoginPresenter{

/**

* 用于进行网络请求

* @params xxx XXX

*/

publicvoiddoLoginRequest(...){}

}

变量注释不允许使用与类/方法一致的注释形式;

方法注释中不允许出现@params, @return的参数描述错误的情况, 必须实时更新;

推荐:

  1. 一段逻辑建议使用/* */的方式;
  2. 方法/参数建议添加 @Nullable, @NotNull, @UiThread 等注解;

代码风格

此git目录下同时存有 AndroidCodeStyleSetting.jar 配置文件, 用于AndroidStudio导入后按照统一风格进行代码的格式化.

如果没有编写代码时随时格式化代码的习惯, 可以在AndroidStudio版本控制提交窗口右侧Before Commit中勾选Reformat code选项.

Android基本组件

强制:

  1. Intent通信时不允许传递超过1M的数据, 可以采用外部Presenter中转或者EventBus传递的方式;
  2. Intent隐式启动时必须检查目标是否存在, 否则会出现目标未找到崩溃: if (getPackageManager.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ ONLY) != null);
  3. Activity/Service/BroadcastReceiver内如果有耗时操作, 必须采用多线程进行处理;
  4. 应用内部发送广播时, 只能使用LocalBroadcastManager.getInstance(this).sendBroadcast(intent), 不允许 context.sendBroadcast(intent), 避免外部应用拦截;
  5. 不允许在Application中缓存数据, 全局的共享数据可以使用某presenter存储, 或者使用SharedPreference读写;
  6. Activity或者Fragment中动态注册BroadCastReceiver时,registerReceiver和unregisterReceiver必须要成对出现;

推荐:

  1. Activity#onPause/onStop中结合isFinishing的判断来执行资源的释放, 必免放在执行时机较晚的Activity#onDestroy中执行;
  2. 不要在Activity#onPause中执行耗时操作, 这样会导致界面跳转卡顿, 可以放入Activity#onStop中执行;

UI/布局

强制:

  1. 布局xml优先使用ConstraintLayout, 可以保证无嵌套的情况下完成包括部分控件同时显隐需求在内的99%的布局要求;
  2. 不允许使用ScrollView包裹ListView/GridView/ExpandableListVIew等列表View, 复杂多项式列表可以使用多ItemType进行处理;

推荐:

  1. 在Activity中显示对话框或弹出浮层时, 尽量使用DialogFragment, 而非Dialog/AlertDialog, 便于随Activity生命周期管理弹窗的生命周期;

进程/线程/消息推送

强制:

  1. 存在多进程的情况时, Application中的初始化代码要根据进程分别处理, 避免初始化不必要的业务;
  2. 新建线程时, 必须通过线程池的方式, 不允许采用new Thread的方式;
  3. Activity/Fragment中使用Handler时, 必须使用静态内部类+WeakReferences方式或者在onStop中调用handler.removeCallbacksAndMessages;

推荐:

  1. 多进程间共享数据使用ContentProvider替代SharedPreferences#MODE_MULTI_PROCESS;

文件/数据库

强制:

  1. 使用系统API获取文件路径, 避免手拼字符串, 例: android.os.Environment#getExternalStorageDirectory, Context#getFilesDir, 错误示例: File file = new File("/mnt/sdcard/Download/Album", name);
  2. 当使用外部存储时, 必须检查外部存储的可用性: Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState);
  3. 数据库Cursor使用之后必须关闭, 以免内存泄漏;

推荐:

  1. SharedPreference仅存储简单数据类型, 不要存储复杂数据, 如json数据/Bitmap编码等;
  2. SharedPreference提交数据时, 尽量使用Editor#apply, 而非Editor#commit;

图片/动画

强制:

  1. 加载大图时必须在子线程中处理, 否则会卡UI;
  2. 在Activity.onPause/onStop中关闭当前activity正在执行的动画;

推荐:

  1. Android图片建议转化为WebP格式, 可以减少APK体积;
  2. 动画尽量不要使用AnimationDrawable, 占用非常多内存;
  3. 使用ARGB_565代替ARGB_888, 减少内存占用;
  4. 当Animation执行结束时, 调用View.clearAnimation释放相关资源;

安全性

强制:

  1. 上线包必须混淆;
  2. 加解密的秘钥/盐不允许硬编码到代码中, 以防反编译获取;
  3. Https处理时必须校验证书, 不允许直接接受任意证书;
  4. 使用Android的AES/DES/DESede加密算法时, 不要使用默认的加密模式ECB, 应显示指定使用CBC/CFB加密模式;
  5. 禁止把敏感信息打印到log中;
  6. 在应用发布时必须确保android:debuggable为false;
  7. 必须利用X509TrustManager子类中的checkServerTrusted函数效验服务器端证书的合法性,
  8. 必须将android:allowbackup属性设置为false, 防止adb backup导出应用数据;
SS928评估板开发实战:从环境搭建到外设调试完整流程 嵌入式Linux开发中,评估板是验证硬件与软件方案的关键环节。开发者常需面对交叉编译工具链配置、SDK目录结构理解、系统镜像编译与烧录等一系列基础问题,而设备树、内核启动参数和外设驱动调试更是决定项目进度的核心技能。本文从开发机环境准备入手,系统梳理U-Boot、内核与根文件系统的编译方法,并深入讲解网络启动、分区烧录以及GPIO、I2C、SPI、UART、看门狗等常见外设的验证思路。针对视频应用场景,还重点剖析了MIPI摄像头接入与ISP链路调试的要点,为处理高清视频输入提供可复用的工程路径。以SS928 阅读详情

相关推荐

成功混入Alibaba内部偷师Android规范文档

前言 一份合格的代码不应只满足于实现功能, 更应该遵循良好的规范. 遵循良好的代码规范有利于: 提升程序稳定性, 减少代码隐患, 降低故障率; 增强可扩展性, 大幅提高维护效率; 统一标准, 提升多人协作效率; 方便新人快速上手, 在项目组人员发生变动时保证项目进度; 这里梳理一下Android开发过程中需要注意的一些地方, 包括多个部分, 另外根据约束力强弱分为两类: 强制:如...

weixin_44339238的博客 226

2024年安卓最新阿里内部偷师Android的开发规范文档(想进阿里的看过来!),bat面经

点击查看详细思维脑图地址;

2401_84519998的博客 332

阿里Android开发规范

阿里Android开发规范,让你的安卓代码规范起来!

成功混入阿里内部偷师Android规范文档

原文链接 免费资源网,更多免费教程、资源、模板等你来取 前言 一份合格的代码不应只满足于实现功能, 更应该遵循良好的规范. 遵循良好的代码规范有利于: 提升程序稳定性, 减少代码隐患, 降低故障率; 增强可扩展性, 大幅提高维护效率; 统一标准, 提升多人协作效率; 方便新人快速上手, 在项目组人员发生变动时保证项目进度; 这里梳理一下An...

梦想起飞的地方 351

阿里Android规范

阿里Android规范,最新版。。。。。。。。。。。。。。。。。。

阿里巴巴Android开发规范2022最新版

阿里Android开发规范,适用于android开发。

阿里内部偷师Android的开发规范文档(想进阿里的看过来!)

点击查看详细思维脑图地址;

FZBH_Q的博客 764

Materials Studio与LAMMPS联合作战:如何用msi2lmp.exe完美转换聚合物模型(含PCFF力场配置)

本文详细解析了如何利用msi2lmp.exe工具将Materials Studio中的聚合物模型高效、准确地转换为LAMMPS可识别的data文件,并重点配置PCFF力场。文章提供了从MS模型构建、文件导出到命令行转换、参数调整及转换后验证的全流程实战指南与避坑技巧,旨在帮助研究者解决模型转换中的常见问题,实现跨平台分子动力学模拟的无缝衔接。

weixin_29228781的博客 520

重磅!阿里内部偷师Android的开发规范文档

点击上方的终端研发部,右上角选择“设为星标”每日早9点半,技术文章准时送上公众号后台回复“学习”,获取作者独家秘制精品资料往期文章本文来源:小小螺丝钉原文链接:http:...

这个时代,作为程序员可能要学习小程序 421

【同花顺公式编辑教程】第3章 获取数据

学习同花顺公式编辑器,其提供的数据有量价数据以及财务数据。在本章中,我们讲解了编辑器执行代码的原理,并给出了可调用数据的汇总表。

LiaoYi2016218的博客 1万+

使用Python开发TreeATE的测试脚本常见问题

ImportError: No module named py_compile 找不到 DevLangPython3.dll 以上2个问题都是没有安装正确的Python,当前TreeATE依赖32位Python 2.7版本,暂时不支持Python 3以上版本

蓝白云的专栏 1033

android alertdialog_成功混入阿里内部偷师Android规范文档

作者:YouCil博客:https://juejin.im/post/5d098f956fb9a07eb051c51e前言一份合格的代码不应只满足于实现功能, 更应该遵循良好的规范. 遵循良好的代码规范有利于:提升程序稳定性, 减少代码隐患, 降低故障率;增强可扩展性, 大幅提高维护效率;统一标准, 提升多人协作效率;方便新人快速上手, 在项目组人员发生变动时保证项目进度;这里梳理一下A...

weixin_39918128的博客 176

IMDb影评数据集:从下载到情感分析实战指南

本文提供了IMDb影评数据集从下载、探索到情感分析建模的完整实战指南。详细介绍了数据预处理、TF-IDF向量化方法,并对比了逻辑回归、随机森林、SVM及LSTM深度学习模型在情感分析任务上的应用与效果评估,帮助读者系统掌握自然语言处理的核心流程。

weixin_29052717的博客 449

重磅!阿里内部偷师Android的开发规范文档!

前言 一份合格的代码不应只满足于实现功能, 更应该遵循良好的规范. 遵循良好的代码规范有利于: 提升程序稳定性, 减少代码隐患, 降低故障率; 增强可扩展性, 大幅提高维护效率; 统一标准, 提升多人协作效率; 方便新人快速上手, 在项目组人员发生变动时保证项目进度; 这里梳理一下Android开发过程中需要注意的一些地方, 包括多个部分, 另外根据约束力强弱分为两类: 强制: 如果不遵守...

weixin_45258969的博客 220

智能手表竞品分析与市场调研报告

本报告旨在通过调研当前主流智能手表产品的功能特点、市场表现、用户反馈、定价策略等方面,辅助我司即将立项的Aurora Watch S1产品在功能定义、目标用户、定价区间、差异化竞争等方面做出科学决策。 调研范围包括国内外中端价位主流品牌(¥199~¥999),重点关注小米、华为、荣耀、Amazfit、Redmi、Haylou 等品牌的热销型号。

hoony123的博客 7万+

Unity之Timeline教程

Unity Timeline是Unity的一种时间轴编辑器工具,用于制作和管理游戏中的动画、剧情以及事件触发。它提供了直观的界面,使得开发者可以通过拖放操作轻松创建和编辑时间轴。Activation Track:用于控制物体的激活状态。可以在轨道上添加关键帧,控制物体的激活和非激活状态。Animation Track:用于处理物体的动画。可以在此轨道上添加关键帧,编辑物体的动画状态。Audio Track:用于处理场景中的音频。可以管理音频的播放、暂停、淡入淡出等操作。

TxNet 9443

成功混入阿里内部偷师Android规范文档,【金九银十】

静态常量使用全大写+下划线的方式, 例: public static final boolean IS_RELESAE = true; Kotlin使用的布局中的控件id必须使用小驼峰方式, 例: android:id="@+id/tvLogin" 推荐: 文件/资源命名时采用 模块+类型 的方式, 以便迅速查找相关内容, 例如登录页面: LoginActivity.kt, login_activity.xml, login_logo.png, 网络错误, #f3f3f3 java使用的..

m0_66265052的博客 144

芒果YOLOv10改进31:特征融合Neck篇:改进特征融合网络 BiFPN 结构,融合更多有效特征

YOLOv10改进:特征融合Neck篇:改进特征融合网络 BiFPN 结构,融合更多有效特征

包括YOLOv5、YOLOv7、YOLOv8等模型改进 684

android alertdialog_重磅!阿里内部偷师Android的开发规范文档

前言一份合格的代码不应只满足于实现功能, 更应该遵循良好的规范. 遵循良好的代码规范有利于:提升程序稳定性, 减少代码隐患, 降低故障率;增强可扩展性, 大幅提高维护效率;统一标准, 提升多人协作效率;方便新人快速上手, 在项目组人员发生变动时保证项目进度;这里梳理一下Android开发过程中需要注意的一些地方, 包括多个部分, 另外根据约束力强弱分为两类:强制: 如果不遵守会导致代码严重混乱, ...

weixin_39855658的博客 114

基于51单片机的智能台灯设计:嵌入式程序设计实现

随着智能家居和物联网的快速发展,智能台灯作为一种典型的智能家居产品,已成为现代家庭中不可或缺的设备。传统的台灯只能提供简单的照明功能,而智能台灯不仅具备基础的照明功能,还能根据用户的需求进行自动调节,比如自动调节亮度、色温,甚至具备定时开关、远程控制等智能功能。本文将介绍如何基于51单片机设计一款智能台灯。我们将涉及硬件设计、嵌入式系统架构、传感器选择、调光控制、语音识别、远程控制等方面,详细阐述如何实现这些功能,并给出相关的代码和实现步骤。

2201_76125393的博客 836

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

android view强制重绘_成功混入阿里内部偷师Android规范文档

作者:YouCil博客:https://juejin.im/post/5d098f956fb9a07eb051c51e前言一份合格的代码不应只满足于实现功能, 更应该遵循良好的规范. 遵循良好的代码规范有利于:提升程序稳定性, 减少代码隐患, 降低故障率;增强可扩展性, 大幅提高维护效率;统一标准, 提升多人协作效率;方便新人快速上手, 在项目组人员发生变动时保证项目进度;这里梳理一下A...

weixin_29185199的博客 126

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Android最全成功混入阿里内部偷师Android规范文档,高级开发工程师面试

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。下图是我进阶学习所积累的历年腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节祝大家都能得到自己心仪工作。

2401_84537646的博客 479

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

android相同id第几个_重磅!阿里内部偷师Android的开发规范文档

前言一份合格的代码不应只满足于实现功能, 更应该遵循良好的规范. 遵循良好的代码规范有利于:提升程序稳定性, 减少代码隐患, 降低故障率;增强可扩展性, 大幅提高维护效率;统一标准, 提升多人协作效率;方便新人快速上手, 在项目组人员发生变动时保证项目进度;这里梳理一下Android开发过程中需要注意的一些地方, 包括多个部分, 另外根据约束力强弱分为两类:强制: 如果不遵守会导致代码严重混乱, ...

weixin_29605669的博客 73

2024年Android最全阿里内部偷师Android的开发规范文档(想进阿里的看过来!)(1),2024年最新头条面试后多久给结果

总之啊,家里没矿的同学们,如果你们想以后的日子过得好一些,多想想你们的业余时间怎么安排吧;技术方面的提升肯定是重中之重,但是技术外的一些“软实力”也不能完全忽视,很多时候升职确实是因为你的技术足够强,但也与你的“软实力”密切相关在这我也分享一份大佬自己收录整理的Android学习PDF+架构视频+面试文档+源码笔记,还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料这些都是我闲暇还会反复翻阅并给下属员工学习的精品资料。

2401_84545339的博客 977
上一篇: AndroidStudio修改项目名称
下一篇: Android利用NotificationListenerService监听获取通知栏使用权,统计微信加好友功能
秋天不落叶-
博客等级 码龄13年 65粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值