Java 命名规范

1 命名规范

命名规则

大驼峰命名(UpperCamelCase):每个单词的第一个字母大写,其他字母小写。

小驼峰命名(lowerCamelCase):如果仅有一个单词,那么所有字母全部小写,如果是两个及以上的单词组成的名称,那么除了第一个单词是全部小写外,其他但是的首字母大写,其他字母小写。

所有的命名都应该以字母(A-Z或者a-z)、美元符($)或者下划线(_)开始;

首字符之后可以是字母(A-Z或者a-z)、美元符($)或者下划线(_)或者数字的任何字符组合;

严禁使用关键词命名;

严禁使用拼音与英文的混合方式命名,更不允许使用中文的方式命名;

命名尽量使用英文,除了通用的拼音(Beijing)可视为英文,其他的拼音都不是英文;

命名除了常见的英文缩写,尽量避免使用缩写;

命名需要简洁,见名知意,通俗易懂;

1.1 包的命名

包的命名由全部小写的单词组成。一般使用公司的域名的作为自己程序包的唯一前缀,使用倒域名规则,例如:com.baidu.项目名,然后针对每个具体的模块在区分每个模块包名,例如:论坛模块的整体包名:com.baidu.项目名.tribune。

1.2 类的命名

类的命名遵循大驼峰命名的规则,常见类的命名规则如下:

类描述举例

Activity类以Activity为后缀启动页面:LaunchActivity

Fragment类以Fragment为后缀论坛推荐列表:TribuneRecommendFragment

Adapter类以Adapter为后缀论坛适配器:TribuneAdapter

ViewHolder类以ViewHolder为后缀广告类型:AdViewHolder

Bean类以Bean为后缀新闻实体类:NewsBean

Model类以Model为后缀论坛推荐Model:TribuneRecommendModel

工具类以Util为后缀网络工具类:NetWorkUtil

Service类以Service为后缀音频服务:AudioService

BroadcastReceiver 类以Receiver为后缀音频广播:AudioReceiver

ContentProvider类以Provider为后缀联系人的内容提供者:ContactsProvider

Dialog类以Dialog为后缀加载:LoadingDialog

监听器类以Listener为后缀网络监听:NetWorkListener

自定义基础类以Base为前缀例如:BaseActivity,BaseFragment

抽象类以 Abstract或者Abs为前缀例如:AbsBean

管理类以Manager为后缀联系人管理类:ContactsManager

解析类以Parser为后缀新闻Json解析类: NewsJsonParser

1.3 接口的命名

接口命名遵循大驼峰命名的规则,以大写的I开头,表示这是一个接口,以able或ible截尾。

1.4 变量命名

变量的命名遵循小驼峰命名的规则,其中控件的变量建议使用控件缩写+逻辑名称的格式,例如:

private TextView tvUserName;。

其中布局中每个控件的id命名为控件缩写_逻辑名称,例如:tv_user_name。

常见控件的缩写如下:

控件缩写控件缩写

TextViewtvEditTextet

ButtonbtnImageViewiv

ListviewlvRecyclerViewrv

GridViewgvWebViewwv

LinearlayoutllRlativeLayoutrl

FrameLayoutflScrollViewsv

ProgressBarpbImageButtonib

CheckBoxcbRadioButtonrb

RadioGrouprgSeekBarsb

VideoViewvvSurfaceViewsv

1.5 常量的命名

常量名称的每个单词都大写,并且每个单词之间通过下划线(_)连接,例如:

publicstaticfinalintREQUEST_KEY_CODE =1;

1.6 方法的命名

方法的命名遵循小驼峰命名的规则,以动词+名词的方式组成,例如初始化view:initView()。

1.7 资源文件命名

全部小写,并通过下划线连接。

1.7.1 布局文件的命名

以对应的类别名称为前缀,然后紧跟模块包名,最后是逻辑名称,他们之间通过下划线连接。

常见的命名如下:

布局类型布局前缀举例

Activityactivity_模块名_求助主页面:activity_sos_main

Fragmentfragment_模块名_论坛推荐:fragment_tribune_recommend

列表itemitem_模块名_论坛推荐:item_tribune_recommend

Dialogdialog_论坛详情页回复:dialog_tribune_reply

Includeinclude_全局通用的标题栏:include_global_title

1.7.2 动画资源文件命名

动画效果命名风格

淡入/淡出fade_in/fade_out

从某个方向淡入/淡出fade_方向_in(out)

从某个方向弹入/弹出push_方向_in(out)

从某个方向滑入/滑出slide_方向_in(out)

1.7.3 value中name命名

1.7.3.1 strings.xml

命名格式:string_模块名_逻辑功能,例如:启动页面的跳过:

name=“string_launch_jump”>跳过

1.7.3.2 colors.xml

命名格式:color_颜色值,其实颜色值是16进制,例如:白色:

name=“color_ffffff”>#FFFFFF

1.7.3.3 styles.xml

遵循大驼峰命名的规则,XXXStyle,例如:LoadingStyle。

1.7.3.4 dimens.xml

文字:font_字号,字号单位是sp;

距离:space_距离值,距离单位是dp;

控件的宽高:具体控件width/height宽高值,宽高值单位是dp。

代码如下:

18sp16dp48dp24dp

2 格式规范

2.1大括号的使用

大括号的开始在代码块开始的行尾,结束在代码块同一缩进的行首;

条件语句一定使用大括号;

左大括号前不换行,右大括号前换行,除了if-else,try-catch;

大括号内没有任何代码,不换行。

2.2 空格的使用

表示分隔时用一个空格;

运算符两边用一个空格隔开;

逗号语句后面如果不换行,也用一个空格。

3 注释

3.1 类、接口注释

使用多行注释的方式,规则如下:

/**

  • Author:开发人员姓名

  • Email:开发人员邮箱

  • Description: 描述该类/接口实现的具体功能

  • Date: 2020/7/2 14:16 创建该类的时间

*/

3.2 方法注释

3.2.1 整体方法注释

使用多行注释的方式,规则如下:

/*** 描述方法实现的功能*@params 说明参数含义*@return说明返回值含义*/

3.2.2 方法内部注释

方法内部单行注释,在被注释语句上方另起一行,使用“//”注释。

方法内部注释,使用/* … */注释。

注释与代码要对齐,*及// 与其后面的文字之间空一格。

3.3 变量注释

使用单行注释的方式,使用“//”注释,在变量后面天啊及,如果注释太长,在变量上方添加。

3.4 xml注释

以上,是我目前总结的常用的Android代码规范,希望对大家有所帮助,以后会根据自己对代码规范的要求提升继续补充!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
1. 模块命名、数据库表命名、域模型命名、各分层的类/方法命名、页面的命名; 模块命名: a. 包命名:com.project_name.module_name.action/service/dao/ws; service的实现都置于com.project_name.module_name.service.impl下; b. 接口命名遵守XxxxService,接口实现遵守XxxxServiceImpl; 2. 包的设计、页面的层次结构设计(jsp/css/js等文件的结构); 3. log、异常(声明式异常)的约定设计; 4. 链接、按钮、表单提交的统一方式;通用式Ajax调用与页面跳转统一模型; 5. 响应一个请求的分层结构约定,列举几个示例(常规调用、Ajax调用、WebService调用、提供WebService暴露、硬件设备接口调用); 6. 验证代码质量的约定,如JUnit、EMMA、FindBugs、CheckStyle、PMD的使用;Hudson持续集成需注意的; 7. 压力测试、防内存泄漏测试; 基础CSS:标签的各种状态的样式;表格单双行的样式; 开发一个Action请求的响应: 前置条件:该Action涉及的Entity及EntityName.hbm.xml已经准备好。 步骤: a. 前端页面触发Action的请求; 统一采用全路径请求,URL格式: 1> basePath/web/moduleName/*_ *.action {1}  EntityName,{2}  ActionMethodName 2> basePath/web/moduleName/gotoXxx.action (无需调用Service,直接跳转) 包括jQuery的Ajax方式和非Ajax方式; 包括表单提交; 参数设值的方式: 1> URL参数: basePath/web/moduleName/*_*.action?entity.propertyName=paramValue&paramName=paramValue 2> 或 另外,对于表单的提交,前后台都必须做数据校验,SWDF已提供了此能力,进行简单的配置即可,前台直接提供类似以下代码即可,点此查看前端校验详细规则说明。 前端校验示例; 后台数据校验,点此查看校验详细说明. b. 配置struts-moduleName.xml; 直接跳转示例; 调用Service示例; c. 开发对应的{EntityName}Action类; 该类必须继承com.hikvision.swdf.xx.BaseAction,该Action类有一个关键属性entity,即泛型Entity类的一个实体,该属性默认填充好了请求提交过来的entity对应参数(即entity.propertyName); d. 开发Service接口和Service接口实现,并在Action中通过set方法注入该Service; 接口文件:UserService 接口实现:UserServiceImpl 注入Service e. 开发DAO,DAO继承com.hikvision.xxx.HibernateBaseDAO; 示例 f. 配置applicationContext-*.xml; 配置DAO bean、Service Bean、Action Bean及注入的配置; g. 测试; 备注: 1. Action建议统一遵守通配符的约定,basePath/web/moduleName/*_ *.action {1}  EntityName,{2}  ActionMethodName 2. 统一命名规则:接口类似UserService,接口实现类型UserServiceImpl;(IUserService和UserServiceImpl) 开发一个Action调用关联应用提供的WebService 前置条件:该WebService?WSDL可正常获取 步骤: a. 配置applicationContext-wsclient.xml; Spring管理第三方WebService实例bean Jaxws-client配置代码 b. 生成第三方WebService接口文件;(提供系统自动生成) 自动生成代码 c. 页面调用Action请求,Action中注入WebService实例bean; Action对应方法直接调用第三方WebService的相关方法; d. 测试; 备注: 1. 步骤b,接口文件必须同包名同类名置于src目录下; 开发一个Action调用关联应用开放的HTTP请求 步骤: 1. 页面调用Action请求; 2. Action类相应方法使用封装好的HttpClient相关工具类,准备好HTTP请求的相关参数header参数和body参数并以xml的方式提交HTTP请求; 3. 解析该HTTP请求返回值(XML或JSON); 4. 响应结果; 5. 测试; 备注: 开发一个需要对第三方应用发布的WebService 步骤: a. 开发WebService接口,@WebService进行注解该接口; b. 开发WebService接口实现类,@WebService注解该实现类,并制定endpointInterface; c. 配置applicationContext-ws.xml d. 测试 备注: 开发一个需要对第三方应用发布的RESTful Service 步骤: a. 开发RS接口,提供如下Annotation; b. 开发RS接口实现,并提供如下Annotation; c. 配置applicationContext-rs.xml 备注: 所有Annotation的涵义解释如下:
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值