(4.6.18)Android编码命名规范

Android编码命名规范



Android编码命名规范

今年正式本科毕业,目前为止参与过的团队开发项目也有四五个。阅读过各式各样的混乱代码,最离谱的见过所有的变量都用中文拼音首字母,心中真是万千匹草泥马在奔腾。由此,也意识到命名对于编码的重要性。有人说,看一个开发者的水平如何,从看他代码的命名可以大致得出结论。好的命名除了可以让项目成员快速且更好的理解代码,自己读起来也赏心悦目。为此,特地根据自己平常的一些编码规范和网上一些资料进行整理汇总,方便自己时常查看对比。

基本的命名法

Java编程比较常见的有下面三种命名方式

  1. 驼峰(Camel)命名法:又称小驼峰命名法,除首单词外,其余所有单词的第一个字母大写。
  2. 帕斯卡(pascal)命名法:又称大驼峰命名法,所有单词的第一个字母大写
  3. 下划线命名法:单词与单词间用下划线做间隔

一般建议拿来做命名的单词要比较精悍短小,这样即使两三个单词一起拼装成一个命名,也不至于显得很冗长。当然有些单词我们也可以直接写成一些约定俗成的缩写。诸如:msg(message)、init(initial)、img(image)等.....

个人认为,这些缩写可参照业界常见的缩写命名,也可以根据当前项目中的风格,进行团队成员间的约定。这样相对比较灵活,也方便团队成员之间相互理解。

包命名

采用反域名命名规则,全部使用小写字母。

  1. 一级包名为com;
  2. 二级包名为xx(可以是公司或则个人的随便);
  3. 三级包名应用的英文名app_name;
  4. 四级包名为模块名或层级名;

下面罗列一些常见的命名划分方式

命名格式作用
com.xx.app_name.activities(或com.xx.app_name.activity)存放app所有的Activity
com.xx.app_name.service存放app所有的Service
com.xx.app_name.receiver存放app所有的BroadcastReceiver
com.xx.app_name.provider存放app所有的ContentProvider
com.xx.app_name.fragment存放app所有的Fragment
com.xx.app_name.dialog存放app所有的Dialog
com.xx.app_name.base存放app一些共有的基础模块,诸如BaseActivity、BaseContentProvider、BaseService,BaseFragment等
com.xx.app_name.utils存放app的工具类,诸如格式化日期的DateFormatUtils,处理字符串的StringUtils等
com.xx.app_name.bean(或com.xx.app_name.unity)存放app自定义的实体类
com.xx.app_name.db)存放app数据库操作相关的类
com.xx.app_name.view)存放app自定义的控件
com.xx.app_name.adapter)存放app所有的适配器类

类命名

名词,采用大驼峰命名法,尽量避免缩写,除非该缩写是众所周知的。如HTML,URL,JSON,XML等.

命名格式示例
ActivityXXX功能+Activity如主界面HomeActivity,启动页LauncherActivity
ServiceXXX功能+Service如消息推送的Service,PushService或PushMessageService
BroadcastReceiverXXX功能+Receiver如在线的消息广播接受者,OnlineReceiver
ContentProviderXXX功能+Provider如联系人的内容提供者,ContactsProvider
FragmentXXX功能+Fragment如显示联系人的Fragment,ContactsFragment
DialogXXX功能+Dialog如普通的选择提示对话框,ChoiceDialog
AdapterXXX功能+XX类型控件Adapter如联系人列表,ContactsListAdapter
基础功能类Base+XX父类名如BaseActivity,BaseFragment
工具类XXX功能+Utils如处理字符串的工具类,StringUtils
管理类XXX功能+Manager如管理联系人的类,ContactsManager

接口命名

和类名基本一致。也可以在接口名前面再加一个大写的I,表明这是一个接口Interface。

如:可以表明一个信息是否可以分享的接口,可以命名为Shareable,也可以是IShareable。

方法

动词或动名词,采用小驼峰命名法。

下面是一些比较常见的命名风格和含义

命名风格含义
initXX()初始化,如初始化所有控件initView()
isXX()是否满足某种要求,如是否为注册用户isRegister()
processXX()对数据做某些处理,可以以process作为前缀
displayXX()显示提示信息,如displayXXDialog,displayToast,displayXXPopupWindow
saveXX()保存XX数据
resetXX()重置XX数据
addXX()/insertXX()添加XX数据
deleteXX()/removeXX()删除XX数据
updateXX()更新XX数据
searchXX()/findXX()/queryXX()查找XX数据
draw()控件里面使用居多,例如绘制文本drawText

变量

采用小驼峰命名法。同样比较简单,但为了更好表明含义,我建议做一下的的区分

  • 成员变量命名前面加m(member,表示成员变量之意),如,控件的宽高 mWidth,mHeight
  • 静态类变量前面加s(static,表示静态变量之意),如,一个静态的单例 sSingleInstance

常量

同样较为简单,全部大写,采用下划线命名法.如:MIN_WIDTH,MAX_SIZE

布局资源文件(layout文件夹下)

全部小写,采用下划线命名法.

下面是一些比较常见的命名风格和含义

布局类型命名风格
Activity的xml布局activity_+XX功能,如主页面activity_home
Fragment的xml布局fragment_+XX功能,如联系人模块fragment_contacts
Dialog的xml布局dialog_+XX功能,如选择日期dialog_select_date
抽取出来复用的xml布局(include)include_+XX功能,如底部tab栏include_bottom_tabs
ListView或者RecyclerView的item xml布局XX功能+_list_item,如联系人的contact_info_list_item
GridView的item xml布局XX功能+_grid_item,如相册的album_grid_item

动画资源文件(anim文件夹下)

全部小写,采用下划线命名法,加前缀区分.

下面是一些比较常见的命名风格和含义

动画效果命名风格
淡入/淡出fade_in/fade_out
从某个方向淡入/淡出fade_方向_in(out),右边淡入淡出fade_right_in(out)
从某个方向弹入/弹出push_方向_in(out),右边推入推出push_right_in(out)
从某个方向滑入/滑出slide_in(out)from方向,右边滑入滑出slide_in(out)_from_right

strings和colors资源文件

小驼峰命名法,命名风格大致如下:

  • string命名格式:XX界面_XX功能_str,如 activity_home_welcome_str
  • color命名格式:color_16进制颜色值,如红色 color_ff0000

像string通常建议把同一个界面的所有string都放到一起,方便查找。而color的命名则省去我们头疼的想这个颜色怎么命名。

selecor、drawable、layer-list资源文件

小驼峰命名法。命名风格通常都是XX_selector、XX_drawable、XX_layer。

下面举两个比较常用的栗子:

  • 按钮按压效果button_selector,正常状态命名为button_normal(XX_normal),按压状态命名为button_pressed(XX_pressed)
  • 选择效果checkbox_selector,未选中状态命名为checkbox_unchecked(XX_unchecked),选中状态为checkbox_checked(XX_checked)

styles、dimens资源文件

  • style采用大驼峰命名法,主题可以命名为XXTheme,控件的风格可以命名为XXStyle
  • dimen采用小驼峰命名法,如所有Activity的titlebar的高度,activity_title_height_dimen

控件id命名

因为有些控件平常不常用,所以上网搜罗了一份下来。集大家之所长,以作参考。

控件前缀缩写
RelativeLayoutrl
LinearLayoutll
FrameLayoutfl
TextViewtv
Buttonbtn
ImageButtonimgBtn
ImageViewimgView或iv
CheckBoxchk
RadioButtonrdoBtn
analogClockanaClk
DigtalClockdgtClk
DatePickerdtPk
EditTextedtTxt或et
TimePickertmPk
toggleButtontglBtn
ProgressBarproBar
SeekBarskBar
AutoCompleteTextViewautoTxt
ZoomControlzmCtl
VideoViewvdoVi
WebViewwebVi
Spinnerspn
Chronometercmt
ScollViewsclVi
TextSwitchtxtSwt
ImageSwitchimgSwt
ListViewlv
GridViewgv
ExpandableListepdLt
MapViewmapVi

以上就是从网上搜罗整理下来的,大家也可以做纠正或者补充。

总结

以上就是综合很多网上很多资料,再加上平时开发经验进行汇总整理的命名规范。好的命名规则能够提高代码质量,使得新人加入项目的时候降低理解代码的难度。最后我还要啰嗦一下几点:

  • 规矩终究是死的,适合团队的才是最好的
  • 命名规范需要团队一起齐心协力来维护执行,在团队生活里,谁都不可能独善其身
  • 如果你觉得你的命名晦涩难懂,那么,你可以开始动手了
  • 一开始总会不习惯的,一步一个脚印,持之以恒,总会成功的

文章同步归档到此处:https://github.com/D-clock/Doc/tree/master/Code



文/D_clock爱吃葱花(简书作者)
原文链接:http://www.jianshu.com/p/bb4f5033e573
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自动控制节水灌溉技术的高低代表着农业现代化的发展状况,灌溉系统自动化水平较低是制约我国高效农业发展的主要原因。本文就此问题研究了单片机控制的滴灌节水灌溉系统,该系统可对不同土壤的湿度进行监控,并按照作物对土壤湿度的要求进行适时、适量灌水,其核心是单片机和PC机构成的控制部分,主要对土壤湿度与灌水量之间的关系、灌溉控制技术及设备系统的硬件、软件编程各个部分进行了深入的研究。 单片机控制部分采用上下位机的形式。下位机硬件部分选用AT89C51单片机为核心,主要由土壤湿度传感器,信号处理电路,显示电路,输出控制电路,故障报警电路等组成,软件选用汇编语言编程。上位机选用586型以上PC机,通过MAX232芯片实现同下位机的电平转换功能,上下位机之间通过串行通信方式进行数据的双向传输,软件选用VB高级编程语言以建立友好的人机界面。系统主要具有以下功能:可在PC机提供的人机对话界面上设置作物要求的土壤湿度相关参数;单片机可将土壤湿度传感器检测到的土壤湿度模拟量转换成数字量,显示于LED显示器上,同时单片机可采用串行通信方式将此湿度传输到PC机上;PC机通过其内设程序计算出所需的灌水量和灌水时间,且显示于界面上,并将有关的灌水信息反馈给单片机,若需灌水,则单片机系统启动鸣音报警,发出灌水信号,并经放大驱动设备,开启电磁阀进行倒计时定时灌水,若不需灌水,即PC机上显示的灌水量和灌水时间均为0,系统不进行灌水。
智慧农业是一种结合了现代信息技术,包括物联网、大数据、云计算等,对农业生产过程进行智能化管理和监控的新模式。它通过各种传感器和设备采集农业生产中的关键数据,如大气、土壤和水质参数,以及生物生长状态等,实现远程诊断和精准调控。智慧农业的核心价在于提高农业生产效率,保障食品安全,实现资源的可持续利用,并为农业产业的转型升级提供支持。 智慧农业的实现依赖于多个子系统,包括但不限于设施蔬菜精细化种植管理系统、农业技术资料库、数据采集系统、防伪防串货系统、食品安全与质量追溯系统、应急追溯系统、灾情疫情防控系统、农业工作管理系统、远程诊断系统、监控中心、环境监测系统、智能环境控制系统等。这些系统共同构成了一个综合的信息管理和服务平台,使得农业生产者能够基于数据做出更加科学的决策。 数据采集是智慧农业的基础。通过手工录入、传感器自动采集、移动端录入、条码/RFID扫描录入、拍照录入以及GPS和遥感技术等多种方式,智慧农业系统能够全面收集农业生产过程中的各种数据。这些数据不仅包括环境参数,还涵盖了生长状态、加工保存、检验检疫等环节,为农业生产提供了全面的数据支持。 智慧农业的应用前景广阔,它不仅能够提升农业生产的管理水平,还能够通过各种应用系统,如库房管理、无公害监控、物资管理、成本控制等,为农业生产者提供全面的服务。此外,智慧农业还能够支持政府监管,通过发病报告、投入品报告、死亡报告等,加强农业产品的安全管理和质量控制。 面对智慧农业的建设和发展,存在一些挑战,如投资成本高、生产过程标准化难度大、数据采集和监测的技术难题等。为了克服这些挑战,需要政府、企业和相关机构的共同努力,通过政策支持、技术创新和教育培训等手段,推动智慧农业的健康发展。智慧农业的建设需要明确建设目的,选择合适的系统模块,并制定合理的设备布署方案,以实现农业生产的智能化、精准化和高效化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值