编程一开始就应该养成的好习惯
有些编程规范,学编程第一天就应该了解,这些习惯比你多学两章知识来的更为实际,他们甚至可能会直接影响你的编程生涯,所以,不要一开始觉得这些习惯都不重要,有很多同学认为等到技术成熟的时候再考虑它们,殊不知,坏习惯一旦养成需要花费多大的经历才能更正。一开始就对自己要求严格一些,慢慢的养成习惯,却也不觉得这些规范是束缚,而认为是天经地义的事情。
好的编程命名习惯不止是可以提高代码的可读性,其实还可以大大提高你的开发效率,例如,Android中各种控件的命名,好的命名可以让你快速的在Activity中找到所要引用的控件。不规则的命名会给自己造成不必要的混淆,需要花费一些时间区分这些命名,另外规则的命名还可能会预防命名重复的问题。
这些规则不是靠自己死记硬背出来的,一开始养成好习惯会流淌在程序员的血液里,坚持从第一行代码开始,严格按照命名规范来执行,久而久之就会觉得这是一件十分正常和合理的事情,一开始是痛苦的,却也是值得的。
怎么才算是合理的命名、好的编程习惯呢,自己认为的可不一定是合理的,我们需要找到权威的解释,可以参考官方给出的命名规范和格式,也可以参考一些大公司的编程规范,绝对会让你受益匪浅。网上一些资料也是可以参考的,我整理了一些Android开发方面需要注意的命名和编程规范,大家可以参考一下,也可以发表自己的看法,丰富这一文档。
1.java代码中不出现中文,最多注释中可以出现中文(尽量不要用拼音命名啊,那样显得太low了!)
2.局部变量命名、静态成员变量命名
只能包含字母,单词首字母出第一个外,都为大写,其他字母都为小写。
3.常量命名
只能包含字母和_
,字母全部大写,单词之间用_
隔开。(API_KEY)
4.layout中的id命名
命名模式为: view缩写_模块名称_view的逻辑名称(这个比较重要啊!很常用的!可以findViewById()中快速找到控件)
view
的缩写详情如下:
LayoutView
:lv
RelativeView
:rv
TextView
:tv
ImageView
:iv
ImageButton
:im
Button
:btn
5.activity中的view
变量命名
命名模式为:逻辑名称+view缩写(mUserNameTv)
建议:如果layout
文件很复杂,建议将layout
分成多个模块,每个模块定义一个moduleViewHolder
,其成员变量包含所属view
6.strings.xml
中的id
命名
命名模式:activity名称_功能模块名称_逻辑名称
/activity名称_逻辑名称/common_逻辑名称
strings.xml
中,使用activity
名称注释,将文件内容区分开来。
7.drawable
中的图片命名
命名模式:activity名称_逻辑名称
/common_逻辑名称
8.styles.xml
:将layout
中不断重现的style提炼出通用的style通用组件,放到styles.xml
中;
9.使用layer-list
和selector
10.图片尽量分拆成多个可重用的图片
11.服务端可以实现的,就不要放在客户端
12.引用第三方库要慎重,避免应用大容量的第三方库,导致客户端包非常大
13.处理应用全局异常和错误,将错误以邮件的形式发送给服务端
14.图片的.9处理(保证拉伸不变形,做背景图片的一半要处理)
15.使用静态变量方式实现界面间共享要慎重
16.Log(系统名称 模块名称 接口名称,详细描述)
17.单元测试(逻辑测试、界面测试)
18.不要重用父类的handler
,对应一个类的handler
也不应该让其子类用到,否则会导致message.what
冲突
19.activity
中在一个View.OnClickListener
中处理所有的逻辑(switch分支判断处理)
20.strings.xml
中使用%1$s
实现字符串的通配
21.如果多个Activity
中包含共同的UI处理,那么可以提炼一个CommonActivity
,把通用部分叫由它来处理,其他activity
只要继承它即可
22.使用button+activitgroup
实现tab
效果时,使用Button.setSelected(true)
,确保按钮处于选择状态,并使activitygroup
的当前activity
与该button
对应
23.如果所开发的为通用组件,为避免冲突,将drawable
/layout
/menu/values
目录下的文件名增加前缀
24.数据一定要效验,例如字符型转数字型,如果转换失败一定要有缺省值;服务端响应数据是否有效判断;
25.同一个客户端如果要放在不同的市场,而且要统计各个市场下载及使用数据时针对不同的客户端打不同的包,唯一的区别是versionName
,apk文件名为versionName.apk
。在升级时,要将自己的versionCode
和versionName
一并传给服务端,如果需要升级,则下载versionName
相对应的apk
关于是否要强制升级:
1).不管何种情况都强制升级
2).判断用户的版本和当前最新版本,如果兼容则强制升级,否则可选;
26.有的按钮要避免重复点击
下面是网上的资料,很有必要看一看哦!真的很有用!
标识符命名法
标识符命名法最要有四种:
1 驼峰(Camel)命名法:又称小驼峰命名法,除首单词外,其余所有单词的第一个字母大写。
2 帕斯卡(pascal)命名法:又称大驼峰命名法,所有单词的第一个字母大写
3 下划线命名法:单词与单词间用下划线做间隔。
4 匈牙利命名法:广泛应用于微软编程环境中,在以Pascal命名法的变量前附加小写序列说明该变量的类型。 量的取名方式为:<scope_> + <prefix_> + <qualifier>范围前缀,类型前缀,限定词。
个人觉得标识符命名原则:尽可能的用最少的字符而又能完整的表达标识符的含义。
英文缩写原则:
1 较短的单词可通过去掉“元音”形成缩写
2 较长的单词可取单词的头几个字母形成缩写
3 此外还有一些约定成俗的英文单词缩写.
下面为常见的英文单词缩写:
名称 |
缩写 |
icon |
ic (主要用在app的图标) |
color |
cl(主要用于颜色值) |
divider |
di(主要用于分隔线,不仅包括Listview中的divider,还包括普通布局中的线) |
selector |
sl(主要用于某一view多种状态,不仅包括Listview中的selector,还包括按钮的selector) |
average |
avg |
background |
Bg(主要用于布局和子布局的背景) |
buffer |
buf |
control |
ctrl |
delete |
del |
document |
doc |
error |
err |
escape |
esc |
increment |
inc |
infomation |
info |
initial |
init |
image |
img |
Internationalization |
I18N |
length |
len |
library |
lib |
message |
msg |
password- |
pwd |
position |
pos |
server |
srv |
string |
str |
temp |
tmp |
window |
wnd(win) |
程序中使用单词缩写原则:不要用缩写,除非该缩写是约定俗成的。
命名规范:
1 包(packages): 采用反域名命名规则,全部使用小写字母。一级包名为com,二级包名为xx(可以是公司或则个人的随便),三级包名根据应用进行命名,四级包名为模块名或层级名
包名 |
此包中包含 |
com.xx.应用名称缩写.activities |
页面用到的Activity类 (activities层级名用户界面层) |
com.xx.应用名称缩写.base |
页面中每个Activity类共享的可以写成一个i额BaseActivity类 (基础共享的类) |
com.xx.应用名称缩写.adapter |
页面用到的Adapter类 (适配器的类) |
com.xx.应用名称缩写.tools |
此包中包含:公共工具方法类(tools模块名) |
com.xx.应用名称缩写.bean (或则 com.xx.应用名称缩写.unity ) |
此包中包含:元素类 |
com.xx.应用名称缩写.db |
数据库操作类 |
com.xx.应用名称缩写.view (或则 com.xx.应用名称缩写.ui ) |
自定义的View类等 |
com.xx.应用名称缩写.service |
Service服务 |
com.xx.应用名称缩写.broadcast |
Broadcast服务 |
2 类(classes):名词,采用大驼峰命名法,尽量避免缩写,除非该缩写是众所周知的, 比如HTML,URL,如果类名称中包含单词缩写,则单词缩写的每个字母均应大写。
类 |
描述 |
例如 |
activity 类 |
Aty或者Activity为后缀标识 |
欢迎页面类WelcomeAty.或者WelcomeActivity |
Adapter类 |
Adp或者Adapte 为后缀标识 |
新闻详情适配器NewtDetailAdp或则直接 NewDetailAdapter |
解析类 |
Hlr为后缀标识 |
首页解析类HomePosterHlr |
公共方法类 |
Tools或Manager为后缀标识 |
线程池管理类:ThreadPoolManager |
数据库类 |
以DBHelper后缀标识 |
新闻数据库:NewDBHelper |
Service类 |
以Service为后缀标识 |
时间服务TimeService |
BroadcastReceive类 |
以Broadcast为后缀标识 |
时间通知TimeBroadcast |
ContentProvider |
以Provider为后缀标识 |
|
直接写的共享基础类 |
以Base开头 |
BaseActivity,BaseFragment |
3 接口( interface ):命名规则与类一样采用大驼峰命名法,多以 able 或 ible 结尾,如 interface Runn a ble ;
interface Access ible 。
4 方法( methods ):动词或动名词,采用小驼峰命名法 例如 :onCreate(),run()
方法 |
说明 |
initXX() |
初始化相关方法,使用init为前缀标识,如初始化布局initView() |
isXX() |
checkXX()方法返回值为boolean型的请使用is或check为前缀标识 |
getXX() |
返回某个值的方法,使用get为前缀标识 |
processXX() |
对数据进行处理的方法,尽量使用process为前缀标识 |
displayXX() |
弹出提示框和提示信息,使用display为前缀标识 |
saveXX() |
与保存数据相关的,使用sav为e前缀标识 |
resetXX() |
对数据重组的,使用reset前缀标识 |
clearXX() |
清除数据相关的 |
removeXXX() |
清除数据相关的 |
drawXXX() |
绘制数据或效果相关的,使用draw前缀标识 |
5 变量( variables )采用小驼峰命名法。类中控件名称必须与 xml 布局 id 保持一致。
用统一的量词通过在结尾处放置一个量词,就可创建更加统一的变量,它们更容易理解,也更容易搜索。例如,请使用 strCustomerFirst 和 strCustomerLast ,而不要使用 strFirstCustomer 和 strLastCustomer 。
量词列表:量词后缀说明
First 一组变量中的第一个
Last 一组变量中的最后一个
Next 一组变量中的下一个变量
Prev 一组变量中的上一个
Cur 一组变量中的当前变量
6 常量( Constants )全部大写 , 采用下划线命名法 . 例如: MIN_WIDTH
7 资源文件(图片drawable文件夹下): 全部小写,采用下划线命名法,加前缀区分
命名模式:activity名称_逻辑名称/common_逻辑名称
如果有多种形态如按钮等除外如btn_xx.xml(selector)
名称 |
功能 |
btn_xx |
按钮图片使用btn_整体效果(selector) |
btn_xx_normal |
按钮图片使用btn_正常情况效果 |
btn_xx_press |
按钮图片使用btn_点击时候效果 |
bg_head |
背景图片使用bg_功能_说明 |
def_search_cell |
默认图片使用def_功能_说明 |
icon_more_help |
图标图片使用icon_功能_说明 |
seg_list_line |
具有分隔特征的图片使用seg_功能_说明 |
sel_ok |
选择图标使用sel_功能_说明 |
命名后缀:
后缀 |
说明 |
unit |
在使用xml的tilemode来配图片时,element图片使用此后缀 |
nor |
图片的状态,代表普通状态 |
hl |
图片的状态,代表高亮状态 |
press |
图片的状态,代表按下状态 |
select |
图片的状态,代表其所占的view被选中 |
unselect |
图片的状态,代表其所占的view没有被选中 |
8 资源布局文件(XML文件(layout布局文件)):
全部小写,采用下划线命名法
1).contentview命名, Activity默认布局,以去掉后缀的Activity类进行命名。不加后缀:
功能模块.xml
例如:main.xml、more.xml、settings.xml
或则:activity_ 功能模块 .xml
例如:activity_main.xml、activity_more.xml
2).Dialog命名:dialog_描述.xml
例如:dlg_hint.xml
2).PopupWindow命名:ppw_描述.xml
例如:ppw _info.xml
3). 列表项命名listitem_描述.xml
例如:listitem_city.xml
4).包含项:include_模块.xml
例如:include_head.xml、include_bottom.xml
5).adapter的子布局:功能模块_item.xml
例如:main_item.xml、
9 动画文件(anim文件夹下):全部小写,采用下划线命名法,加前缀区分。
//前面为动画的类型,后面为方向
动画命名例子 |
规范写法 |
备注 |
fade_in |
淡入 |
|
fade_out |
淡出 |
|
push_down_in |
从下方推入 |
|
push_down_out |
从下方推出 |
|
push_left |
推像左方 |
|
slide_in_from_top |
从头部滑动进入 |
|
zoom_enter |
变形进入 |
|
slide_in |
滑动进入 |
|
shrink_to_middle |
中间缩小 |
10 资源ID(resourcesid):大小写规范与方法名一致,采用小驼峰命名法。命名规范为“资源控件的缩写 名”+“变量名”。注意:页面控件名称应该和控件id名保持一致
strings.xml,colors.xml等中的id命名:
命名模式:activity名称_功能模块名称_逻辑名称/activity名称_逻辑名称/common_逻辑名称
strings.xml中,使用activity名称注释,将文件内容区分开来
11 layout中的id命名
命名模式为:view缩写_模块名称_view的逻辑名称
view的缩写详情如下:
控件 |
缩写 |
LayoutView |
lv |
RelativeView |
rv |
TextView |
tv |
Button |
btn |
ImageButton |
imgBtn |
ImageView |
mgView 或则 iv |
CheckBox |
chk |
RadioButton |
rdoBtn |
analogClock |
anaClk |
DigtalClock |
dgtClk |
DatePicker |
dtPk |
EditText |
edtTxt |
TimePicker |
tmPk |
toggleButton |
tglBtn |
ProgressBar |
proBar |
SeekBar |
skBar |
AutoCompleteTextView |
autoTxt |
ZoomControls |
zmCtl |
VideoView |
vdoVi |
WdbView |
webVi |
RantingBar |
ratBar |
Tab |
tab |
Spinner |
spn |
Chronometer |
cmt |
ScollView |
sclVi |
TextSwitch |
txtSwt |
ImageSwitch |
imgSwt |
listView |
lVi 或则lv |
ExpandableList |
epdLt |
MapView |
mapVi |
好习惯最终决定你能走多远,不要吝啬培养好习惯哦,也不要因为时间紧的借口留下技术债务,这些债务积累到一定程度一定会让你后悔莫及!开发注意小细节就会大大提高代码质量。
编程一开始就应该养成的好习惯相关推荐
- 如何在编程时养成良好的习惯
如何在写代码时养成良好的习惯 一个人有没有良好的修养,就从他的为人处世以及行为习惯中看出来.作为软件开发人员,也应该养成良好的职业素养和编程习惯,这样才能在人生道路上进一步向上攀爬. 命名 养成良好的 ...
- Sql养成一个好习惯是一笔财富
Sql养成一个好习惯是一笔财富 我们做软件开发的,大部分人都离不开跟数据库打交道,特别是erp开发的,跟数据库打交道更是频繁,存储过程动不动就是上千行,如果数据量大,人员流动大,那么我么还能保证下一段 ...
- 养成重构的习惯有多重要
身为一个维护人员,我每天的工作就是研究产品的代码,修正各种bug,或者添加各种新功能.Kent Beck在<重构>一书中使用了一个隐喻,"坏味道(bad smell)" ...
- 想要写出好味道的代码,你需要养成这些好习惯!
无论做什么行业,良好的习惯会让我们受益终生.它就如我们的指南针一样,指引着我们的行动,从而走向成功. 养成良好的习惯,会让我们的工作更加顺利,生活也会变的更加清晰. 当我们久而久之习惯了做这些事情的时 ...
- php中一定要写 吗,PHP编程一定要改掉的5个不良习惯
这5个PHP编程中的不良习惯,一定要改掉 PHP世界上最好的语言! 测试循环前数组是否为空? $items = []; // ... if (count($items) > 0) { forea ...
- 新手站长必须养成的五个好习惯
新手站长必须养成的五个好习惯 草根站长是日益壮大的一个群体,正是他们的辛勤耕耘才成就了今天多姿多彩互联网世界.要成为一名合格并有所成就的个人站长,需要有足够的耐心来进行夜以继日的伏案工作.支撑一个站长 ...
- 太想成功了--成功之前,你是否养成了这些习惯?
在这个优胜劣汰的世界,你必须得明白.甚至学会.还得要养成以下习惯: 1:低调做人,高调做事: 2:没有对与错,只有适应与不适应: 3:在变化过程中寻找突破: 4:把握不了别人,那就只有把握自己: 5: ...
- android 框架搭建养成的良好习惯(一)
第一次搭建大的框架,简单吧一些简单的东西记录下... 首先应该养成良好的代码习惯. 1.关于log日志的管理,log日志是很危险的东西,你在你不经意间遗漏出一个重要的日志,可能会给你以后造成很大的危险 ...
- 那些高效的机器学习研究者,需要养成什么样的习惯?吴恩达等这样建议
Datawhale分享 机器之心编辑部 如何成为一名高效的机器学习研究者,然后在这个领域取得一些成就?在此之前,我们需要养成什么样的习惯?近日,一篇发布在 Reddit 机器学习版块的帖子引发了众人的 ...
- 养成励志的习惯,一生励志——文指星终极励志
语言的突破全集 卡耐基 --励志经典 点击下载 人性的优点--卡耐基名著--励志经典 点击下载 人生格言精华总集 点击下载 人生定律与原则--励志经典 点击下载 厚黑学 ...
最新文章
- 2021年春季学期-信号与系统-第十三次作业参考答案-第十一小题
- linux rsyslog 系统日志转发
- 我们用5分钟写了一个跨多端项目
- Codeforces 924D Contact ATC (看题解)
- 【BZOJ3589】动态树
- ppt中的流程图怎么整体移动_PPT中图片太丑了?该怎么办?
- Eclipse自定义文档注释和方法注释
- 影响页面布局的css属性,6 和页面布局有关的CSS属性(三)
- 折叠list ExpandableList+ BaseExpandableListAdapter 自定义 折叠列表
- 第一章节 c#面向对象
- 《JavaScript高级程序设计》Chapter 10 DOM
- java中的VO、PO、BO、DAO、POJO
- Sun java认证考试真题答案及部分解析(一)
- STM32外接DHT11显示温湿度
- 1.1 项目经理是干什么的
- 员工格言[付总提供]
- 戴尔计算机软件的安装,怎么安装dell电脑系统
- python3打印金字塔_python3 练习题100例 (二十五)打印一个n层金字塔
- 设计模式必备知识点----六大设计原则
- Matlab中将多维数组转换为一维数组
热门文章
- android 涨水的动画,Android -- 贝塞尔实现水波纹动画(划重点!!)
- 【周赛266】leetcode2062.统计字符串中的的元音子字符串
- dismiss和remove_你真的了解iOS中控制器的present和dismiss吗?
- dismiss android,在 dialog.dismiss( ) 上,安卓的窗口甚至泄露了_dialog_开发99编程知识库...
- 程序员必读书籍排行榜
- spark-streaming 编程(六)mapwithState
- 可水解盐类pH值的计算
- MongoDB在Windows10上的安装配置和基本语句
- Python肺CT图像窗位窗宽调整
- 利用Pygame制作跳跃的小球游戏