写了第一篇总结之后,发现更细节的展开比自己的想想要麻烦多了....

不过习惯的养成本就不是容易事儿。于是,还是开始写下来吧....

这是真实的故事,并非来自枯燥的软工课本:

----------------------------------

查好友iOS1.0版的开发开始的很匆忙。

我和LL两人一起接手开发。在此之前,我有两个月的iOS开发经验,而LL则是刚开始学习。

缺少对商业产品细节的把握,最初我乐观的预测开发周期为两三周。

8月26日,粗略了解了产品形态后,就一头扎进了代码的编写中,忽略了详尽的需求采集和设计。

之后的时间里,靠着android的源代码和在虚拟机中跑出的app作为原型,我和LL不停地摸索前进,遇到不了解的功能或交互再询问主管产品的YY,遇到不了解的接口再询问负责后台开发的LP。

两周多的时间,我们确实完成了一个demo版。实现简单的UI和功能逻辑的过程总,代码的编写进度飞速,就我个人,平均每天产出600+。demo版能登陆注册,能联网,能展示和更新组织列表、成员列表。但由于缺乏对需求的把握,很多细节功能都非常薄弱。比如如何连网服务器以在中国贫瘠的移动数据网络中保持较好的容错性和用户体验,比如如何实现登录入口处的下载更新逻辑,更不用说后来改的面目全非的UI元素了。

之后的两周,进度不再疯狂。我们开始陷入到亲手挖的坑中:无休止的修改原有逻辑,将一款无指挥的app拉回到最初的设计意图上来。但另一方面,燃烧了两周激情过后,自己反而有些放松了心情,没有警惕到开发进度的迟缓。8月26,公共群组和创建组织的逻辑被提上版本功能点,我和LL又花了几天的时间来完成这部分变更需求的代码。

9月1日是原计划的app提交日,在完成了新增功能的代码之后,我和LL也一直抱着这个信念,开始紧张的debug。但这个过程并没想象中顺利,甚至于许多功能需求仍然需要更改,比如对数据的更新处理逻辑。9.1终归没有完成手头所有工作。之后的一周多时间里,我一直在超时的挫折感和忙碌的debug中度过,期间又有好几次,我以为能在当天完成它了,而通宵到两三点,愿望落空。

9月11日,终于向appstore提交了app。9月12日,发出了第一个越狱版ipa。整个工程去空行代码量1.8W。

----------------------------------------------

回顾一个半月的开发历程,我和LL所燃烧的激情足以称道,但计划性的缺失让我们走了很多弯路,对开发节奏把握的不够让我们在后期陷入了疲劳的困战。

根据个人的代码经验,我将适合自己现阶段的开发过程抽象为一个ReCERD模型:

Requirements:根据原型和用例,明确产品功能,尽量理清代码架构逻辑,区分开C和E模块。因为缺乏对架构的认知和经验,在这一步上,或许没有办法拿出足够完备的架构设计,好在不断重构的方法能很大程度弥补这一步的过失。

Comfort:这部分的代码实现逻辑相对常规和简单,甚至有已有的代码做支撑。这是代码产量最大的时期。

Explore:实现所使用的技术没有使用过,需要先做测试,再应用到开发中,需要花较长的时间周期,并有更多的debug隐患。最需要慎重的时期,较大的学习成本。

当然,E和C并不可能完全区分开来,比如加入一段曾经没写过的业务逻辑,可以将它理解尚未实现过的E,也可以是无新技术元素支持的C。当然,不论怎样,这样的区分原则,是为了协调好整个开发周期中的精力分配,保证良好的开发势头。实际的执行中,E和C应该细分为更多小块,在不打破局部性原则的情况下,让E和C交叉执行,并保证总体上E处于C的优先级之前,避免开发过程中todolist过于干瘪或太过饱和,那样会直接影响到开发组的心理状态和编程效率。

Refactor:增加新功能时,发现原有代码扩展性不够,时间允许的情况下,可以理解执行重构,一方面增加软件的扩展性,另一方面增强对代码的理解把握。需要将这一步提到与其他开发步骤平齐的位置,是为了弥补之前设计时的不足。

Debug:最后阶段的测试debug是为了过滤设计时没有考虑到的特殊情况。程序员需要为自己的代码负责,在测试debug之前需要确认已实现了需求的功能点(自己对代码的单元测试等不属于测试debug的范畴)。测试debug需要分配充足的时间,否则极容易出错。

查好友ios1.0总结II:开发节奏的把握相关推荐

  1. 【WebGIS全栈】从0到1开发整站——旅游足迹地图网站

    介绍 本专栏起初定位群体为初学者,目标是认识 WebGIS,以及快速上手 WebGIS 前端开发,Demo 也是比较基础的,为了能进阶学习,现在计划提升一下Demo的难度,开发一个完整的足迹网站. 专 ...

  2. 无需root检测微信好友是否被删除、拉黑 真实好友v3.0发布

    腾讯的小而美应用几乎人人必装,但它也有很多功能并不好用,删除好友是单向的,你被别人删除或者拉黑都没通知,这不可避免会带来一些困扰,李跳跳团队开发的真实好友APP就可以轻松检测微信的好友状态. 真实好友 ...

  3. quartus 修改 时钟_Clock Quartus II 开发的多功能数字时钟,有计时、调 闹铃、警报等 Other systems 其他 274万源代码下载- www.pudn.com...

    文件名称: Clock下载  收藏√  [ 5  4  3  2  1 ] 开发工具: Others 文件大小: 530 KB 上传时间: 2017-04-20 下载次数: 0 提 供 者: 墨离非 ...

  4. 原来AI也可以如此简单!教你从0到1开发开源知识问答机器人

    摘要:使用华为云EI智能机器人技术,从0到1开发一款开源知识问答机器人. 前言 最近有幸参与了开源社开源问答机器人的知识库编写,碰巧看到华为云也有类似的智能机器人,抱着试一试的心态,我开始了EI智能机 ...

  5. 从0到一开发微信小程序(6)—小程序常用API

    文章目录 其他相关文章 1.小程序API 1.1.路由 1.1.1.navigateTo(保留当前页面,跳转到应用内的某个页面,可以带参数) 1.1.2.redirectTo(关闭当前页面,跳转到应用 ...

  6. iOS1.0到iOS7,iOS七大版本特性回顾

    2013-9-18 15:38:27    出处:搜狐数码    作者:Eskimo    评论(10) | [大 中 小] IT之家(www.ithome.com):iOS1.0到iOS7,iOS七 ...

  7. 勇敢跨越,从0到1开发一个属于自己的App

    1 前言 码字不易,且行且珍惜. 之前听一个老铁说,一个开发者的真正蜕变,要从真正做一个属于自己的App开始,你只有自己一个人摸索.研究,真正靠自己踏上这条路,才能尝尽这条路上的酸甜苦辣,才会成长!于 ...

  8. Android Studio 4.0.+NDK项目开发详细教学

    JNI开发系列目录 JNI开发必学C++基础 JNI开发必学C++使用实践 Android Studio 4.0.+NDK项目开发详细教学 Android NDK与JNI的区别有何不同? Androi ...

  9. swift perfect mysql_Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)...

    本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...

最新文章

  1. Oracle Database 快捷版 安装 连接
  2. 使用Python批量处理行、列和单元格
  3. IDM下载速度慢解决方案全网搜集持续更新
  4. win10 VScode配置GCC(MinGW)
  5. Java-虚拟机-执行引擎/解释器/编译
  6. 全源最短路径 - floyd算法 - O(N ^ 3)
  7. Async.js——Node世界中被依赖最多的库No.3
  8. 自动更改IP地址反爬虫封锁,支持多线程(转)
  9. PCS7 Step7块破解 解锁 FC FB s7canopener S7 Blocks Unlock
  10. acs510使用技巧_ABBACS510系列变频器通用接线图和参数表【借鉴实操】
  11. 弹幕助手连接不到服务器,小葫芦obs弹幕助手怎么用 OBS弹幕助手使用教程
  12. RUST开服教程、常用指令及心得
  13. 利用PS将图片上的中文改写成英文
  14. Apache ab测试结果解析
  15. 安装Mathtype之后,打开word出现错误的解决方法
  16. curl 504 php,nginx - PHP 经常提示 504 Gateway Time-out
  17. go install报错no install location for directory outside GOPATH
  18. 讯飞AIUI ubuntu linux使用
  19. VirtualBox切换自适应屏幕快捷键
  20. MOOS-ivp 实验九 分布式旅行商问题(1)

热门文章

  1. find() 和 find_all()区别
  2. centos,php,apache,nginx,vim命令相关知识和命令记录
  3. flask开启debug调试模式
  4. Discuz论坛下载与安装
  5. 已加载插件:fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.163.com * extras: m
  6. CHAR 和 VARCHAR 的区别?
  7. nvarchar 和varchar区别
  8. css html 鼠标手型,鼠标形状,鼠标效果,样式
  9. 全志T7/T507 Qt5.12.5移植记录
  10. 面试常考的常用数据结构与算法