《梦断代码》读后感其一——你:这个功能完成了! BUG:不,你没有

在软件工程这门课结束,自己参与了一个小小的项目,我对于把控完成一个功能(任务)的时间有了新的理解。于是结合梦断代码,谈一谈自己的感想,并反思自己。

我要实现一个app上的进制转换功能,顶部是1B,往下是一个列表,有对应的KB,MB,GB的值。要实现实时的转换还要能点击一个列表项,那么顶部就会变成相应的单位。比如点击了MB,那么顶部就会是MB,列表会显示1MB对应的B,KB,GB的值。

略一思考,简单啊!只要记住点击了谁,再换过去不就行了!

经过一下午的编程,我发现自己太天真了。哪一个变量先去记录?是先运算还是先记录?这个运算依托于那几个变量?这些变量的值更新了吗?或者不需要更新?

于是我清空了一下午的劳动结果:一段千疮百孔的代码。在纸上详细画了流程图。在进行编码,水到渠成。

那么一下午的努力白费了吗?似乎是,但我觉得并没有。光靠人脑和纸币很难去模拟机器的运行,一下午的时间让我熟悉了这个功能每一步的运行。那一张单薄的纸,放到中午,我是无论如何也画不出来的。

由于我弄不出来自定义键盘,但是我记着我的队友有这一部分的代码,于是我把它空了起来。把点击调出键盘并输入值,改成了一个简单的点击自增。

上机运行很完美,乱点也没有闪退,于是我向队友宣布:这个功能搞定了!

But!我队友也没有自定义键盘的代码,这就尴尬了。

我只能改成一个输入框,然后一大堆问题接踵而来。我不得不重写了大部分的代码。这就到半夜了。

但是1B转换成TB会很小很小,我采用了BigDecimal,实际上有数数量级在10e-16,但是显示为0。最后我强制限定了位数,强制取消科学计数法才解决这一问题。

把我的功能整合到计算器上时,又出现了一个很尴尬的问题,由于沉迷改bug,我忘了把代码改成可以重构的。但事到如今,再改有些来不及了。我只能大篇幅复制粘贴来实现速度、长度这些进制转换。

原来预估一下午不到就可以完成的任务,最终花了十几个小时。果然写软件就是,编程,改bug,改bug,改bug……

posted @ 2019-06-20 01:24  CCRNRT  阅读(157)  评论(0编辑  收藏  举报