文章目录
  1. 1. 命名规则
    1. 1.1. 包命名
    2. 1.2. 类和接口命名
    3. 1.3. 方法的命名
    4. 1.4. 变量的命名
    5. 1.5. 常量的命名
    6. 1.6. 异常的命名
    7. 1.7. 布局的命名
    8. 1.8. ID的命名
    9. 1.9. 图片的命名
    10. 1.10. 其他资源命名
  2. 2. 注释
    1. 2.1. 文件注释
    2. 2.2. 类注释
    3. 2.3. 方法注释
    4. 2.4. 域变量和常量注释
    5. 2.5. 其他注释
    6. 2.6. XML注释
  3. 3. 分享与支持

来源:JiongBull’s Blog
微博:@JiongBull
GitHub:JiongBull

  • 开始之前请详细阅读并遵守Android Developer代码规范
  • 不要使用拼音命名,除非英文也使用拼音拼写
  • 名称应简洁而富于描述,使用完整单词,避免使用缩写(除非该缩写被更广泛使用,例如URL、HTML)
  • 如果使用英文来注释,请遵循英文写作习惯,标点符号后空一格,避免句子紧凑
  • 颜色色值的字母必须全部大写

命名规则

包命名

包名由小写的字母组成,默认以com.jiongbull.jlog开头,然后接上根据功能划分的模块名。

com.jiongbull.jlog.util
com.jiongbull.jlog.printer

类和接口命名

名称的首字母需要大写,如果由多个单词组成,那么每个单词的首字母需要大写,其他字母小写。

class LoginActivity
interface OnClickListener

方法的命名

采用驼峰命名法来命名。

public String getName()
public boolean isExist()

变量的命名

采用驼峰命名法命名。

  • 非公共的、非静态的域变量用m前缀
  • 静态域变量用s前缀
  • 集合类型的变量使用复数形式,若多种集合类型的变量存储的是相同类型的对象,除了根据功能区分,也可以简单通过集合类型来区分
1
2
3
4
5
6
7
8
9
10
public class User {
private int mId;
private static User sUser;
String mName;
protected int mAge;
public int level;
public List<Company> companies;
public List<Score> listScores;
public Score[] arrScores;
}

常量的命名

常量需要声明为static final形式,组成名称的单词必须全部大写,单词之间用下划线隔开。

private static final int FADE_IN_TIME = 200;

异常的命名

名称必须以Exception结尾。

NullPointerException

布局的命名

name是模块的名称或功能的描述,单词必须全部小写,单词之间用下划线隔开。

类型 模板 事例
Activity activity_name.xml activity_main.xml
Fragment fragment_name.xml fragment_ad.xml
Tab tab_name.xml tab_home.xml
Dialog dialog_name.xml dialog_login.xml
ListItem item_name.xml item_contact.xml

ID的命名

组成名称的单词必须全部小写,单词之间用下划线隔开,名称不需要复杂的层级定位,只需要准确描述所代表控件的功能作用即可,通常我们在名称前使用控件类型的缩写前缀来避免重复起名的麻烦。

name是模块的名称或功能的描述。

类型 模板 事例
TextView tv_name.xml tv_title.xml
EditText et_name.xml et_mail.xml
RelativeLayout rl_name.xml rl_login.xml
LinearLayout ll_name.xml ll_login.xml

控件类型缩写对照表

控件类型 源文件中缩写 资源文件中缩写
Button Btn btn
ImageButton Ibtn ibtn
RadioButton Rbtn rbtn
ToggleButton Tbtn tbtn
CheckBox Cb cb
TextView Tv tv
EditText Et et
ImageView Iv iv
ListView Lv lv
ProgressBar Pb pb
ScrollView Sv sv
RelativeLayout Rl rl
LinearLayout Ll ll
TableLayout Tl tl
FrameLayout Fl fl

图片的命名

name是模块的名称或功能的描述。

图片名称一般由模块名称/功能描述 + 后缀组成,后缀是可选的。

前缀 描述 示例
ic_ 图标 ic_launcher.png
bg_ 背景图片 bg_title.png
sl_ 状态图片 sl_button.xml
后缀 描述 示例
普通状态 login.png
_p 按压状态 login_p.png
_c 选中状态 login_c.png
_d 不可用状态 login_d.png

其他资源命名

遵循见名知意的原则,组成名称的单词必须全部小写,单词之间用下划线隔开。

<string name="welcome">欢迎</string>
<color name="white">#FFFFFF</color>

注释

养成良好的注释习惯,对提升自己的编程能力和团队合作能力有很大的益处。

文件注释

一般来说是版权声明。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/*
* Copyright JiongBull 2016
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

类注释

在类的开头添加类信息的描述.

1
2
3
4
5
/**
* 登录页.
*/

public class LoginActivity
}

方法注释

一般情况下需要为每个非私有方法添加注释,包括方法的功能描述,参数信息、返回值、异常信息等。

例外情况:

  • 见名知意的方法(起名一定要慎重、多花点时间也是值得的)
  • 约定俗成的方法,例如IDE generate产生的get/set方法
1
2
3
4
5
6
7
8
/**
* 获取异常栈信息,不同于Log.getStackTraceString(),该方法不会过滤掉UnknownHostException.
*
* @param t {@link Throwable}
* @return 异常栈里的信息
*/

private static String getStackTraceString(Throwable t) {
}

域变量和常量注释

1
2
3
4
5
/** 日志的扩展名. */
public static final String LOG_EXTENSION = ".log";

/** 打印机. */
private Printer mPrinter;

其他注释

单行注释

view.setImageResource(defaultImageResId); // 无图片显示默认图片

区块注释

1
2
3
4
5
6
7
8
9
10
 /* 网络图片添加渐变动画 */
Resources resource = mContext.getResources();
final TransitionDrawable transitionDrawable =
new TransitionDrawable(new Drawable[] {
new ColorDrawable(android.R.color.transparent),
new BitmapDrawable(resource, bmpResponse)
});
view.setBackgroundResource(defaultImageResId);
view.setImageDrawable(transitionDrawable);
transitionDrawable.startTransition(RequestManager.FADE_IN_TIME);

XML注释

1
2
3
4
 <!-- Base application theme. -->
<style name="AppTheme" parent="android:Theme.Holo.Light.NoActionBar">
<!-- Customize your theme here. -->
</style>

分享与支持

  • 如果这篇文章对你有帮助,请分享下面的链接让更多人受益。
  • 更多支持,请点这里
文章目录
  1. 1. 命名规则
    1. 1.1. 包命名
    2. 1.2. 类和接口命名
    3. 1.3. 方法的命名
    4. 1.4. 变量的命名
    5. 1.5. 常量的命名
    6. 1.6. 异常的命名
    7. 1.7. 布局的命名
    8. 1.8. ID的命名
    9. 1.9. 图片的命名
    10. 1.10. 其他资源命名
  2. 2. 注释
    1. 2.1. 文件注释
    2. 2.2. 类注释
    3. 2.3. 方法注释
    4. 2.4. 域变量和常量注释
    5. 2.5. 其他注释
    6. 2.6. XML注释
  3. 3. 分享与支持