[关闭]
@zongwu 2016-10-31T06:43:37.000000Z 字数 6277 阅读 414

Android编码规范

团队协作


前言

本文适用范围:已参加项目开发的人

写这篇文章的目的是为方便地对代码进行管理,让整个团队的代码规范化。这里的部分规定可能和你在其他地方看到的不一样,但还是请遵守这些规则。

编码规范是泯灭程序猿个性的一项制度,但对于整个团队而言,却是一件利器。

设置 AndroidStudio的 CodeStyle

样式文件,请到/BitTorrent Sync/技术部/代码规范/android.xml自行查找。

项目结构规范

java/package-name/
../app 实现业务逻辑
../libs 对接第三方服务(内部、外部均可)
../tools 开发使用的小工具(如自动换算dimens)

类的命名

方法命名

命名法则:言简意赅、无二义性。

变量命名

在Java中命名变量:

命名规则:{权限控制符}+{所属功能块}+{功能具体描述}+{类型}

  1. // 举例如下:
  2. protected Button mLoginCommitButton;
  3. private Button iRegisterVerifyButton;
  4. public User user;
  5. public static Wallet sWallet;
  6. public static final String BUNDLE_KEY_LOGIN_ID = "key_login_id";

权限控制符

private 变量命名为:mLoginButton,添加m前缀。
protected/package 变量命名为:mLoginButton,添加m前缀。
public 变量命名为:loginButton,无前缀。

局部变量

方法内的局部变量以_作为前缀,如:“_user”。

静态变量

static 变量命名为:sInstance,,添加s前缀。(忽略private/protected/public规则影响)
static final 变量命名为:{类型}+{功能描述}+{业务描述},如:BUNDLE_KEY_LOGIN_ID;(忽略private/protected/public规则影响)

节点 命名
SharedPreferences PREF_
Bundle BUNDLE_
Fragment Arguments ARGUMENT_
Intent Extra EXTRA_
Intent Action ACTION_
... ...

所属功能块及具体功能描述

按照业务逻辑划分的功能块;

类型

在XML中命名变量

在XML中定义的控件命名为: {控件类型}+{所属功能块}+{功能具体描述};
举例:textview_toolbar_title

控件 缩写 控件 缩写
TextView textview EditText edittext/建议全拼/
Button button ImageButton ibutton/若特长可省略第一个单词可简写/
ImageView imageview ListView listview
RadioGroup radio RadioButton rbutton
ProgressBar progressbar SeekBar seekbar
CheckBox checkbox Spinner spinner
省略 省略 省略 省略

布局命名

资源文件命名(res)

dimens

  1. <dimen name="_font_title_large">@dimen/text_size_24</dimen>
  2. <dimen name="_font_title">@dimen/text_size_20</dimen>
  3. <dimen name="_font_midtitle">@dimen/text_size_18</dimen>
  4. <dimen name="_font_subtitle">@dimen/text_size_17</dimen>
  5. <dimen name="_font_head">@dimen/text_size_15</dimen>
  6. <dimen name="_font_text">@dimen/text_size_14</dimen>
  7. <dimen name="_font_annotation">@dimen/text_size_12</dimen>
  1. <dimen name="text_size_8">8sp</dimen>
  2. <dimen name="text_size_10">10sp</dimen>
  3. <dimen name="text_size_11">11sp</dimen>
  4. <dimen name="text_size_12">12sp</dimen>
  5. <dimen name="text_size_13">13sp</dimen>
  6. <dimen name="text_size_14">14sp</dimen>
  7. <dimen name="text_size_15">15sp</dimen>
  8. <dimen name="text_size_16">16sp</dimen>
  9. <dimen name="text_size_17">17sp</dimen>
  10. <dimen name="text_size_18">18sp</dimen>
  11. <dimen name="text_size_20">20sp</dimen>
  12. <dimen name="text_size_22">22sp</dimen>
  13. <dimen name="text_size_24">24sp</dimen>

numerics.xml

用于定义与单位(sp/px/dp等)无关的数值类型。

  1. <item name="card_scale_rate" format="float" type="dimen">0.7</item>
  2. <item name="card_scale_rate_origin" format="float" type="dimen">1.0</item>

styles.xml

  1. <!-- FONT -->
  2. <style name="Font"/>
  3. <style name="Font.Accent" parent="Font"/>
  4. <style name="Font.Accent.High">
  5. <item name="android:textColor">@color/text_accent_high</item>
  6. </style>
  7. <!-- 文章标题 字体更大 -->
  8. <style name="Font.Accent.High.TitleLarge.Bold" parent="@style/Font.Accent.High">
  9. <item name="android:textSize">@dimen/_font_title_large</item>
  10. <item name="android:textStyle">bold</item>
  11. </style>
  12. <!-- 文章标题 -->
  13. <style name="Font.Accent.High.Title.Bold" parent="@style/Font.Accent.High">
  14. <item name="android:textSize">@dimen/_font_title</item>
  15. <item name="android:textStyle">bold</item>
  16. </style>
  17. <!-- 一级标题 -->
  18. <style name="Font.Accent.High.Subtitle.Bold" parent="@style/Font.Accent.High">
  19. <item name="android:textSize">@dimen/_font_subtitle</item>
  20. <item name="android:textStyle">bold</item>
  21. </style>
  22. <!-- 正文 -->
  23. <style name="Font.Accent.High.Subtitle.Normal" parent="@style/Font.Accent.High">
  24. <item name="android:textSize">@dimen/_font_subtitle</item>
  25. <item name="android:textStyle">normal</item>
  26. </style>
  27. <!-- 二级标题 -->
  28. <style name="Font.Accent.High.Head.Normal" parent="@style/Font.Accent.High">
  29. <item name="android:textSize">@dimen/_font_head</item>
  30. <item name="android:textStyle">normal</item>
  31. </style>
  32. <!-- 三级标题 -->
  33. <style name="Font.Accent.High.Text.Normal" parent="@style/Font.Accent.High">
  34. <item name="android:textSize">@dimen/_font_text</item>
  35. <item name="android:textStyle">normal</item>
  36. </style>
  37. <!-- 注释 强调(会员首页检测指标) -->
  38. <style name="Font.Accent.High.Annotation.Normal" parent="@style/Font.Accent.High">
  39. <item name="android:textSize">@dimen/_font_annotation</item>
  40. <item name="android:textStyle">normal</item>
  41. </style>
  42. <!-- 重要性中等的文本颜色,如简介、地址和联系方式等 -->
  43. <style name="Font.Accent.Mid" parent="Font.Accent">
  44. <item name="android:textColor">@color/text_accent_mid</item>
  45. </style>

colors.xml && colors_basic.xml

colors_basic.xml

  1. <!-- 灰度色阶模板-->
  2. <color name="_grey_0">#FFFFFF</color>
  3. <color name="_grey_50">#FAFAFA</color>
  4. <color name="_grey_100">#F5F5F5</color>
  5. <color name="_grey_200">#EEEEEE</color>
  6. <color name="_grey_300">#E0E0E0</color>
  7. <color name="_grey_400">#BDBDBD</color>
  8. <color name="_grey_500">#9E9E9E</color>
  9. <color name="_grey_600">#757575</color>
  10. <color name="_grey_700">#616161</color>
  11. <color name="_grey_800">#424242</color>
  12. <color name="_grey_900">#212121</color>
  13. <color name="_grey_1000">#000000</color>

colors.xml

  1. <!--文本-->
  2. <color name="text_white">@color/_white</color>
  3. <color name="text_hint">@color/_grey_300</color>
  4. <color name="text_band">@color/_band</color>
  5. <color name="text_accent_high">@color/_accent_high</color>
  6. <color name="text_accent_mid">@color/_accent_mid</color>
  7. <color name="text_accent_low">@color/_accent_low</color>
  8. <color name="text_accent_warn">@color/_accent_warn</color>

Git-Flow 开发规范

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注