总结下android开发规范
来源:互联网 发布:淘宝玩具有什么 编辑:程序博客网 时间:2024/06/06 00:07
地址:https://github.com/Sherchen/AndroidConventions
1. AS规范
1.1 CopyRight
在Settings/Editor/CopyRight里添加一份,内容你可以在github上找一份,改下,这样每次新增文件,IDE都会自动加上CopyRight.
1.2 模板
在Settings/Editor/File and Code Templates右侧的includes/File header下修改,比如我的
/** * <pre> * author : Sherchen * e-mail : ncuboy_045wsq@qq.com * time : ${DATE} * desc : xxxx描述 * version: 1.0 * </pre> */
每创建一个新的java文件,IDE就会自动加上,不要忘记修改desc, version等。
1.3 全局管理gradle变量。
一般都是在root project下面的build.gradle的文件末尾追加,比如我的
ext { minSdkVersion = 9 targetSdkVersion = 22 buildToolsVersion = '25.0.2' compileSdkVersion = 25}
引用的时候,比如在app module下面的build.gradle,比如:
android { compileSdkVersion rootProject.ext.compileSdkVersion buildToolsVersion rootProject.ext.buildToolsVersion}
2. 工程结构
包括java层和android res层
2.1 Java层结构
我采用的是package by feature(PBF)分层方式,你可以PBF的介绍
2.2 android res层结构
为了方便阅读和模块化开发的团队分工,我把android res目录按照模块拆分成几个,使用代码如下
sourceSets { main { res.srcDirs = [ 'src/main/res',//common 'src/main/res-home',//for home module 'src/main/res-cnblog',//for cnblog module 'src/main/res-csdn', //for csdn module 'src/main/res-github', //for github module 'src/main/res-jianshu' //for jianshu module ] }}
拆分后的android res 视图如下
3. Android资源命名规范
3.1 文件命名
3.1.1 layout命名
layout的一般命名规则是,比如下面
HomeActivity
activity_home.xml
Fragment HomeTopFragment
fragment_home_top.xml
Dialog HomeUpgradeDialog
dialog_home_upgrade.xml
AdapterView Item item_csdn.xml
include(通用组件) include_list
3.1.2 drawable命名
drawable 文件的命名规范
ab_
ab_stacked.9.png
Button btn_
btn_send_pressed.9.png
Dialog dialog_
dialog_top.9.png
Divider divider_
divider_horizontal.9.png
Icon ic_
ic_star.png
Menu menu_
menu_submenu_bg.9.png
Notification notification_
notification_bg.9.png
Tabs tab_
tab_pressed.9.png
icons文件的命名规范
ic_
ic_star.png
Launcher icons ic_launcher
ic_launcher_calendar.png
Menu icons and Action Bar icons ic_menu
ic_menu_archive.png
Status bar icons ic_stat_notify
ic_stat_notify_msg.png
Tab icons ic_tab
ic_tab_recent.png
Dialog icons ic_dialog
ic_dialog_info.png
选择器状态文件的命名规范
_normal
btn_order_normal.9.png
Pressed _pressed
btn_order_pressed.9.png
Focused _focused
btn_order_focused.9.png
Disabled _disabled
btn_order_disabled.9.png
Selected _selected
btn_order_selected.9.png
3.1.3 其他文件命名
- menu 因为menu文件较少,而且都在一个menu目录下面,所以一般命名就是.xml,比如home.xml
- anim 直接命名,比如: fade_in.xml
- values 目录下面的文件,使用复数形式,比如: arrays.xml, attrs.xml, colors.xml, configs.xml, dimens.xml, strings.xml, styles.xml
3.2 文件下面的name 命名
3.2.1 layout ID命名
一般规则:, 比如android:id=”tv_home_display”,这里的what,一般使用控件单词的缩写,参考5 附录
3.2.2 color 命名
直接定义颜色值,比如
<color name="white" >#FFFFFF</color><color name="gray_light">#DBDBDB</color><color name="gray" >#939393</color><color name="gray_dark" >#5F5F5F</color><color name="black" >#323232</color>
3.2.3 dimen命名
一般规则: ,如果不需要特殊定义这个dimen在哪个模块使用,可以省略,比如
<!-- font sizes --><dimen name="font_22">22sp</dimen><!-- typical spacing between two views --><dimen name="spacing_40">40dp</dimen><!-- typical sizes of views --><dimen name="button_height_60">60dp</dimen>
3.2.4 string命名
一般规则: _,比如
<!--通用模块--><string name="loading">加载中...</string><string name="ok">确认</string><string name="cancel">取消</string><!--home模块--><string name="home_tab_hot">热点</string><string name="home_tab_find">发现</string><string name="home_tab_nearby">附近</string>
3.2.5 style命名
一般规则:.,比如
<style name="ImageView"></style><style name="ImageView.Icon"> <item name="android:padding">8dp</item></style><style name="TextView"> <item name="android:textColor">#212121</item> <item name="android:textSize">14px</item></style><style name="TextView.12"> <item name="android:textSize">12px</item></style>
4. Java规范
4.1 Java文件命名规范
类名都以UpperCamelCase
风格编写。
类名通常是名词或名词短语,接口名称有时可能是形容词或形容词短语。现在还没有特定的规则或行之有效的约定来命名注解类型。
名词,采用大驼峰命名法,尽量避免缩写,除非该缩写是众所周知的, 比如HTML
, URL
,如果类名称中包含单词缩写,则单词缩写的每个字母均应大写。
测试类的命名以它要测试的类的名称开始,以Test结束。例如:HashTest
或HashIntegrationTest
。
接口(interface):命名规则与类一样采用大驼峰命名法,多以able或ible结尾,如 interface Runnable
、interface Accessible
。
4.2 Java编码规范
4.2.1 字段(field)命名
- 类字段,包括变量和常亮
- 公有变量按 小驼峰 法命名
- 私有 & 非静态成员变量以 m 开头
- 私有 & 静态成员变量以 s 开头
- 常量以大写字母和下划线 _ 组成
- 尽量使用 类型+功能/描述的模式 ,如 mTvDisplay
private TextView mTvDisplay; //静态常量 public static final int SOME_CONSTANT = 42; //公有变量 public int publicField; //私有静态变量 private static String sSingleton; //默认变量 int mPackagePrivate; //私有变量 private int mPrivate; //继承型变量 protected int mProtected;
局部变量
局部变量名以lowerCamelCase风格编写,比起其它类型的名称,局部变量名可以有更为宽松的缩写。
虽然缩写更宽松,但还是要避免用单字符进行命名,除了临时变量和循环变量。
即使局部变量是final和不可改变的,也不应该把它示为常量,自然也不能用常量的规则去命名它。临时变量通常被取名为i、j、k、m和n,它们一般用于整型;c、d、e,它们一般用于字符型。 如:for (int i = 0; i < len ; i++)。
参数名以lowerCamelCase风格编写。 参数应该避免用单个字符命名。
4.2.2 方法命名
- 类方法采用 小驼峰 命名法
- 根据函数所完成功能命名 , 如 changView()
- 在函数头写对于函数功能、参数和返回值的注释,如:
/** * 获取两个数中最大的一个 * * @param value1 参与比较的第一个数 * @param value2 参与比较的第二个数 * @return 两个参数中最大的一个数 */ public int max(int value1, int value2) { return (value1 > value2) ? value1 : value2; }
4.3 编码习惯
4.3.1 不要忘记添加注释
/** * 获取Sim卡运营商名称 * <p>中国移动、如中国联通、中国电信</p> * @param context 上下文 * @return 移动网络运营商名称 */public static String getSimOperatorByMnc(Context context) { ---}
4.3.2 不要忘记处理异常
void setServerPort(String value) { try { serverPort = Integer.parseInt(value); } catch (NumberFormatException e) { //处理异常结果 }}//不要像下面使用Exception类捕抓异常try { someComplicatedIOFunction(); // may throw IOException someComplicatedParsingFunction(); // may throw ParsingException // phew, made it all the way} catch (Exception e) { // I'll just catch all exceptions handleError(); // with one generic handler!}
4.3.3 方法名称不要太长
4.3.4 方法参数不要太多
4.3.5 方法行数不要太多。
4.3.6 更多规范可以参考code-style
5. 附录
UI控件缩写表
常见的英文单词缩写表
参考
android官方手册
Android包命名规范
Android 开发最佳实践
Android 编码规范
安卓开发规范(updating)
Android-Code-Style
android-guidelines
——powered by Sherchen
[pan=https://github.com/Sherchen/AndroidConventions]AndroidConventions [/pan]
- 总结下android开发规范
- ANDROID 开发规范总结
- Android 开发规范总结
- ANDROID 开发规范总结
- Android开发规范总结
- Android开发规范总结
- Android开发规范总结
- Android开发规范总结
- 总结系列--Android开发规范
- MyEclipse下J2EE开发规范总结说明
- Android开发规范和架构总结
- Android开发规范和架构总结
- iOS开发总结之代码规范(下)
- 软件开发规范总结
- PHP开发规范【总结】
- 前端开发规范总结
- 后端开发规范总结
- android下jni开发总结
- 路由选择基础
- Java和C++在函数参数传递上的不同
- 滚动图
- 注意头文件规则,避免链接错误:重定义(multiple defination)
- 命令模式
- 总结下android开发规范
- 0519 G2n#W2A-A 解方程
- Python 边做边学 5 请求分析
- 脱不花:关于时间管理的几个想法
- Problems and solutions when run Jekyll on Windows
- 《机器学习》(周志华)学习笔记(二)模型评估与选择
- java解析json数组
- 计算机英语·S
- spring boot学习3之mybatis+druid+事务+PageHelper分页插件+sql打印插件整合