前海征信信用度一期是同事D君在2016年11月份中旬实现的需求,类似支付宝芝麻信用积分的仪表盘,不过人家好像是用原生native实现的呢,在app中能顺利播放动画,不卡顿,无锯齿,非常平滑。而我们用html5技术实现的仪表盘有很多遗留问题,另外UIUX对仪表盘的设计和交互做了改版和优化,于是就有了二期优化。
公司让我来做二期优化,我原计划是正常开发两天,信誓旦旦的把排期给出去了。本以为只是改交互效果,没想到整个仪表盘变了,更没想到D君一期是用透明背景展现仪表盘,没有用代码画,他说当时开发时间紧张。好吧,那这二期怎么能叫优化呢?应该是新写吧!如果知道他一期的实现方式,我会把排期写成4天。然而,排期已经给出去了,不好让测试那边改他们的进度安排,我就默默的周末加了两天班,顺便优化了代码。自己定义了几个公用子方法,比如画圆弧,画内圆环,画刻度。另外,还定义了【未认证】的静态仪表盘方法,【已认证,无查询结果】情况下的顺时针动画和逆时针动画,【有结果,较差,一般,良好,很好,极好】情况下的顺时针动画,他们都会调用前面的公用子方法。为什么我做二期优化时没有贴图呢?第一,二期需求实现的效果复杂了,交互变化大。第二,觉得贴图太low,关键是设计师发过来的图一点不精细,她说刚用sretch,不熟练,明显和我后面手画的路径不是同心圆,唉,我还是自己画吧,我还是把仪表盘用代码都画出来吧。后面我建议设计师以后把图画的精确一些,直接用sretch把设计图打包成html发给我,我自己查看具体宽高,不用她们标注了。
这个仪表盘需求让我把高中几何简单温习了一下,sin,cos,最好知道圆心角,圆心坐标,外环半径,内环半径,环带宽。整个过程,比较纠结的是,锯齿和无查询结果时光点来回摆动一下都存在手机兼容性问题,各种谷歌搜索都没有找到合适答案,索性自己改变了一下实现方式,只能简单骗骗用户,要从根本上解决问题,后面有空打算用SVG做这个仪表盘动画。
除此之外,感触颇深的就是项目排期问题。以后排期,要记住两点:
1、如果是功能迭代优化,再简单的优化需求也不要急于给排期,先看看一期代码怎么写?怎么实现的,二期需求改动是否大,需要重写还是小改动?要知道重写和小改动是两回事,排期远远不同!不同程序员写代码的风格千差万别,真正的好代码应该灵活些,把可以公用的地方抽象出来,后续迭代会方便很多。
2、如果是活动性新需求,先找产品经理确认一下方向,这个活动是一段时间就结束了,不会有后续优化还是优化不断?如果活动一小段时间就结束了,那么怎么快,怎么来,尤其是纯静态页面不需要输出后端数据的情况下,直接贴图片也是可以的。但是,如果优化不断,和后端数据相关,建议把页面代码写的精细些,能写dom元素排版的,就不要偷懒。当然,从开发角度来说,贴图简单粗暴,比手写元素,仔细考虑布局及兼容性更节省时间。但是只要需求一改,就得重做,可复用性小。