Android代码规范

命名规范

  1. 代码缩进使用4个空格,不是tab键。(可自己配置使按tab表示4个空格)
  2. 统一使用UTF-8编码,避免乱码问题。
  3. 尽量少使用拼音。

包命名规范

采用反域名命名规则,包名全部小写,连续的单词只是简单地连接起来,不使用下划线,一级包名为com,二级包名为xxx(可以是公司域名或者个人命名),三级包名根据应用进行命名,四级包名为模块名或层级名。如:
com.isa.crm.activity | com.isa.crm.adapter

包名说明
com.xxx.应用名称缩写.activity页面用到的Activity类
com.xxx.应用名称缩写.fragment页面用到的Fragment类
com.xxx.应用名称缩写.base页面中每个Activity类共享的可以写成一个BaseActivity类(基础共享的类)
com.xxx.应用名称缩写.adapter页面用到的Adapter类(适配器的类)
com.xxx.应用名称缩写.utils此包中包含:公共工具方法类(包含日期、网络、存储、日志等工具类)
com.xxx.应用名称缩写.bean(model/domain均可,个人喜好)实体类
com.xxx.应用名称缩写.db数据库操作
com.xxx.应用名称缩写.widget(或者.ui)自定义的View类等
com.xxx.应用名称缩写.serviceService服务
com.xxx.应用名称缩写.broadcastBroadcast服务

JAVA类命名规范

采用大驼峰式命名法,尽量避免缩写,除非该缩写是众所周知的,比如HTML,URL,如果类名称包含单词缩写,则单词缩写的每个字母均应大写。如:
Product | ProductManager |
ProductListActivity | ProductListAdapter | JsonHTTPSRequest

描述例如
Application类Application为后缀标识XXXApplication
Activity类Activity为后缀标识闪屏页面类SplashActivity
解析类为后缀标识
公共方法类Utils或Manager或Tools为后缀标识线程池管理类:ThreadPoolManager日志工具类:LogUtils
数据库类以DBHelper后缀标识MySQLiteDBHelper
Service类以Service为后缀标识播放服务:PlayService
BroadcastReceiver类以Broadcast为后缀标识时间通知:TimeBroadcast
ContentProvider类以Provider为后缀标识单词内容提供者:DictProvider
直接写的共享基础类以Base为前缀BaseActivity,BaseFragment

接口命名规范

命名规则与类一样采用大驼峰命名法,多以able或ible结尾。例如: interface Runable | interface Accessible

成员变量命名规范

采用小驼峰命名法。

临时变量命名

使用Google的m命名法。 例如:
 private String mUserName;
静态变量可以使用s开头,例如:
private static String sUserName;

常量命名

常量使用全大写字母加下划线的方式命名。例如:
public static final String TAG = "tag";
public static final String ACTION_MAIN="android.intent.action.MAIN";

控件实例命名

类中控件名称必须与xml布局id保持一致(可以去掉{module_name})。例如:
在布局文件中 Button 的id为: android:id="@+id/btn_pay"
private Button btn_pay;

方法命名规范

动词或动名词,采用小驼峰命名法。例如: run(); | onCreate(); | syncProducts();

布局文件(Layout)命名规范

全部小写,采用下划线命名法。其中{module_name}为业务模块或是功能模块等模块化的名称或简称。 activity layout: {module_name}activity{名称} 例如:
crm_activity_main.xml | crm_activity_shopping.xml
fragment layout:{module_name}fragment{名称} 例如:
crm_fragment_main.xml | crm_fragment_shopping.xml
Dialog layout: {module_name}dialog{名称} 例如:
crm_dialog_loading.xml
包含项布局命名:include_{名称} 例如:
include_head.xml
adapter的子布局: {module_name}item{名称}_名称(listview的名称)lv 例如:
crm_item_shopping_xxlv.xml
共用的 item_名字
widget layout: {module_name}widget{名称} 例如:
crm_widget_shopping_detail.xml

资源id命名规范

命名模式为:{view缩写}布局的名字({module_name}activity(或其他如:fragment){名称}(可以只写{名称})){view的逻辑名称},如:
顾客管理CRM模块布局 LinearLayout 的布局id –> ll_shopping_content(全名是ll_crm_activity_shopping_content)
item里的控件命名{view缩写}_布局的名字可以只写{名称}item{view的逻辑名称} ll_shopping_item_content

常见控件View与其缩写对照参考表如下:
输入图片说明
strings.xml中的id命名
命名模式:功能模块名称_activity名称_逻辑名称

图片资源文件命名规范

图标命名:布局的名字({module_name}activity(或其他如:fragment){名称}(可以只写{名称}))ic{名称} 例如:
shopping_ic_app.png   全名是crm_activity_shopping_ic_app.png
背景图片命名: 布局的名字_bg_{名称} 例如:
shopping_bg_navbar_highlight_normal.9.png
按钮Button命名: 布局的名字_btn_{名称} 例如:
shopping_btn_login_normal.9.png
按钮checkbox图片命名:布局的名字_checkbox_{名称} 例如:
shopping_checkbox_cart_true.png
共用图片命名:gl(global缩写)开头,例如:
gl_ic_blue_circle.png
gl_bg_blue_circle.png
动画文件命名动画文件(anim文件夹下):全部小写,采用下划线命名法,加前缀区分。
//前面为动画的类型,后面为方向

动画命名例子规范写法
fade_in淡入
fade_out淡出
push_down_in从下方推入
push_down_out从下方推出
push_left推像左方
slide_in_from_top从头部滑动进入
zoom_enter变形进入
slide_in滑动进入
shrink_to_middle中间缩小

注释

对实例变量、类常量进行注释说明 例如:

// 用户姓名
private String userName

对类、接口进行注释说明 例如:

/**
* Activity基类
* /
public class BaseActivity extends Activity{

}

对方法进行注释说明 例如:

/**
* 请求
*
* @param path 路径
* @param generalParams 基本参数
* @param businessParams 业务参数
* @return 请求结果
* @throws ApiException 请求错误则返回该异常
* /  
public Map<String, Object> request (String path,
              Map<String, Object> generalParams,
              Map<String, Object> businessParams) throws ApiException {

              return null;
}

AndroidUI优化

  1. layout组件化,尽量使用merge及include复用
  2. 使用styles,复用样式定义
  3. 软键盘的弹出控制,不要让其覆盖输入框
  4. 数字、字母和汉字混排占位问题:将数字和字母全角化。由于现在大多数情况下我们的输入都是半角,所以 字母和数字的占位无法确定,但是一旦全角化之后,数字、字母的占位就和一个汉字的占位相同了,这样就可以避免由于占位导致的排版问题。
  5. 英文文档排版:textview自动换行时要保持单词的完整性,解决方案是计算字符串长度,然后手动设定每一行显示多少个字母并加上‘\n‘
  6. 复杂布局使用RelativeLayout
  7. 自适应屏幕,使用dp替代pix
  8. 使用android:layout_weight或者TableLayout制作等分布局
  9. 使用animation-list制作动画效果
  10. 复用、回收Activity对象

临时的activity及时finish 主界面设置为singleTask 一般界面设置为singleTop

驼峰式命名法(CamelCase)

  • 这里是列表文本大驼峰式命名法(UpperCamelCase):
    每个单词的第一个字母都大写 如:XmlHttpRequest
  • 小驼峰式命名法(lowerCamelCase):
    除了第一个单词,每个单词的第一个字母都大写 如:xmlHttpRequest

说明

该篇介绍为Android项目开发过程中的一些常用的命名规范|代码编写风格规范,该规范来源于个人资料整理(参考网络技术博客)、个人项目实践。参考这些规范有助于 项目的协同开发,项目代码的风格统一、在项目的后期维护中更方便、快捷的查找、理解和修改别人的代码。如朋友们有更好的规范要求、欢迎分享出来、一起讨论。

附录

一些常见的单词缩写

名称缩写
iconic(主要用在app的图标)
colorcl(主要用于颜色值)
dividerdi(主要用于分隔线,不仅包括Listview中的divider,还包括普通布局中的线)
selectorsl(主要用于某一view多种状态,不仅包括Listview中的selector,还包括按钮的selector)
averageavg
backgroundbg(主要用于布局和子布局的背景)
bufferbuf
controlctrl
deletedel
documentdoc
errorerr
escapeesc
incrementinc
infomationinfo
initialinit
imageimg
lengthlen
librarylib
messagemsg
passwordpwd
positionpos
serversrv
stringstr
temptmp
windowwnd(win)

转载于:https://my.oschina.net/u/1270204/blog/819421

【使用教程】 一、环境配置 1、建议下载anaconda和pycharm 在anaconda中配置好环境,然后直接导入到pycharm中,在pycharm中运行项目 anaconda和pycharm安装及环境配置参考网上博客,有很多博主介绍 2、在anacodna中安装requirements.txt中的软件包 命令为:pip install -r requirements.txt 或者改成清华源后再执行以上命令,这样安装要快一些 软件包都安装成功后才算成功 3、安装好软件包后,把anaconda中对应的python导入到pycharm中即可(不难,参考网上博客) 二、环境配置好后,开始训练(也可以训练自己数据集) 1、数据集准备 需要准备yolo格式的目标检测数据集,如果不清楚yolo数据集格式,或者有其他数据训练需求,请看博主yolo格式各种数据集集合链接:https://blog.csdn.net/DeepLearning_/article/details/127276492 里面涵盖了上百种yolo数据集,且在不断更新,基本都是实际项目使用。来自于网上收集、实际场景采集制作等,自己使用labelimg标注工具标注的。数据集质量绝对有保证! 本项目所使用的数据集,见csdn该资源下载页面中的介绍栏,里面有对应的下载链接,下载后可直接使用。 2、数据准备好,开始修改配置文件 参考代码中data文件夹下的banana_ripe.yaml,可以自己新建一个不同名称的yaml文件 train:训练集的图片路径 val:验证集的图片路径 names: 0: very-ripe 类别1 1: immature 类别2 2: mid-ripe 类别3 格式按照banana_ripe.yaml照葫芦画瓢就行,不需要过多参考网上的 3、修改train_dual.py中的配置参数,开始训练模型 方式一: 修改点: a.--weights参数,填入'yolov9-s.pt',博主训练的是yolov9-s,根据自己需求可自定义 b.--cfg参数,填入 models/detect/yolov9-c.yaml c.--data参数,填入data/banana_ripe.yaml,可自定义自己的yaml路径 d.--hyp参数,填入hyp.scratch-high.yaml e.--epochs参数,填入100或者200都行,根据自己的数据集可改 f.--batch-size参数,根据自己的电脑性能(显存大小)自定义修改 g.--device参数,一张显卡的话,就填0。没显卡,使用cpu训练,就填cpu h.--close-mosaic参数,填入15 以上修改好,直接pycharm中运行train_dual.py开始训练 方式二: 命令行方式,在pycharm中的终端窗口输入如下命令,可根据自己情况修改参数 官方示例:python train_dual.py --workers 8 --device 0 --batch 16 --data data/coco.yaml --img 640 --cfg models/detect/yolov9-c.yaml --weights '' --name yolov9-c --hyp hyp.scratch-high.yaml --min-items 0 --epochs 500 --close-mosaic 15 训练完会在runs/train文件下生成对应的训练文件及模型,后续测试可以拿来用。 三、测试 1、训练完,测试 修改detect_dual.py中的参数 --weights,改成上面训练得到的best.pt对应的路径 --source,需要测试的数据图片存放的位置,代码中的test_imgs --conf-thres,置信度阈值,自定义修改 --iou-thres,iou阈值,自定义修改 其他默认即可 pycharm中运行detect_dual.py 在runs/detect文件夹下存放检测结果图片或者视频 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值