-
Notifications
You must be signed in to change notification settings - Fork 0
code_style
部分参考了Google code style
尽量使用import foo.Bar 而不是import foo.。例外是使用java标准库或者测试库的时候,(java.util., java.io., etc.)(junit.framework.)
比如超过40行的代码就可以考虑是否拆分了。
在文件顶部或者使用该变量函数前面声明
- Android相关库的import
- 第三方库的import
- java和javax
- 代码块使用4个空格的缩进。不要使用tab(编辑器设置中,使用4个空格代替tab)
- 折行使用8个空格的缩进,比如
Instrument i =
someLongExpression(that, wouldNotFit, on, one, line);
上面的两条是Android Studio的默认配置,不需要调整设置。
block必须使用加上花括号,即使只有一行代码
class MyClass {
int func() {
if (something) {
// ...
} else if (somethingElse) {
// ...
} else {
// ...
}
}
}
所有的成员变量声明都不要使用加m或者s前缀的形式。
Annotation必须先于任何其他的修饰符,一个Annotation使用一行,多个Annotation使用字母顺序排列。
当使用了标记为过期的方法的时候@Deprecated必须使用
子类重写父类方法的时候,必须使用@Override
当使用@SuppressedWarning的时候,必须加上TODO,来解释为什么。例如:
// TODO: The third-party class com.third.useful.Utility.rotate() needs generics
@SuppressWarnings("generic-cast")
List<String> blix = Utility.rotate(blax);
- 有返回值的方法使用@Nullable或者@NonNullable方法标注返回值是否为空。(也可以使用Guava库的Optional类)
- 参数如果是使用的Android的resource,使用@StringRes,@DrawableRes,@LayoutRes等等标注
比如: XmlHttpRequest,getCustomerId, class Html, String url, long id
而不是写成XMLHTTPRequest, getCustomerID, class HTML, String URL, long ID
临时代码,或者暂时的解决方案,以后要修改的方案,使用TODO注释
// TODO: Change this to use a flag instead of a constant.
AndroidStudio里面可以查看所有的TODO
仅仅测试环境使用日志可以使用hugo库。
所有的日志使用Log库打印,tag和当前的类名一致
测试中的函数名使用下划线分隔,并且测试函数名字尽量使用长句,直接通过函数名就可以猜测出该测试的意图
尽可能遵守,看情况违背
以activity或fragment + 类名开头
AccountActivity 的布局-> R.layout.activity_account
对于公用的布局,看情况,比如
R.layout.viewpager_layout
2个词之间以_分割
- 控件的id
因为Android这里是强转的,编译器无法发现类型错误,所以用类似匈牙利系统命名法
TextView -> R.id.tv_xxx
Button -> R.id.btn_xxx
- 获取view
代码中尽量使用ButterKnife来获取view
@InjectView(R.id.lv_list)
public ListView listView;
- 菜单的id
全部以menu_开头,比如
R.id.menu_save
R.id.menu_close
/res/menu 文件夹下面,分别是这样:
R.menu.actionbar_menu_xxx
R.menu.contextual_menu_xxx
R.menu.popup_menu_xxx
/res/drawable 里面存放 xml 格式的图片
亮色系图片 R.drawable.xxx_light
暗色系图片 R.drawable.xxx_dark
icon以ic开头 R.drawable.ic_xxx_light
background图片以bg开头 R.drawable.bg_xxx_dark
string 资源,2个词之间以_分割
<string name="add_topic">添加话题</string>
<string name="add_topic_hint">不需要#号</string>
style资源,首字母小写,后面词首字母大写
##Preference 设置的资源
string,title 是 pref_xxx_title 这样的形式,summary 是 pref_xxx_summary
##Activity和Fragment的命名
动词+名词+Activity或者Fragment
名词+Activity
如果是 Dialog,可以省略 Fragment 或者 Activity
UpdateRemarkDialog
SearchUserFragment