橘莲溢香的学习笔记
  • 首页
  • 归档
  • 分类
  • 标签
  • 友链
  • 关于
  • 登录
bg
_
icon
Made with Next.js
Copyright © 2021 橘莲溢香京ICP备2021035188号

icon目录

  • 本人介绍
  • 岗位职责
  • 工作成果
    • H5 / Web
    • 开发电池柜模拟器,方便整个部门的开发调试和测试
    • iOS
      • 一.持续重构
      • 二.清理冗余
      • 三.编码约定
    • Hybird 混合
    • 离线更新包
    • 实践后端技能
  • 24年工作计划
  • 自我评价

本人介绍

我是来自运营开发部的张继明。一年的工作转瞬将成为历史,回顾2023年,我倍感充实,收获良多,作为一名年轻员工,紧密配合公司领导安排,铆足精神、踏踏实实做事,于此同时,也努力成为一名能吃苦耐劳、敢于技术攻关的员工,为公司集团发展贡献自己的一份力量。

岗位职责

  1. 开发和维护公司的iOS应用程序。

  2. 优化现有iOS应用的性能和用户体验。

  3. 跟踪新技术和趋势,能够应用新技术提升质量和体验。

工作成果

H5 / Web

  • 为解决iOS和安卓经常不一致的问题,我尝试采用H5实现,从创建H5项目,到定制打包脚本,再到TypeScript封装Bridge-API,从0到1,一步步把所有前期铺垫全部完成,其他客户端同事可以照猫画虎地开发其他H5页面。

  • 目前换电APP已经内嵌了15个H5页面. (卡券3个,订单6个,退租1个,新退租3个,订单详情1个,推广1个) 其中有11个由我创建和维护。

  • 采用H5后,开发效率高了很多,即使客户端有人离职(仅3人),进度也丝毫不受影响,而且还有余力支援维修APP(使用小程序开发)

据统计,采用H5后,成本只有之前的 三分之一。

这里解释一下差距大的原因:

  • 人日中包含人数,原生开发分为iOS 和 安卓,至少要2个人力,H5仅需1个人力,人力2倍差距。人力越多,功能统一成本,沟通成本等都会上升(也会占用人天)。

  • 编译型静态语言(Swift)在编写效率、调试效率方面 均不如动态脚本语言(javascript),语言效率有1.5~2倍差距。

  • 原生开发没有类似 React / Vue那种“杀手级”框架,API/库都相对原始,框架辅助方面存在1.5~2倍差距。

  • 下单续租,尤其是下单,更新频率较高,判断条件复杂。 版本迭代越多,条件越复杂,累积的差距就越大。

开发电池柜模拟器,方便整个部门的开发调试和测试

  • 为了解决 旧版电柜模拟器 不能在MacOS上运行,且体验不好的问题,我学习桌面开发技术(Electron),并使用它开发了跨平台版本的电柜模拟器。

  • 新模拟器不但跨平台,而且功能丰富,支持多环境配置,修改的配置数据都自动保存,交互也方便直观,反馈不错。目前几乎所有的开发和测试同事都在使用。

  • 模拟器支持自动更新,为满足业务需要,一直保持着较高频率的更新:比如 增加型号检查,电量编辑,空调上报,自定义警报,电芯数目等,几乎每个月都有新版本发布。

自动更新,可以有效保证所有用户使用相同的版本,即使高频更新,也不会产生混乱。

iOS

一.持续重构

  • 之前每个页面都是“魔法数字”创建的,控件的长宽、位置、偏移全用数字,很难阅读,也很难修改,容易出错。经过小范围不间断地重构,“数字化”页面 现在已经很少了(约3、5个)。

  • 代码警告数目 从 3290 降到 1359 。

二.清理冗余

移除三方库(16个)

它们是:SwiftyFitsize,Hue,Schedule,SwiftDate,RxTheme,RxAnimated,Moya-ObjectMapper/RxSwift,RxUIAlert,SkyFloatingLabelTextField,TextFieldEffects,DynamicButton,TransitionButton,Hero,ActiveLabel,HGCircularSlider,Material

作用:

  • 减小APP体积,加快APP启动,提升用户体验。

  • 使代码更容易维护。

这些库用到的很少,完全可以使用内建方式实现,引入三方库,反而让人看不懂,还要学习三方库,费时费力。

三.编码约定

为了让iOS新同事避免沿用以前的不良写法,主动推进和输出了iOS编码规范,以保证团队的代码统一性,文档链接:

https://ipadnexsg1.feishu.cn/wiki/EKS5wqUF2iQNblkuRrYcZ6vPnhh

文档详细指出了原有APP中不合理的地方,以及推荐的写法,为iOS新同事提供参考。从此,iOS同事统一思路,都开始用RxSwift封装Service层方法,来取代原来被滥用的协议和扩展。

Hybird 混合

  • 设计并实现多达40个JS-API,涵盖 网络请求,窗口导航,事件通信,数据存储等很多方面。

  • 为方便前端同事,撰写了详细的JS-API文档:https://www.jvlian.cn/docs/1

  • 为方便安卓和前端同事,特地制作API测试页:https://jvlian.cn/static/bridge/ds.html

  • 常给客户端同事讲解API使用方法,也帮前端同事解决H5内嵌问题,次数多了,我就把积累的问题和经验汇总起来,通过分享会共享给大家,为照顾没有参会的同学,会后整理成了文档:Hybird常见问题&解决方法:https://www.jvlian.cn/docs/4

离线更新包

  • 为解决客户端APP发版问题,比如 审核时间长,被拒,用户使用的版本低 等等,设计并实现了APP 热更新机制,为保证安卓和iOS思路一致,撰写了思路文档:https://www.jvlian.cn/docs/3

  • 同时,做为前台的配套设施,又开发了相应的后台管理页面:

  • 自从有了热更机制,开发过程也变得高效了,因为不用打包,就能修复bug,测试同学不用下载新包,就能验证结果。

  • 近期的“多套餐”需求 就是通过这个离线更新包 完成线上发布的。

实践后端技能

发现团队的后端同事工作繁忙,人手不足,我开始学习后端开发知识,希望能参与后端开发。

  • 在语雀和飞书付费之前,分享文档受限,我就用自学的后端知识 开发了个人文档站点,当前端同事打不开链接时,我就发给他个人文档链接。

  • 个人文档站点:https://www.jvlian.cn ,使用MariaDB数据库存储文档内容,使用Redis缓存系统减少重复计算。

  • 我自认为是“跨界”的示范,可以带动更多人走出舒适区,尝试其他领域。(据我所知,有很多前端同事都有意向、也有能力做后端开发(Node.js),所以不用太担心维护问题。)

24年工作计划

  1. 新型API「透明浏览器层」已经设计出来,且验证完毕,正准备线上验证。线上验证完毕后,就逐步把下单、续租、取电、换电、暂存等动作的前置检查逻辑 转换为可以热更新的形式。

新设计的好处:

  • 目前由于检查逻辑较多,导致两端有些地方不一致,改完后,iOS、安卓将使用同一份用H5实现的检查逻辑,差异就会消失,从而提升APP的质量。

  • 统一后,原来两人的工作量将变成一人,节约一倍的人力。

  • 后续维护阶段,开发效率将会是统一前的2倍,节约一倍的开发时间。

  • 配合热更新机制,无需经过商店审核,就能改变APP功能,节省接口兼容性相关的开发成本。(前置检查逻辑较多,且更新频繁。若没有热更机制,发版成本和兼容成本会很高)。

  1. 目前换电APP iOS端还有几处前人遗留的纠缠不清的代码块,需要整理和划分成职责更明确的功能子模块,大约包括 订单模块,柜子模块,换电流程模块,网点与经销商模块,地图模块,活动模块。 做完这些,能显著提高代码的可维护性,以后再修改时就能更快,且更不易出错。

自我评价

  1. 2023年,我学习并实践了很多新语言新方法,Swift常用库,RxSwift响应式方法,MVVM规则,Reactor思路等等,这些方法有效提高了开发效率,提升了软件的质量。
  2. 我不满足于iOS,在H5/Web领域 努力学习实践,基本掌握了Web开发所需的全部技能。
  3. 在和客户端同事沟通API,以及和前端同事沟通内嵌Web的过程中,我更深入地了解了两类技术栈同事的思路与工作方法,同此,也提高了自己的沟通能力。
  4. 我将坚持 持续学习,不断进步,不断学习新的知识与技能。

暂无留言
login登录后留言