今天大概看了一些别人的写的关于的android设计规范和编码习惯,觉得看了一遍并不是很有用,最好还是记下来吧

文件 java文件

  • 文件的编码格式为utf-8;

源文件的结构

  1. 许可证和版权信息
  2. package语句
  3. import语句
  4. 一个顶级类,和以上的每个部分都用一个空行隔开
    注意: import语句不要使用通配符,可以讲引用类的static final 逐一引入

类的声明

以前这块一直不知道这块怎么处理,用android studio 一直追究着代码的排版格式。这里为我提供了一种思路

类成员的顺序

类的成员的顺序,第一次分类以模块区别,比如说view的成员放在一块,静态常量放在一块的,第二次分类,以逻辑和关联性的分类,比如view可以采用自上而下的逻辑去给每个类命名和排版。总之不能用新的成员总是放在类的结尾,这样的其实是按照时间的顺序去放置类的成员的,而不是按照某种逻辑。

区块的划分

  1. 常量声明区
  2. UI控件成员变量的声明区
  3. 普通成员变量声明区
  4. 内部接口的声明区
  5. 初始化相关方法区
  6. 事件响应方法区
  7. 普通逻辑方法区
  8. 重载的逻辑方法区
  9. 发起的异步任务方法区
  10. 异步任务回调方法区
  11. 生命周期回调方法区
  12. 内部类声明区

常量的声明区

  • static final 类型的常量 所有单词大写,每个单词以_来连接 public static final
  • 全局常量:以g开头,并且依照于驼峰原则 public static
  • 公有的非静态的变量: 以p开头,并且依照于驼峰原则 public
  • 私有静态常量:以s开头,并且依照于驼峰的原则 private static final
  • 私有的非静态的变量:以m开头 private
  • 缺省的:不做处理。
//public static final ****public static final ACTION_START = "ACTION_START";// public static ****public static gString ;//public ***public int pCount;// private static final ** private static sInstance;//private ***private int mCount;

内部接口的声明区

比如一些自定义的listener

初始化的相关的方法

以onCreate为主,initView()和initData();

事件响应的方法

bindEvent();

类成员的排列的通用规则

  1. 按照先后的发生顺序
  2. 常量按照使用的先后顺序
  3. ui控件成员变量按章的layout的文件的中的先后顺序
  4. 普通成员变量按照使用的先后顺序
  5. 方法按照调用的先后顺序的排列
  6. 相关功能作为一个小区块放在一起

缩进

4个空格

列的限制

一行不超过80到100行,如果超出,需要自动换行,自动换行的对照的原则,
- 非赋值运算符处断开
- 类云算法的处断开
- 如果非要在赋值运算法断开,则在符号的末尾断开
- 方法名或者构造函数与做括号在同一行
- ,与前面的内容在同一行
- 至少缩进8个字符

垂直空白

一个空白行
1. 类里连续的成员之间:字段,构造函数,方法,嵌套类,静态初始化块,实例初始化块
2. 函数体内,语句的逻辑分组间
3. 类内的第一个成员前或最后一个成员后的空行
4. 多个连续的空行是允许的,但没有必要这样做
5. 同一成员,不同逻辑之间

具体的一些实例

枚举

枚举用逗号分隔

数组

常见的声明的方法常写成块状结构的。

变量的声明

采用第一次使用的时候,采取声明变量,不要的在函数体的开头将所有的变量都声明
另外参考的不要重复或过多声明的临时变量比如

//不要采用下面的for(int i = 0;i < 10;i++){    int j = i;}//尽量改成这样子的int j = -1;for(int i = 0;i < 10;i++){    j = i;}

switch语句

尽量讲default的语句写出,并且当出现fall throug的时候,尽量使用注释,比如

switch(count){    case 4:        count--; //do count3 while count = 4;    case 3:        doCount3();        break;    case 2:        doCount2();        break;    case 1:        doCount1();        break;    case 0:         doCount0();        break;    default:        break;}

modifiers

当出现多个限定词后,采用public protected private abstract static final transient volatile synchronized native strcitfp

命名的约定

这块我觉得最为重要,毕竟每个人其实的命名规则是不一样,这样的话就会导致代码的易读性存在一些问题,所以我们还是需要采用一些的在命名的规范的

android 整个工程的分包结构

mvc 的结构下

包的名称 作用
ui 视图层,其中可以fragment/activity等
serivce 整体结构使用的service
receiver broadcastReceiver
adapter 页面使用adapter
utils 工具类
helper/compact 用于实现的协助类或者兼容
data/db 有关数据库的类
model 模型类
bean javabean
view/widget 自定义视图类
api 接口层
constant 常量
base 基础的类,常见的有baseActivity,baseFragment等

mvp 模式

几本上和mvc差不多

包的名称 作用
api 接口层
widget 自定义视图层
model 模型层
presenter P层,用于处理activity和fragment的逻辑
view 管理的view层的逻辑的接口,activity去实现
service 服务层
receiver 广播层

类名

采用大写的驼峰原则,

类名 结尾
Activity XXXActivity
BroadcastReceiver XXXReceiver
Service XXXService
ContentProvider Provider
BaseXXX BaseXXX

资源文件的命名规范

layout

  • contentview :activity/fragment_类名
  • dialog:dialog_描述
  • popupwindow:ppw_描述
  • 列表:item_描述

drawable

  • 用途模块名逻辑名称限定词:用途可以用视图空间的简写,也可以用具体的用途,比如ic,bg_,限定词为_pressed,_small,_normal等

anim

模块名_逻辑名称:fade_in,可以省去模块名字

values

  • string :模块名_逻辑名称:friend_title
  • colors:模块名逻辑名称颜色;通用的颜色可以采用的颜色作为名字
  • styles: 模块名_逻辑名称

layout id

采用 view的简写_view的逻辑名称

常见的ui的变量声明以及id声明

控件 缩写 ui变量的声明 layout id的声明
linearLayout ll mFriendLL ll_friend
RelativeLayout rl mFriendRL rl_friend
FrameLayout fl mFriendFL fl_friend
TableLayout tl mFriendTL tl_friend
Button btn mFriendBtn btn_friend
ImageButton ibtn mFriendIBtn ibtn_friend
ImageView iv mFriendIV iv_friend
TextView tv mFriendTV tv_friend
EditText et mFriendET et_friend
ListView lv mFriendLV lv_friend
GridView gv mFriendGV gv_friend

常见的英文的单词,来用来的用途

名称 缩写
icon ic
color cl
divider di
selector sl
averager avg
background bg
buffer buf
control ctrl
delete del
document doc
error err
escape esc
increment inc
information info
initial init
image img
length len
library lib
message msg
password pwd
server srv
string str
temp tmp

更多相关文章

  1. 解決在 Android(安卓)中使用 Bitmap 造成 Out of memory 的方法~
  2. Android朝花夕拾之Debug
  3. 白话Android自定义ListView实现
  4. Android(安卓)studio代码混淆
  5. Android官方推荐全局对象传递数据
  6. Android(安卓)ID 理解
  7. Android之HAL粗解
  8. Android数据类型之间相互转换系统介绍
  9. mac下Android(安卓)Studio常用的一些快捷键

随机推荐

  1. Android的Adapter
  2. [React-Native]环境安装问题
  3. Android中的对话框AlertDialog使用技巧合
  4. Android(安卓)控件之ImageSwitcher图片切
  5. Android通过泛型来简化findViewById
  6. Android(安卓)Fragment回退栈的使用
  7. 【Android(安卓)初学】9、Activity生命周
  8. Android(安卓)Vibrator开启振动功能
  9. android计数器——基础编
  10. android 线程更新view及数据传送