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

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

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

这里梳理一下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, 网络错误, #f3f3f3

  2. java使用的布局中的id名建议使用小驼峰方式, 并且使用控件类型缩写开头, 例: android:id=“@+id/tvLogin”, 附录常用控件缩写:

可见性

强制:

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

推荐:

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

注释相关

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

/**

  • Created by XXX on 2019/6/19.
  • 描述此类作用, 逻辑复杂的说明一下主要思路
    /
    public class LoginPresenter {
    /
    *
  • 用于进行网络请求
  • @params xxx XXX
    */
    public void doLoginRequest(…){}
    }

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

方法注释中不允许出现@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必须要成对出现;

推荐:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

总结

【Android 详细知识点思维脑图(技能树)】

image

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

详细整理在GitHub:Android架构视频+BAT面试专题PDF+学习笔记​

幅有限,这里以图片的形式给大家展示一小部分。

[外链图片转存中…(img-2RLYWCv0-1710701784398)]

详细整理在GitHub:Android架构视频+BAT面试专题PDF+学习笔记​

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

  • 18
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值