剑走偏锋终归会落下一些东西,以后会慢慢整理
1. 基本命名规则
在面向对象编程中,对于类,对象,方法,变量等方面的命名是非常有技巧的。比如,大小写的区分,使用不同字母开头等等。但究其本,追其源,在为一个资源其名称的时候,应该本着描述性以及唯一性这两大特征来命名,才能保证资源之间不冲突,并且每一个都便于记忆。
对于理解应用程序的逻辑流,命名方案是最有影响力的一种帮助。名称应该说明“什么”而不是“如何”。命名原则是:使名称足够长以便有一定的意义,并且足够短以避免冗长。唯一名称在编程上仅用于将各项区分开。以下几点是规范的命名方法。
- 命名基本规范
-
- 编程命名基本规范
- 避免难懂的名称,如属性名list1,face2,这样的名称会导致多义性
- 在面向对象的语言中,在类属性的名称中包含类名是多余的,如Face.FaceData,而是应该使用Face.Data。
- 在变量名中使用互补对,如min/max、begin/end和open/close。
- 布尔变量名应该包含b,如 bFound, bChecked。
- 即使对于可能仅出现在几个代码行中的生存期很短的变量,仍然使用有意义的名 称。仅对于短循环索引使用单字母变量名,如 i 或 j。
- 为了帮助区分变量和方法名,对方法名称使用Pascal大小写处理 (CalculateInvoiceTotal),其中每个单词的第 一个字母都是大写的。对于变量名,使用 camel大小写处理 (documentFormatType),其中除了第一个单词外每个单词的第一个字母都是大写的。
2.2. 分类命名规范
- 包的命名
Java包的名字都是由小写单词组成。但是由于Java面向对象编程的特性,每一名Java程序员都可以编写属于自己的Java包,为了保障每个Java包命名的唯一性,在最新的Java编程规范中,要求程序员在自己定义的包的名称之前加上唯一的前缀。由于互联网上的域名称是不会重复的,所以程序员一般采用自己在互联网上的域名称作为自己程序包的唯一前缀。
例如: com.tskj.facedemo
- 类的命名
类的名字必须由大写字母开头而单词中的其他字母均为小写;如果类名称由多个单词组成,则每个单词的首字母均应为大写例如TestPage;如果类名称中包含单词缩写,则这个所写词的每个字母均应大写,如:XMLExample,还有一点命名技巧就是由于类是设计用来代表对象的,所以在命名类时应尽量选择名词。
例如:UserBean,FeatureBean
- 方法的命名
方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头。
例如: sendMessge()
- 常量的命名
常量的名字应该都使用大写字母,并且指出该常量完整含义。如果一个常量名称由多个单词组成,则应该用下划线来分割这些单词。
例如: MAX_VALUE , SWEEP_OPEN_MENU
- 参数的命名
参数的命名规范和方法的命名规范相同,而且为了避免阅读程序时造成迷惑,请在尽量保证参数名称为一个单词的情况下使参数的命名尽可能明确。
私有属性:private int nAge;
静态变量:static String sName;
函数内部变量:int lAge;
方法定义时的形参:int pAge;
- Javadoc注释
Java除了可以采用我们常见的注释方式之外,Java语言规范还定义了一种特殊的注释,也就是我们所说的Javadoc注释,它是用来记录我们代码中的API的。Javadoc注释是一种多行注释,以/**开头,而以*/结束,注释可以包含一些HTML标记符和专门的关键词。使用Javadoc注释的好处是编写的注释可以被自动转为在线文档,省去了单独编写程序文档的麻烦。
例如:
/**
* This is an example of face detect
*
* @author darchon
* @version 1.0, 09/09/2018
*/
- 变量命名规范
s:表示字符串。例如:sName,sHtml;
n:表示数字。例如:nPage,nTotal;
b:表示逻辑。例如:bChecked,bHasLogin;
a:表示数组。例如:aList,aGroup;
r:表示正则表达式。例如:rDomain,rEmail;
f:表示函数。例如:fGetHtml,fInit;
g:表示全局变量,例如:g_UserName,g_LoginTime;
- 分类命名规范
- 控件命名规范
TextView :txt_+描述
Button :btn_+描述
ImageButton :imgBtn_+描述
ImageView :imgView_+描述
CheckBox :chk_+描述
RadioButton :rdoBtn_+描述
AnalogClock :anaClk_+描述
DigitalClock :DgtClk_+描述
DatePicker :dtPk_+描述
TimePicker :tmPk _+描述
ToggleButton :tglBtn_+描述
EditText:edtTxt_+描述
ProgressBar:lcb_+描述
SeekBar:skBar _+描述
AutoCompleteTextView:autoTxt_+描述
MultiAutoCompleteTextView:mlAutoTxt_+描述
ZoomControls:zmCtrl_+描述
Include:ind_+描述
VideoView:vdoVi_+描述
WebView:webVi_+描述
RatingBar:ratBar_+描述
Tab:tab__+描述
Spinner:spn_+描述
Chronometer:Cmt_+描述
ScrollView:sclVi_+描述
TextSwitcher:txtSwt_+描述
Gallery:gal_+描述
ImageSwitcher:imgSwt_+描述
GridView:gV_+描述
ListView:lVi_+描述
ExpandableList: epdLt_+描述
MapView: mapVi_+描述
- 项目目录规范
- 系统目录规范:
指项目目录中不仅包括源代码,还需要包括:需求相关文档、设计文档、计划日志文档、测试文档、项目进行中学习资料文档(参考Demo);使整个项目更加清晰,
- 源代码目录规范:
一般系统命名空间目录尽量不要超过3层,[组织名].[项目名].[模块名]:com.tsjk.demo
- Res资源文件命名
- res/layout下的xml文件统一用小写和下划线"_"组合命名,并加上前缀以便区分
正例:
对话框的xml配置文件:dlg_name.xml
- layout中的id采用以下命名模式: view缩写_模块名称_view的逻辑名称
说明:view的缩写详情如下
ListView: lv
RelativeView: rv
TextView: tv
ImageView: iv
ImageButton: ib / ibtn
Button: btn
正例:
@+id/lv_appstore_applist
反例:
@+id/ListView01
- activity文中的view变量采用以下命名模式: 逻辑名称_view缩写
正例:
ListViewapplistLv
- res/drawable下的资源文件采用以下命名模式: activity名称_逻辑名称/common_逻辑名称
正例:
main_default.png,main_pressed.png
- strings.xml中的id采用以下命名模式: activity名称_功能模块名称_逻辑名称/activity名称_逻辑名称/common_逻辑名称
正例:
<string name="main_downloading">正在下载„</string>
- 字符串信息应统一在strings.xml中定义,调试信息除外
- 使用日志时,不重要的信息定义在debug等级或者info等级,较为严重的情况把日志定义的warn等级和error等级。正常情况下尽量不使用System.out.println();作为日志的输出 Log的TAG要包含类名和编写人名字以及日期,例如Log.e(“ImgUtils 张三 20180719 18:00”)
- 代码书写规范
- 建立标准的缩进大小(如四个空格),并一致地使用此标准。用规定的缩进对齐代码节。
- 在括号对对齐的位置垂直对齐左括号和右括号,如:
for (i=0; i<100; i++) { // do sth. }
- 为注释和代码建立最大的行长度,以避免不得不滚动源代码编辑器,并且可以提供整齐的硬拷贝表示形式。
- 当一行内容太长而必须换行时,在后面换行代码中要使用缩进格式,如下:
string inserString ="Insert Into TableName(username,password,email,sex,address) " +"Values( 'Soholife ', 'chenyp ', 'soholife@sina.com ', 'male ', '深圳福田 ') ";
- 每一行上放置的语句避免超过一条。特殊循环如for(i =0;i<100;i++)等除外。
- 编写SQL语句时,对于关键字使用全部大写,对于数据库元素(如表、列和视图)使用大小写混合。例如
SELECT * FROM Table1;