移动端开发规范

移动端开发规范移动端开发规范引言:最近得空,整理一些平时工作中要求的开发规范,浅薄之处还请大家多指教。目录移动端开发规范代码规范基本原则代码清晰一致性通用规范类命名方法命名变量命名常量命名枚举类型命名图片命名通用规范通用设计规范开屏页版本号版本检查开屏页广告推送通用测试用例及处理规范规范用例数据埋点规范…

大家好,又见面了,我是你们的朋友全栈君。

移动端开发规范

 

引言:最近得空,整理一些平时工作中要求的开发规范,浅薄之处还请大家多指教。

 

目录

移动端开发规范

代码规范

基本原则

代码清晰

一致性

通用规范

类命名

方法命名

变量命名

常量命名

枚举类型命名

图片命名

通用规范

通用设计规范

开屏页版本号

版本检查

开屏页广告

推送

通用测试用例及处理规范

规范

用例

数据埋点规范

事件类型

事件通用参数

事件封装

初始化事件统计式例

标准用户操作事件式例

页面事件式例

其它功能特性

常用埋点策略

源代码管理规范

分支类型

分支使用


 

 

代码规范

基本原则

  • 代码清晰

又清晰又简洁的代码当然是最好的了,但简洁不如清晰重要。总的讲不要使用单词的简写,除了非常常用的简写以外,尽量使用单词全称。API的名称不要有歧义,一看你的API就知道是以什么方式做了什么事情,不要让人有疑问!

  • 一致性

代码保持一致,例如:创建UI相关的方法,可以使用统一的方法命名,所见即所得,见表知其意,这样,既保证了代码的一致性,也可以方便我们后续维护和管理,也利于团队代码风格的一致,协调!

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

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

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

通用规范

  • 类命名

名词,采用大驼峰命名法,尽量避免缩写,除非该缩写是众所周知的。如HTML,URL,JSON,XML等.当然也可以根据开发中的一些命名习惯进行进行缩写,比如Activity会缩写为AC,UIViewController会缩写为VC。

接口命名

和类名基本一致。也可以在接口名前面再加一个大写的I,表明这是一个接口Interface。如:可以表明一个信息是否可以分享的接口,可以命名为Shareable,也可以是IShareable。

  • 方法命名

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

  • 变量命名

采用小驼峰命名法。同样比较简单,但为了更好表明含义,建议做一下的的区分。成员变量命名前面加m(member,表示成员变量之意),如,控件的宽高 mWidth,mHeight。

  • 常量命名

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

  • 枚举类型命名

首字母大写,之后每个单词首字母都大写,最后加“s” 枚举变量使用枚举类型去掉“s”作为前缀,每个单词首字母大写,中间不允许加下划线 举例:

typedef enum UIControlEvents

{ 

UIControlEventTouchDown,

UIControlEventTouchUpInside 

}

UIControlEvents;
  • 图片命名

这个图片资源命名方式,以功能为组织形式,是一个很好的习惯,有利于查看资源文件。

原则

采用单词全拼,或者大家公认无岐义的缩写(比如:nav,bg,btn等)

采用“模块+功能”命名法,模块分为公共模块、私有模块。

公共模块主要包括统一的背景,导航条,标签,公共的按钮背景,公共的默认图等等;

私有模块主要根据app的业务功能模块划分,比如用户中心,消息中心等。

例如 :用户中心 用户头像图片的命名可以为:uc_user_icon.png

  • 通用规范

  1. 第三方的库统一放在library目录下
  2. 代码量控制。单页代码最好控制在800行以内,每个方法最好不要超过80行,过多建议对代码进行重构
  3. 整体代码风格需要统一。逻辑运算符与代码之前空一格。注意大括号的位置(“{}”),一种是起首的大括号另起一行,另一种是起首的大括号跟在关键字的后面;一般来说这两种都能够接受,请尽可能保证在一份代码中使用一种风格。
  4. 添加必要的注释。在类的属性,方法,比较大的代码块等位置可以添加必要的注释。
  5. 删除未被使用的资源文件
  6. 删除多余的方法。如果方法没有使用到,请删除它。如果方法没有执行任何业务逻辑,请删除它或者给出一定注释。
  7. 删除多余的注释,删除注释掉的代码,删除没有意义的注释。
  8. 删除多余的空行。所有方法与方法之间空1行 所有代码块之间空1行

 

 

通用设计规范

  • 开屏页版本号

目的:方便用户及运营教学人员了解当前APP版本。

实现步骤:

  1. 开屏页添加Label显示,样式由不同APP设计决定。

重要性:中

  • 版本检查

目的:线上最新版本检查及更新。

实现步骤:

  1. 后端给出调用接口及参数。
  2. 前端在启动页中调用,弹出对话框提醒用户更新,具体样式由不同APP设计决定。

重要性:高

  • 开屏页广告

目的:线上活动及推广。

实现步骤:

  1. 后端给出调用接口及参数。
  2. 前端在启动页中调用,弹出相关界面,具体样式由不同APP设计决定。

重要性:低

  • 推送

目的:接收来自服务器推送。

实现步骤:

iOS:

  1. 使用原生。

Android:

  1. 在极光管理界面中新增相关app。
  2. 将相关SDK添加到APP项目中。

重要性:高

 

通用测试用例及处理规范

  • 规范

  1. 测试用例应包含所有逻辑覆盖
  2. 测试用例应包含所有覆盖范围中提出的情况
  3. 开发应对所有错误情况做出处理
  • 用例

  • 网络:

用例集

覆盖范围

预期结果

错误情况

处理方式

逻辑覆盖

请求网络接口

所有请求网络场景

正常返回数据

用户断网

提示用户检查网络

移动网络

接口异常

提示用户重试

wifi网络

无网络权限

提示用户无权限,引导用户设置

关闭网络授权

关闭所有网络连接

  • 权限:

用例集

覆盖范围

预期结果

错误情况

处理方式

逻辑覆盖

请求用户权限

所有请求权限场景:摄像头、麦克风、文件读写、网络、定位

获取用户授权

用户从未授权

提示用户授权

首次给予授权

首次拒绝授权

用户拒绝授权

提示用户无权限,引导用户设置

关闭授权后,重新打开授权

给予授权后,关闭授权

  • 内存:

用例集

覆盖范围

预期结果

错误情况

处理方式

逻辑覆盖

内存

所有界面

内存占用量正常

内存泄漏

开发排查

反复切换同一界面

反复刷新界面数据

反复获取图片

反复播放视频流

  • 后台切换操作:

用例集

覆盖范围

预期结果

错误情况

处理方式

逻辑覆盖

后台切换操作

所有界面

界面及数据正常

界面及数据错误,闪退

开发排查

反复前后切换

程序进入后台后,较长时间切回前台

  • 输入操作:

用例集

覆盖范围

预期结果

错误情况

处理方式

逻辑覆盖

输入操作

所有文本输入框

界面正常

界面排版错误,闪退

限定输入框字数,提示用户输入字符超过限制,显示省略号

在同一输入框汇总输入大量字符

  • 分享:

用例集

覆盖范围

预期结果

错误情况

处理方式

逻辑覆盖

分享

所有分享入口

正常分享

分享失败

开发排查

分享至各个平台

点击分享内容中的链接

分享内容错误

识别分享内容中的二维码

 

 

数据埋点规范

  • 事件类型

  1. 标准用户操作事件:由用户操作触发,比如用户的一次按钮点击或者完成注册、登陆等
  2. 页面事件:进入、离开页面时触发
  • 事件通用参数

  1. 用户唯一标示
  2. 应用标示
  3. 事件类型
  4. 事件自定义参数
  5. 渠道号
  • 事件封装

  1. 有统一初始化接口收集应用标示和用户标示
  2. 在事件触发时调用相关事件类型的发送接口
  3. 事件发送接口封装了底层的事件网络请求
  • 初始化事件统计式例

WEStatistics.init(appId:”test”,  userId:”15901812370”, channelId:”test-channel”);
  • 标准用户操作事件式例

WEStatistics.sendEvent(eventId:”用户完成注册”, attr:{“time”:”注册时间”, “idfa”:”****”});
  • 页面事件式例

  • 进入页面
WEStatistics.sendPageBegin(eventId:”注册页面”, attr:{“time”:”进入时间”, “idfa”:”********”});
  • 离开页面
WEStatistics.sendPageEnd(eventId:”注册页面”, attr:{“time”:”离开时间”, “idfa”:”*********”});
  • 其它功能特性

  1. 离线缓存:在用户网络状态不佳的情况下,如果事件无法及时发送成功,应换存在本地,在网络情况正常后,再次发送。因此,统计服务器应有两种接口:单个事件接口、批量事件接口。
  2. 底层实现可切换,为在不同平台收集数据提供便利
  • 常用埋点策略

事件名称

事件重要性

事件描述

用户进入应用

统计用户启动应用、活跃用户、用户留存、应用使用时长

用户完成登陆

统计完成登陆流程的用户比例

用户完成注册

统计完成注册的用户比例,新用户数量

用户开始支付

统计用户支付倾向

用户完成支付

统计实际支付用户数量

用户退出应用

配合用户进入应用,统计用户使用时长

用户点击推广

统计应用内展示推广被点击数

用户进入页面

统计进入具体页面次数

用户退出页面

配合进入页面事件,统计页面使用时长

 

 

  • 源代码管理规范

  • 分支类型

  1. master:主分支,只做发版用,不直接修改
  2. hotfix:线上bug修复分支,一般从master分支中切出,修改完bug后,合并回master分支。
  3. develop:主开发分支,一般从master分支中切出,功能开发及最终测试完成后,合并回master,极少直接修改。
  4. function:功能分支,一般冲develop分支中切出,功能及单元测试完成后合并回develop分支。主要的功能迭代分支,可以有多个并行。
  • 分支使用

  1. 开发人员应该在自己的开发分支(例如:justin_dev)或者功能分支(login)上进行开发,完成开发之后,汇集到develop分支上,一般develop不直接进行修改。
  2. 测试及产品人员在develop版本上获取开发成品进行测试和验收,测试验收完成之后,应该由开发人员将develop分支合并到master分支上进行发布。
  •  
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152731.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 建立本地数据库[通俗易懂]

    建立本地数据库[通俗易懂]首先下载安装MySQL,参考:http://www.runoob.com/mysql/mysql-install.html,安装完成后直接打开(安装过程中要求设置用户名和密码,此时输入的密码要记住,后面要使用)然后下载NavicatforMySQL,本人觉得这个比较简单,很适合初学者,安装完成之后点击File(文件)–新建文件,连接名可不填,主机名:localhost,用户名是安装MySQL…

    2022年6月1日
    33
  • 网络编程——UDP编程

    网络编程——UDP编程一、网络编程基础1.常用协议:IP协议;TCP协议;UDP协议;2.什么是Socket?二、服务器端的代码实现三、客户端的代码实现1.区别2.易混淆知识点四.代码实现五.最后小结

    2022年9月8日
    1
  • 微信小程序—图片色彩分析(拾取图片的配色方案)「建议收藏」

    微信小程序—图片色彩分析(拾取图片的配色方案)「建议收藏」这是一款图分析图片配色方案demo,图片色彩分析或许可以应用在智能分析色彩领域,比如穿衣搭配、家装等设计或生活领域,但需要大量数据的支持,希望技术能够更好的被应用

    2022年6月29日
    70
  • 计算流体力学基础与网格概述(与书同行)——ANSYS ICEM CFD网格划分从入门到精通——丁源「建议收藏」

    计算流体力学基础与网格概述(与书同行)——ANSYS ICEM CFD网格划分从入门到精通——丁源「建议收藏」一、计算流体力学基础:1、 建立物理模型,将其抽象为数学、力学模型后,要分析几何体的空间影响区域;2、 建立整个几个形体与其空间影响区域(计算区域的CAD模型),将整个计算区域进行空间网格划分。3、 加入求解所需要的初始条件;4、 选择适当的算法,设置具体的控制求解过程和精度的一些条件,对所研究的问题进行分析,保存数据文件结果;5、 选择合适的后处理器(postprocessor)读取计算结果文件,分析并且显示出来。数值模拟方法:1、 有限差分法;2、 有限元法;3、 有限体积法;子域法

    2022年5月26日
    49
  • mycat读写分离配置文件详解_mycat实现读写分离

    mycat读写分离配置文件详解_mycat实现读写分离环境准备mysql5.7mycat1.6.7.1-release一主一从master:10.0.60.8:3307slave:10.0.60.8:3308配置实现读写分离前需要实现主从复制但是mycat不负责任何的数据同步问题。所以得自己配置mysql主从复制只需要配置schema.xml即可方式1:<dataHostname=”localhost1″maxCon=”1000″minCon=”10″balance=”1″writeType=”0″dbType=

    2022年10月13日
    0
  • 杜教筛 以及积性函数的前世今生 –算法竞赛专题解析(4)「建议收藏」

    杜教筛 以及积性函数的前世今生 –算法竞赛专题解析(4)「建议收藏」最全面的杜教筛讲解、最易懂的杜教筛复杂度证明、杜教筛公式、杜教筛模板。

    2022年7月21日
    18

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号