在软件工程这门课结束, 自己参与了一个小小的项目, 我对于把控完成一个功能 (任务) 的时间有了新的理解. 于是结合梦断代码, 谈一谈自己的感想, 并反思自己.
我要实现一个 App 上的进制转换功能, 顶部是 1B, 往下是一个列表, 有对应的 KB,MB,GB 的值. 要实现实时的转换还要能点击一个列表项, 那么顶部就会变成相应的单位. 比如点击了 MB, 那么顶部就会是 MB, 列表会显示 1MB 对应的 B,KB,GB 的值.
略一思考, 简单啊! 只要记住点击了谁, 再换过去不就行了!
经过一下午的编程, 我发现自己太天真了. 哪一个变量先去记录? 是先运算还是先记录? 这个运算依托于那几个变量? 这些变量的值更新了吗? 或者不需要更新?
于是我清空了一下午的劳动结果: 一段千疮百孔的代码. 在纸上详细画了流程图. 在进行编码, 水到渠成.
那么一下午的努力白费了吗? 似乎是, 但我觉得并没有. 光靠人脑和纸币很难去模拟机器的运行, 一下午的时间让我熟悉了这个功能每一步的运行. 那一张单薄的纸, 放到中午, 我是无论如何也画不出来的.
由于我弄不出来自定义键盘, 但是我记着我的队友有这一部分的代码, 于是我把它空了起来. 把点击调出键盘并输入值, 改成了一个简单的点击自增.
上机运行很完美, 乱点也没有闪退, 于是我向队友宣布: 这个功能搞定了!
But! 我队友也没有自定义键盘的代码, 这就尴尬了.
我只能改成一个输入框, 然后一大堆问题接踵而来. 我不得不重写了大部分的代码. 这就到半夜了.
但是 1B 转换成 TB 会很小很小, 我采用了 BigDecimal, 实际上有数数量级在 10e-16, 但是显示为 0. 最后我强制限定了位数, 强制取消科学计数法才解决这一问题.
把我的功能整合到计算器上时, 又出现了一个很尴尬的问题, 由于沉迷改 bug, 我忘了把代码改成可以重构的. 但事到如今, 再改有些来不及了. 我只能大篇幅复制粘贴来实现速度, 长度这些进制转换.
原来预估一下午不到就可以完成的任务, 最终花了十几个小时. 果然写软件就是, 编程, 改 bug, 改 bug, 改 bug......
来源: http://www.bubuko.com/infodetail-3097865.html