Android开发编码规范_Android教程
安卓编码规范
安卓编码开发文档作者:完成日期:签收人:签收日期:版本历史目录目录 (3)1 概述 (4)1.1 编写目的 (4)1.2 预期读者 (4)1.3 适用范围 (4)2 命名规范 (4)2.1 基础规范 (4)2.2 包(package) (4)2.3 类(class) (5)2.4 接口(interface) (5)2.5 方法(methods) (5)2.6 变量(variables) (5)2.7 常量(Constants) (5)2.8 资源文件(Resource) (5)2.9 布局ID (6)3 格式规范 (6)4 注释规范 (7)5 文件规范 (7)1 概述1.1 编写目的本文描述安卓开发过程中有关包、类、接口、方法、变量、常量、资源等命名方式,以及编码格式、注释格式等规则,用于指导部门内的日常开发。
1.2 预期读者智慧应用部所有成员。
1.3 适用范围部门内所有安卓产品的开发任务。
2 命名规范2.1 基础规范1、基础原则为命名要足够长以便能表达其含义,并且要足够短以便防止冗长。
2、不使用拼音。
英文单词尽量不擅自缩写,除非缩写是约定俗成的,比如html、url等。
如果单词过长,可适当缩写,但要保留单词原意。
3、不使用难懂的名称,比如xxk8等4、正规的组织名称因使用其官方全称或简称。
比如福建农信应使用fjrcu而不是fjnx,天诚应该使用techshino而不是tc。
2.2 包(package)包名全部小写,连续的单词只是简单的连起来,不使用下划线,采用反域名规则。
一般包名采用4级:一级为com;二级为centerm;三级为应用程序名,比如keypad,或者为通用名,比如common;四级为模块名,比如activity,bean,service等。
2.3 类(class)类名一般为英文名词连接,采用大驼峰命名法。
每个单词首字母为大写,比如KeypadActivity。
如果是继承类,应该以父类名为结尾,比如XxxActivty,或者XxxService,或者XxxBroadcast。
android 编程规范
1.编程原则1.1 为方法和类赋予表义性强的名字为了使代码更加容易理解,最容易的方法之一是为你的方法赋予表义性强的名字。
函数名DoIt、GetIt的可读性很难CalculateSalesTax、 RetrieveUserID 相比。
由缩写方法名组成的代码很难理解和维护,没有理由再这样做了。
给方法正确的命名,可使程序工程的调试和维护工作大大的改观。
请认真对待方法命名的工作,不要为了减少键入操作量而降低方法的可理解度。
实际应用举例:1) 给方法命名时应大小写字母混合使用。
如果句子全使用大写字母,那么阅读起来就非常困难,而大小写字母混合使用的句子,阅读起来就很容易。
2) 定义方法名时不要使用缩写。
如果你认为应用程序中的某些工程应使用缩写,那么请将这些情况加上注释,并确保每个人在所有时间内都使用这些缩写。
决不要在某些方法中对某些单词进行缩写,而在别的方法中却不使用缩写。
1.2 为每个方法赋予单个退出点1.3 创建方法时,始终都应显式地定义它的作用域。
1) 如果你真的想创建一个公用方法,请向代码阅读者说明这一点。
2) 通过为每个方法赋予一个明确定义的作用域,可以减少代码阅读者需要投入的工作量。
应确保你为方法赋予最有意义的作用域。
如果一个方法只被同一类中的另一个方法调用,那么请将它创建成私有方法。
如果该方法是从多个类中的多个方法中调用,请将该说明为公用方法。
1.4 用参数在方法之间传递数据应尽量避免使用类变量。
一般来说,变量的作用域越小越好。
为了减少类变量,方法之一是将数据作为参数在不同方法之间传递,而不是让方法共享类变量。
1) 为每个参数指定数据类型。
2) 始终要对数进行检验,决不要假设你得数据没有问题。
程序员常犯的一个错误是在编写方法时假设数据没有问题。
在初始编程阶段,当编写调用方法时,这样的假设并无大碍。
这时你完全能够知道什么是参数的许可值,并按要求提供这些值。
但如果你不对参数的数据进行检验,那么下列情况就会给你带来很大麻烦:另外某个人创建了一个调用方法,但此人不知道允许的值;你在晚些时候添加了新的调用方法,并错误的传递了坏数据。
android代码规范
android代码规范一、命名规范1.1包命名采用反域名命名规则,全部使用小写字母。
一级包名为com,二级包名为xx(可以是公司名),三级包名根据应用进行命名,四级包名为模块名或层级名。
1.2类命名类名是个名词,采用大小写混合的方式,每个单词的首字母大写。
尽量使类名简洁而富于描述。
使用完整单词,或约定成俗并且使用广泛的缩写词。
继承自系统组件类的命名,后缀必须明确表示出系统组件的类别,Activity类后缀使用Activity,Service类后缀使用Service,BroadcaseReceive类后缀使用Receiver,ContentProvider使用Provider。
1.3接口命名命名规则与类一样采用大驼峰命名法,多以able或ible结尾,如interface Runn able,interface Access ible。
1.4方法命名方法名是一个动词或者动名词结构,采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写,即驼峰命名规则。
以它做什么来命名,而不是以它怎样做命名。
1.5变量命名方式非 public 的、非 static 的全局变量字段名称以 m 开头,其它字段以小写字母开头。
第一个单词的首字母小写,其后单词的首字母大写。
变量名不应以下划线或美元符号开头,尽管这在语法上是允许的。
变量名的选用应该易于记忆,即能够指出其用途。
尽量避免单个字符的变量名,除非是一次性的临时变量。
常用的变量英文单词缩写:1.6常量命名只能包含字母和“_”,字母全部大写,单词之间用“_”隔开,例如:static final int MIN_WIDTH =4;static final int MAX_WIDTH =999;static final int GET_THE_CPU =1;1.7资源文件全部小写,采用下划线命名法,加前缀区分命名模式:activity名称_逻辑名称/common_逻辑名称如果有多种形态如按钮等除外如btn_xx.xml(selector)1.8资源布局文件命名layout中使用的所有资源(如drawable,style等)命名必须以全部单词小写,单词间以下划线分割,并且尽可能的使用名词或名词组,即使用模块名_用途来命名。
浅谈Android编码规范及命名规范
浅谈Android编码规范及命名规范前言:目前工作负责两个医疗APP项目的开发,同时使用LeanCloud进行云端配合开发,完全单挑。
现大框架已经完成,正在进行细节模块上的开发抽空总结一下Android项目的开发规范:1、编码规范2、命名规范注:个人经验,经供参考--------------------------------------------------------------------------------------------------------------------------一、Android编码规范1、学会使用string.xml文件在我看来,当一个文本信息出现的次数大于一次的时候就必须要使用string.xml比如一个保存按钮,不规范写法:复制代码<Buttonandroid:id="@+id/editinfo_btn_save"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="保存"/>复制代码这里给它的文本内容设置为"保存",那么一个app中所有的保存按钮都这样写。
当有一天要修改需求了,要求把“保存”文字改成“提交”,那么我们只能去一个个布局文件中修改,岂不浪费大量时间又可能会存在漏掉修改的情况。
规范写法:复制代码<Buttonandroid:id="@+id/editinfo_btn_save"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/save"/>复制代码而在string.xml文件中:<string name="save">保存</string>这种写法,往后需要修改,只需要在string.xml文件中修改一行代码便实现了整个APP的该文本内容修改。
Android编程规范
Android编程规范1.书写规范1.1.缩进不要使用T ab,用4个空格代替不同人的开发工具中T ab可能代表不同的长度,而空格总是确定的。
1.2.为注释和代码建立最大的行长度,100个字符一般会把左边的代码和右边的代码同时打开,各占屏幕的一半。
限制长度可以避免左右滚动编辑器。
1.3.换行规则当一个表达式无法容纳在一行内时,可以依据如下一般规则断开之:在一个逗号后面断开在一个操作符前面断开宁可选择较高级别(higher-level)的断开,而非较低级别(lower-level)的断开 新的一行应该与上一行同一级别表达式的开头处对齐如果以上规则导致你的代码混乱或者使你的代码都堆挤在右边,那就代之以缩进4个空格。
1.3.1.示例以下是断开方法调用的一些例子:以下是两个断开算术表达式的例子:以下是两个缩进方法声明的例子:if语句的换行通常使用4个空格的规则:这里有三种可行的方法用于处理三元运算表达式:1.4.自动换行为8个空格1.5.使用空行让代码的结构清晰空行将逻辑相关的代码段分隔开,以提高可读性。
下列情况应该总是使用两个空行:一个源文件的两个片段(section)之间类声明和接口声明之间下列情况应该总是使用一个空行:两个方法之间方法内的局部变量和方法的第一条语句之间块注释或单行注释之前一个方法内的两个逻辑段之间,用以提高可读性1.6.一个方法尽量不要超过40行1.7.限制变量的权限到最小1.8.花括号不要单独一行,和它前面的代码同一行1.9.判断语句1.10.如果代码是暂时的、短期的解决方案或够用但不够完美的使用TODO注释:1.11.一行声明一个变量因为这样有利于写注释1.12.数据库语句关键词大写数据库的关键词有:SELECT、ORDER BY、GROUP BY、FROM、WHERE、UPDATE、INSERT INTO、SET、BEGIN、END1.12.1.示例2.命名规范2.1.工程命名规范2.1.1.命名规范描述+App2.1.2.示例2.2.包命名规范2.2.1.命名规范全部小写。
软件学院_Android编码规范
《Android编码规范》Android课程组版本2.0文档提供:Android课程组作者:武永亮文档说明:本规范应用于Android课程讲解及项目开发中,参考《Java编码规范》。
此规范在开发和使用过程中如有需要修改或改进的地方请随时联系武永亮进行完善和修改。
目录一、类及方法命名 (4)1.1 命名参考匈牙利命名规约 (4)1.2 针对Android开发,变量名中缩写的含义 (5)1.3 XML布局文件中,控件的id命名 (5)1.4 在XML布局文件中的单位 (5)二、常量的定义 (6)三、注释 (7)3.1 块注释(block Comments) (7)3.2 单行注释(Single-Line Comments) (7)3.3 行尾注释(End-Of-Line Comments) (7)3.4 文档注释 (8)3.5 类文件开始处 (8)3.6 方法开始处 (8)3.7 一般需要注释的内容 (9)四、表达式和语句 (9)4.1 if, if-else,if-elseif语句(if, if-else, if else-elseif Statements) (9)4.2 for语句(for Statements) (10)4.3 while语句(while Statements) (10)4.4 do-while语句(do-while Statements) (10)4.5 switch语句(switch Statements) (10)4.6 try-catch语句(try-catch Statements) (11)五、XML文件命名规范 (11)5.1 文件名命名规范 (11)5.2 xml文件中的注释格式 (12)5.2.1 文件开始时的注释 (12)5.2.2 大的分块区域(如RelativeLayout,LinearLayout)前的注释 (12)5.2.3 部件(如Button、EditText)前的注释 (12)5.3 代码中的缩进和对齐 (13)5.3.1 组件 (13)5.3.2 整体代码格式 (13)六、Java文件分包 (16)七、Java文件命名规范 (16)7.1 UI类 (16)7.2 Adapter类 (16)7.3 domain类 (16)一、类及方法命名1.1 命名参考匈牙利命名规约类,接口●类的名字应该使用名词。
android项目编码规范
android项目编码规范一、编写目的编写此文档的目的是为了规范项目开发人员的编码风格,使项目工程的整体编码风格保持一致,便于其他开发人员的阅读与管理。
二、命名规则1.Class命名:名称+类型;如LauncherActivity、OrderModel。
2.非公有,非静态字段命名以m开头,单词首字母大写,其余字母小写。
3.静态字段命名以s开头,单词首字母大写,其余字母均小写。
4.方法的参数名称,以小写字母开头。
5.方法的命名:方法名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头。
6.public static final 字段(常量) 全部大写,并用下划线连起来,采用类型+名称的方式;如PAY_TYPE_BANK、KEY_EXTRA_BRAND。
7.资源文件命名:全部小写,单词间用下划线分隔,采用模块+名称方式;如icon_about.png、address_edit.png、activity_order.xml。
8.布局文件中的id命名:view缩写_模块名称_view的逻辑名称。
三、代码的风格规则1.注释/Java文档:使用标准样式书写;2.简短的方法:不要写超大的方法;3.成员变量:在该文件的顶部,或者紧接在使用它们的方法的前面;4.局部变量:限制作用域;5.缩进排版:4个空格,不使用制表符(tab)。
用8个空格作为换行后的缩进,包括函数调用和赋值;6.花括号:开括号不要独占一行,它们紧接着上一行书写;7.缩写词:缩写词命名如下:XmlHttpRequest, getUrl()等等;8.公共方法提取工具类,工具类根据其功能命名;9.代码中不要出现中文,除了注释可以用,剩下的中文可以统一放到strings.xml文件中;10.styles.xml:将layout中不断重现的style提出通用的style通用组件,放到文件中;四、类型声明规则1.不使用枚举类型enums,用常量代替;2.如果确定变量类型时,不要使用接口类型声明变量;如 Map<String, String> map = new HashMap<String, String>();不推荐写法。
Android开发编码规范
Android开发编码规范第一章绪论1.1概述编码规范对于程序员而言尤为重要,有以下几个原因:【原因1】一个软件的生命周期中,80%的花费在于维护。
【原因2】几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护。
【原因3】编码规范可以改善软件的可读性,可以让程序员尽快而彻底地理解新的代码。
……等等很多原因,不一一列举。
1.2目的统一规范Eclipse/studio编辑环境下android的编码风格和标准。
此为最基本的编码要求规范,包括文件、注释、命名规范,必须完全遵守。
1.3适用范围适用于安卓手机APP项目。
第二章命名注释规范2.1 命名规范2.1.1 包命名命名规则:包名采用域后缀倒置的加上自定义的包名,采用小写字母,都应该以com.*(公司名)开头(不包括一些特殊原因)。
在部门内部应该规划好包名的范围,防止产生冲突。
部门内部产品使用部门的名称加上模块名称。
产品线的产品使用产品的名称加上模块的名称。
说明:除特殊原因包结构都必须以com.*开头,已有项目包结构不做调整.格式:com.公司名.产品名.模块名称2.1.2 类和接口命名规则一:命名必须使用驼峰规则,即每个英文单词的首字母使用大写、其余字母使用小写的大小写混合法,类名和接口使用类意义完整的英文描述,不允许出现无意义的单词,如(FirstActivity),应该为(LauncherActivity)。
示例:ChatActivity, LogManager, LogConfig规则二:常用组件类的命名以组件名加上组件类型名结尾。
示例:Application 类型的,命名以Application 结尾——MTApplicationActivity类型的,命名以Activity结尾——LoginActivityfragment类型的,建议命名以fragment结尾——CourseFragmentadapter类型的,建议命名以adapter 结尾——ContactDetailAdapterbean 类型的,请求体,建议命名以Req结尾-GetMMSListReq,消息返回提,建议以Resp 结尾-BackupProgressResp。
android 编码指导级规范
Android编码指导规范1、原则上所有的activity都需继承至BaseActivity,fragment都需继承至BaseFragment。
基类为抽象类里边封装了一些常用的操作。
2、公共库commontools有ui控件、utils工具类、volley网络访问工具。
其中ui、utils随着项目的需要可能需要补充扩展,不过扩展时注意封装良好,代码风格良好,注释等。
3、App.class为Application做程序初始化工作,ImageManager为图片访问接口,BaseDBHelper为数据库工具类。
4、类命名规范:1)Activity界面显示,service数据请求业务逻辑控制,sqlite数据库操作。
2)布局文件命名。
activity布局文件须以activity_开头(例如:activity_personal),fragment布局文件须以fragment_开头(例如:fragment_personal),listView的item须以list_item_开头,dialog布局须以dialog_开头等。
3)图片无特殊情况统一放在drawable_xhdpi中。
4)Selector,shape文件统一放在drawable文件夹中,命名须规范化且有意义。
5、java代码中不出现中文,最多注释中可以出现中文,中文统一写在strings.xml中;6、局部变量命名、静态成员变量命名只能包含字母,单词首字母大写,其他字母都为小写,成员变量须m开头7、常量命名只能包含字母和_,字母全部大写,单词之间用_隔开8、布局文件中的id命名常用控件的缩写如下RelativeView : rv_TextView : tv_ImageView : iv_ImageButton : ib_Button : btn_。
安卓编码规范
e.g.:
成员变量 Button mBtnCancel = null;
局部变量 Button btnCancel = (Button)findViewById(R.id.btnCancel);
常用控件类型前缀:
Button btn, CheckBox chk, ImageView img, EditText edt, TextView txt
2.6 代码提交时不得有未使用变量存在。
3. 类和包
3.1 类命名所有词首字母大写。
e.g.:
public class LoginActivity extends Activity {
2.2 常量名全大写。
e.g.:
static final private int MSG_SHOWTOAST = 0;
2.4 变量要见名知义,不得使用拼音,不得使用 my new test 等无实际意义的词
e.g.:
String userName = null;
而不是:
String myString = null;
2.3 变量命名使用匈牙利命名法,首词首字母小写,其余词首字母小写。
e.g.:
String fileName = userInfo.getFileName();
而不是:
String filename = userInfo.getFileName();
常量、基本类型变量、控件类型变量可组内紧密靠在一起,不可任意两个变量声明间都留空行;
1.5 逻辑运算符、算术运算符(除++、--外)、赋值运算符、?:运算符的运算符两端各需加一个空格。
Android编码规范
3.
XML 注释 xml 注释只能写在 xml 节点之外 注释方式为 <!-- 单行注释内容 --> <!-多行注释内容 -->
要求: iv. v. 原则上要求对一些公用 xml 资源的修改, 需要加上 xml 注释, 注释内容可包含修改 人,修改时间,修改内容的简单描述,必要时还可以填上 bug 号 也必须用英文
SVN 提交规范
常用 svn 命令: 1、将文件 checkout 到本地目录 svn checkout path(path 是服务器上的目录) 例如:svn checkout svn://192.168.0.230/mt6573/branches/ALPSGBFDD2MPV39/A9 A9 简写:svn co 2、往版本库中添加新的文件 svn add file 例如:svn add test.php(添加 test.php) svn add *.php(添加当前目录下所有的 php 文件)
要求: i. ii. iii. 添加 Framework 框架资源一定要遵循 z 序列原则, 在资源命名加上前缀”zzzz_” 原则上除了 Framework, 其他 apk 应用不做硬性规定, 个别的 apk 需要(待整理,现 在明确要加的有 Mms,Settings) 包括资源文件名, xml 内的 + id, values 资源的 name 属性
命名须以 Exception 为结尾。已明确标示为一个异常。
7.
资源命名
资源文件名
命名规则:所有资源(如 layout ,drawable, style 等)的命名必须以全部单词小写 ([a-z0-9_.]),否则无法编译通过, 单词间以下划线分割,尽量使用有意义的名词或 名词词组。添加资源命名尽量依照上下文资源名来命名。 如: pickerbox_selected.9.png music_picker.xml 资源 ID
安卓软件代码编写规范
public void syncCustomer(String level, Date lastSyncDatetime){}private String fetchMessage(){}2) 查找⽅方法命名,如:// 查找实体集,使⽤用findAllpublic List<Customer> findAll(Category category){}// 查找单个实体,使⽤用findpublic Customer find(String username){}成员变量命名使⽤用标准的Java命名⽅方法,并必须在之上加上注释。
绝不允许使⽤用Google的m命名法:// 姓名private String username;// 年龄private int age;不允许使⽤用Google的m命名法,主要是因为⼤大量的java库使⽤用的是标准的Java命名法,使得这些代码在组合使⽤用时会产⽣生命名不统⼀一的问题,影响代码的阅读。
临时变量命名使⽤用标准的Java命名⽅方法常量命名常量使⽤用全⼤大写字⺟母加下划线的⽅方式命名:public static final String DEBUG_LABEL = "ShowGirl";控件实例命名使⽤用标准的Java命名⽅方法,但需在前加⼊入类型前缀+下划线:// 列表 - lstprivate ListView lst_UserList// 按钮 - btnprivate Button btn_Pay// 图⽚片 - imgprivate ImageView img_Person// 后⾯面待续..(⼆二)资源命名规范图⽚片资源命名1) 图标命名:{module_name}_ic_{名称},例如:crm_ic_app.pngcrm_ic_pay.png2) 背景命名:{module_name}_bg_{名称},例如:crm_bg_launch.pngcrm_bg_first.png3) 图⽚片命名:{module_name}_img_{名称},例如:crm_img_launch.pngcrm_img_first.pngLayout命名1) activity layout:{module_name}_activity_{名称},例如:crm_activity_main.xmlcrm_activity_shopping.xml2) fragment layout:{module_name}_fragment_{名称},例如:crm_fragment_main.xmlcrm_fragment_shopping.xml3) widget layout:{module_name}_widget_{名称},例如:crm_widget_customer_list_item.xmlcrm_widget_shopping_detail.xml(三)包命名使⽤用标准的Java包命名,例如:com.amway.hub.crmcom.amway.hub.pay_framework⼆二、代码⻛风格(⼀一)⼤大括号使⽤用标准的ANSI C标准,⼤大括号独占⼀一⾏行:if (hasMoney()){}else{}while (hasMoney()){buySomething();}class Person{}(⼆二)空格// if, while 等后⾯面需要空格隔开if (hasMoney()){}while (hasMoney()){buySomething();}// 以下是错误的if(hasMoney()){}while(hasMoney()){buySomething();}// 使⽤用4个空格缩进,不允许使⽤用Tab进⾏行缩进。
Android开发代码规范
Android开发代码规范1.命名基本原则在面向对象编程中,对于类,对象,方法,变量等方面的命名是非常有技巧的。
比如,大小写的区分,使用不同字母开头等等。
但究其本,追其源,在为一个资源其名称的时候,应该本着描述性以及唯一性这两大特征来命名,才能保证资源之间不冲突,并且每一个都便于记忆。
对于理解应用程序的逻辑流,命名方案是最有影响力的一种帮助。
名称应该说明“什么”而不是“如何”。
命名原则是:使名称足够长以便有一定的意义,并且足够短以避免冗长。
唯一名称在编程上仅用于将各项区分开。
以下几点是规范的命名方法。
2.命名基本规范2.1.编程基本命名规范(1)避免难懂的名称,如属性名xxK8,这样的名称会导致多义性。
(2)在面向对象的语言中,在类属性的名称中包含类名是多余的,如Book.BookTitle,而是应该使用Book.Title。
(3)在允许函数重载的语言中,所有重载都应该执行相似的函数。
(4)使用动词-名词的方法来命名对给定对象执行特定操作的例程,如CalculateInvoiceTotal()。
(例程是某个系统对外提供的功能接口或服务的集合)(5)只要合适,在变量名的末尾或开头加计算限定符(Avg、Sum、Min、Max、Index)。
(6)在变量名中使用互补对,如min/max、begin/end和open/close。
(7)布尔变量名应该包含Is,这意味着Yes/No 或True/False 值,如fileIsFound。
(8)即使对于可能仅出现在几个代码行中的生存期很短的变量,仍然使用有意义的名称。
仅对于短循环索引使用单字母变量名,如i 或j。
(9)为了帮助区分变量和例程,对例程名称使用Pascal大小写处理(CalculateInvoiceTotal),其中每个单词的第一个字母都是大写的。
对于变量名,使用camel大小写处理(documentFormatType),其中除了第一个单词外每个单词的第一个字母都是大写的。
系统编码规范_Android移动开发(慕课版)_[共2页]
Android移动开发 (慕课版)
308 13.2.3 系统业务流程图
个人理财通的业务流程如图13-2
所示。
图13-2 个人理财通业务流程图
13.2.4 系统编码规范
开发应用程序常常需要以团队合作来完成,每个人负责不同的业务模块。
为了使程序的结构与代码风格统一标准化,增加代码的可读性,需要在编码之前制定一套统一的编码规范。
下面介绍个人理财通系统开发中的编码规范。
1.数据库命名规范
(1)数据库
数据库以数据库相关英文单词或缩写进行命名,如表13-3所示。
表13-3 数据库命名
数据库名称 描述
account.db 个人理财通数据库
(2)数据表
数据表以字母tb开头(小写),后面加数据表相关英文单词或缩写。
下面举例进行说明,如表13-4所示。
表13-4 数据表命名
数据表名称 描述
tb_outaccount 支出信息表。
安卓开发规范__Android编码规范
安卓开发规范编写目的为了使项目文档组织有序,方便项目组成员协调开发工作,便于后期开发人员理解和维护代码,公司的android开发项目应该有一套命名规范,小组人员在编写代码时应该遵循这些规范,使用有意义的字符书写代码中得类型、变量,形成良好的编码风格。
简单描述工程文件编码格式:UTF-8包结构src的目录结构com.hy.prss.mobile.android.constant例如:Server_Config.java描述:包下的所有类里只能装常量,常量格式public static final xxx XXX = xxx;R.id.xxx类似的资源文件不能定义在arrays里,定义在常量包里方便调用com.hy.prss.mobile.android.widget例如:IconTextListView.java,PictureDialog.java描述:包下的所有类里只能是自定义控件或自定义dialogcom.hy.prss.mobile.android.entity例如:User.java描述:包下的所有类里只能是属性变量+get和set方法com.hy.prss.mobile.android.activity例如:MainActivity.javaMyActivity是所有的Activity的父类,对Activity的统一的处理在MyActivity实现,如:对顶部标题栏的显示和底部标题栏的显示Activity的作用: 加载layout, 初始化控件,设置监听,处理监听事件描述:所有活动的集合com.hy.prss.mobile.android.service例如:UserManager.java描述:业务层com.hy.prss.mobile.android.dao例如:SqlDBHelper.java描述:数据访问com.hy.prss.mobile.android.util例如:XmlUtil.java描述:所有的零碎功能包括处理XmlUtil, JsonUtil,SharedPreferencesUtil, DBUtil,FileUtil,HttpUtil,SocketUtil,StringUtil, DeviceUtilcom.hy.prss.mobile.android.app例如:MyService.java描述:存放Broadcast,service, application所有的Service继承MyService服务:●用在不需要界面时,还需要长时间在后台运行的地方广播:●用来接收系统●广播用于处理后台服务与前台界面的交互com.hy.prss.mobile.android.test例如:描述:junit test模块测试values的目录结构代码规范java代码命名规范类名、接口命名规则类和接口的名称应该是一个名词,与设计文档保持一致;采用大小写混和的方式,每个单词的首字母大写;命名使用完整单词,禁止使用中文全拼,如使用缩写词必须添加注释(除非该缩写词被广泛的使用,如URL、HTML);例如class UserTest;//各单词首字母大写interface IUserTest;//接口以大写I开头abstract class AbsUserTest; //抽象类以Abs开头方法函数命名规则方法名应该是动词/动名词,采用大小写混和方式,第一个单词首字母小写,其后单词的首字线大写。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Android开发编码规范
1、java代码中不出现中文,最多注释中可以出现中文
2、局部变量命名、静态成员变量命名
只能包含字母,单词首字母出第一个外,都为大写,其他字母都为小写
3、常量命名
只能包含字母和_,字母全部大写,单词之间用_隔开
4、layout中的id命名
命名模式为:view缩写_模块名称_view的逻辑名称
view的缩写详情如下
LayoutView:lv
RelativeView:rv
TextView:tv
ImageView:iv
ImageButton:im
Button:btn
5、activity中的view变量命名
命名模式为:逻辑名称+view缩写
建议:如果layout文件很复杂,建议将layout分成多个模块,每个模块定义一个moduleViewHolder,其成员变量包含所属view
6、strings.xml中的id命名
命名模式:activity名称_功能模块名称_逻辑名称/activity名称_逻辑名称
/common_逻辑名称
strings.xml中,使用activity名称注释,将文件内容区分开来
drawable中的图片命名
命名模式:activity名称_逻辑名称/common_逻辑名称
7、styles.xml:将layout中不断重现的style提炼出通用的style通用组件,放到styles.xml中;
8、使用layer-list和selector
9、图片尽量分拆成多个可重用的图片
10、服务端可以实现的,就不要放在客户端
11、引用第三方库要慎重,避免应用大容量的第三方库,导致客户端包非常大
12、处理应用全局异常和错误,将错误以邮件的形式发送给服务端
13、图片的.9处理
14、使用静态变量方式实现界面间共享要慎重
15、Log(系统名称模块名称接口名称,详细描述)
16、单元测试(逻辑测试、界面测试)
17、不要重用父类的handler,对应一个类的handler也不应该让其子类用到,否则会导致message.what冲突
18、activity中在一个View.OnClickListener中处理所有的逻辑
19、strings.xml中使用%1$s实现字符串的通配
20、如果多个Activity中包含共同的UI处理,那么可以提炼一个CommonActivity,把通用部分叫由它来处理,其他activity只要继承它即可
21.使用button+activitgroup实现tab效果时,使用
Button.setSelected(true),确保按钮处于选择状态,并使activitygroup的当前activity与该button对应
22、如果所开发的为通用组件,为避免冲突,将drawable/layout/menu alues 目录下的文件名增加前缀
23、数据一定要效验,例如字符型转数字型,如果转换失败一定要有缺省值;
Android开发服务端响应数据是否有效判断;
【→前面的一节课已经给大家介绍了如何搭建Android开发环境。
本节课就来给大家介绍如何使用Android studio来开发我们第一个Android应用程序。
当然如果大家对于安卓开发有什么疑问,或者想找大牛教你如何从0开始系统打造一个完整的企业级安卓开发教程可以加企鹅号:前面444然后513+089 免费学习,获取最新最全的企业级开发视频教程←】
二、Android开发性能优化
1、http用gzip压缩,设置连接超时时间和响应超时时间
http请求按照业务需求,分为是否可以缓存和不可缓存,那么在无网络的环境
中,仍然通过缓存的httpresponse浏览部分数据,实现离线阅读。
2、listview性能优化
(1)复用convertView
在getItemView中,判断convertView是否为空,如果不为空,可复用。
如果couvertview中的view需要添加listerner,代码一定要在
if(convertView==null){}之外。
(2)异步加载图片
item中如果包含有webimage,那么最好异步加载
(3)快速滑动时不显示图片
当快速滑动列表时(SCROLL_STATE_FLING),item中的图片或获取需要消耗资源的view,可以不显示出来;而处于其他两种状态(SCROLL_STATE_IDLE和SCROLL_STATE_TOUCH_SCROLL),则将那些view显示出来
3、使用线程池,分为核心线程池和普通线程池,下载图片等耗时任务放置在普通线程池,避免耗时任务阻塞线程池后,导致所有异步任务都必须等待
4、异步任务,分为核心任务和普通任务,只有核心任务中出现的系统级错误才会报错,异步任务的ui操作需要判断原activity是否处于激活状态
5、尽量避免static成员变量引用资源耗费过多的实例,比如Context
6、使用WeakReference代替强引用,弱引用可以让您保持对对象的引用,同时允许GC在必要时释放对象,回收内存。
对于那些创建便宜但耗费大量内存的对象,即希望保持该对象,又要在应用程序需要时使用,同时希望GC必要时回收时,可以考虑使用弱引用。
7、超级大胖子Bitmap
及时的销毁(Activity的onDestroy时将bitmap回收,在被UI组件使用后马上进行回收会抛
RuntimeException:Canvas:tryingtousearecycledbitmapandroid.graphics.Bi tmap)设置一定的采样率(有开发者提供的图片无需进行采样,对于有用户上传或第三方的大小不可控图片,可进行采样减少图片所占的内存),从服务端返回图片,建议同时反馈图片的size巧妙的运用软引用drawable对应resid的资源,bitmap对应其他资源任何类型的图片,如果获取不到(例如文件不存在,或者读取文件时跑OutOfMemory异常),应该有对应的默认图片(默认图片放在在apk中,通过resid获取);
8、保证Cursor占用的内存被及时的释放掉,而不是等待GC来处理。
并且Android 明显是倾向于编程者手动的将Cursorclose掉
9、线程也是造成内存泄露的一个重要的源头。
线程产生内存泄露的主要原因在于线程生命周期的不可控
10、如果ImageView的图片是来自网络,进行异步加载
11、应用开发中自定义View的时候,交互部分,千万不要写成线程不断刷新界面显示,而是根据TouchListener事件主动触发界面的更新
12、Drawable
ui组件需要用到的图片是apk包自带的,那么一律用setImageResource或者setBackgroundResource,而不要根据resourceid
注意:get(getResources(),R.drawable.btn_achievement_normal)该方法通过resid转换为drawable,需要考虑回收的问题,如果drawable是对象私有对象,在对象销毁前是肯定不会释放内存的。
三、Android开发UI 优化
1、layout组件化,尽量使用merge及include复用
2、使用styles,复用样式定义
3、软键盘的弹出控制,不要让其覆盖输入框
4、数字、字母和汉字混排占位问题:将数字和字母全角化。
由于现在大多数情况下我们的输入都是半角,所以字母和数字的占位无法确定,但是一旦全角化之后,数字、字母的占位就和一个汉字的占位相同了,这样就可以避免由于占位导致的排版问题。
5、英文文档排版:textview自动换行时要保持单词的完整性,解决方案是计算字符串长度,然后手动设定每一行显示多少个字母并加上‘‘
6、复杂布局使用RelativeLayout
7、自适应屏幕,使用dp替代pix
8、使用android:layout_weight或者TableLayout制作等分布局
9、使用animation-list制作动画效果。