Android开发编码规范_Android教程
- 格式:doc
- 大小:77.50 KB
- 文档页数:5
安卓编码开发文档作者:完成日期:签收人:签收日期:版本历史目录目录 (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。
1.编程原则1.1 为方法和类赋予表义性强的名字为了使代码更加容易理解,最容易的方法之一是为你的方法赋予表义性强的名字。
函数名DoIt、GetIt的可读性很难CalculateSalesTax、 RetrieveUserID 相比。
由缩写方法名组成的代码很难理解和维护,没有理由再这样做了。
给方法正确的命名,可使程序工程的调试和维护工作大大的改观。
请认真对待方法命名的工作,不要为了减少键入操作量而降低方法的可理解度。
实际应用举例:1) 给方法命名时应大小写字母混合使用。
如果句子全使用大写字母,那么阅读起来就非常困难,而大小写字母混合使用的句子,阅读起来就很容易。
2) 定义方法名时不要使用缩写。
如果你认为应用程序中的某些工程应使用缩写,那么请将这些情况加上注释,并确保每个人在所有时间内都使用这些缩写。
决不要在某些方法中对某些单词进行缩写,而在别的方法中却不使用缩写。
1.2 为每个方法赋予单个退出点1.3 创建方法时,始终都应显式地定义它的作用域。
1) 如果你真的想创建一个公用方法,请向代码阅读者说明这一点。
2) 通过为每个方法赋予一个明确定义的作用域,可以减少代码阅读者需要投入的工作量。
应确保你为方法赋予最有意义的作用域。
如果一个方法只被同一类中的另一个方法调用,那么请将它创建成私有方法。
如果该方法是从多个类中的多个方法中调用,请将该说明为公用方法。
1.4 用参数在方法之间传递数据应尽量避免使用类变量。
一般来说,变量的作用域越小越好。
为了减少类变量,方法之一是将数据作为参数在不同方法之间传递,而不是让方法共享类变量。
1) 为每个参数指定数据类型。
2) 始终要对数进行检验,决不要假设你得数据没有问题。
程序员常犯的一个错误是在编写方法时假设数据没有问题。
在初始编程阶段,当编写调用方法时,这样的假设并无大碍。
这时你完全能够知道什么是参数的许可值,并按要求提供这些值。
但如果你不对参数的数据进行检验,那么下列情况就会给你带来很大麻烦:另外某个人创建了一个调用方法,但此人不知道允许的值;你在晚些时候添加了新的调用方法,并错误的传递了坏数据。
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编码规范及命名规范前言:目前工作负责两个医疗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编程规范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课程组版本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项目编码规范一、编写目的编写此文档的目的是为了规范项目开发人员的编码风格,使项目工程的整体编码风格保持一致,便于其他开发人员的阅读与管理。
二、命名规则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开发编码规范第一章绪论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编码指导规范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_。
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制作动画效果。