转载

某HR项目iOS端总结

1.产品设计

  • 及时更新RP图。
  • 对于iOS和Android差异化不大的页面,可以使用一套RP图。
  • 保证对页面逻辑的详细说明。
  • 对于特殊状态(如筛选、搜索等)的说明/图解要清晰。

2.接口文档部分

2.1 文档编写的注意事项:

  • 对于所有接口都通用的参数或JSON数据格式,可以添加公共设置的部分,集中说明。
  • 请求数据的参数,要说明哪些是必须的,哪些是可选的,可选的默认值是什么。
  • 说清请求数据的方式是GET还是POST。
  • 命名要清晰,对于 名词 命名的参数,区分清楚 xxIdxxTitle ,而不是 xx
  • 标记类型、状态类型的文字,与其移动端和服务器各自手动维护一组枚举值,不如传输 文字本身
  • 请求参数和返回参数中,特殊类型的数据要说明。如日期的格式是 yyyy-MM-ddyyyy/MM/dd 还是 yyyy.MM

2.2 工作流程:

  • 现在的流程:

    pc端数据库设计与开发 》移动端产品设计 》 移动端开发 》移动端接口设计 》pc端接口开发

  • 可优化为:

    pc端数据库设计与开发 》移动端产品设计 》 移动端接口设计 》移动端开发 》pc端接口开发

  • 优化后的好处:

    • 避免移动端Model构建时,逐个比对字段名称的问题。
    • 减少pc端依照“移动端写的接口文档”各种修改字段名的问题。
    • 面向接口进行代码设计,可以在项目初期就对各功能模块有整体认识。

2.3 编写工具:

  • 现在的工具:

    word + SVN(?)

  • 存在的问题:

    • 各种和文档相关的样式、乱码、排版的问题。
    • 无法即时调试,需自行粘贴到postman去测试。
  • 可优化为:

    - swagger: http://editor.swagger.io/#/

    - RAP(from Alibaba):

    • Github: https://github.com/thx/RAP
      • 说明: http://div.io/topic/642
      • 例子: http://rap.taobao.org/workspace/myWorkspace.do?projectId=5359#37446

2.4 接口设计要考虑的问题(供参考):

  • http://ismartstudio.com/mobile-app-server-side-api-should-be-designed-to-take-into-account-problems.html
  • https://segmentfault.com/q/1010000002523945

3.移动端开发

3.1 BugList分析

BugList(iOS端)汇总图表及明细

(见 XX HR iOS端BugList汇总及明细.xlsx

Bug数量最多的类型前三类(单位:个):

  • 逻辑缺失(23)
  • 和pc端对接问题(19)
  • 未与RP图对照(14)

逐个分析一下:

3.1.1 逻辑缺失

共计23个逻辑缺失的Bug中,比较突出的问题有:

  • 数据更新后没有自动刷新的问题(6个)
  • 页面或数据状态的保存或传递问题(5个);
  • 网络请求时,可选参数key为空的处理(2个)。

解决建议

  • 对于数据有可能更新的列表,要添加自动刷新功能;
  • 请求数据时,可以不传的参数key需要单独处理。

3.1.2 和pc端对接问题

和pc端对接的相关Bug中,问题主要集中在:

  • 移动端使用字段错误,导致展示错误信息(6个);
  • 不同接口的 BaseURL 不相同(后期已统一)(3个);
  • 移动端使用的校验方式与pc端不一致(3个);
  • 空值的传输和处理(3个):当某字段的值为空时,需传给服务器key和空值。

解决建议

  • 增强对接口文档的统一理解;
  • pc端和移动端可以在各自的接口开发时约定好:
    • 所有接口的 BaseURL
    • 除了 status=1status=-1 的状态外,其他可能存在 status=0 的接口。

3.1.3 未与RP图对照

主要由于在RP图不断更新的过程中,未能及时变更相应流程、操作和用户友好性的细节。这一部分的bug,是应该在自测中消除掉的。

3.2 代码分析

3.2.1 代码行数统计

文件夹 代码行数
Classes 21357
Utility 2941
Constant 1498
AppDelegate 201
Categories 1758
Sum 27755

3.2.2 公共类的封装

  • BaseFundamentalViewController 中封装了空数据的处理、网络请求等通用功能,项目中几乎所有controller都继承自该类。
  • BaseViewController 继承自 BaseFundamentalViewController 。主要封装了与TableView相关的功能,如上拉加载、添加/清除筛选条件等。没有特殊需求的普通列表的展示,只需要不到50行代码。
  • BaseWebViewController 继承自 BaseFundamentalViewController 。主要用于全屏的webview模板展示。

3.2.3 代码复用

  • 以后可能用到的功能模块:
    • Base 系列;
    • 下载管理( 待完善 );
    • WebView模板展示(GRMustache);
    • 表格展示(GridView);
    • Charts展示(Charts);
    • 图片浏览及选择(支持多选,MWPhotoBrowser);
    • 表单的展示及填写(XLForm);
    • 年月选择器。

4.美工 & 测试

  • 对于移动端的切图可以逐渐模板化,如某些固定尺寸、固定的需求(如:Android的图片设计时有效内容尽量居中,便于自行剪裁)等。
  • 时间允许的条件下,同类型bug可以设置关联bug,方便开发人员统一修复。
原文  http://www.calios.gq/2016/08/19/某HR项目iOS端总结/
正文到此结束
Loading...