功能实现了软件就做好了吗?

    常常在问自己这样一个问题,也听到很多人都说“先实现功能”,也许在某种意义上不得不如此,但我认为这不是真正意义上的软件开发,实现功能重要,软件的维护更重要,如果以后要实现一个新的功能我们是重新写一遍快还是在原来的基础上扩展快?如果有人要用这个软件是看源码快还是看设计书快?

大家或许要说了:别人写的代码要我来修改还不如我自己重新写,看哪些无用的设计书还不如直接看源码。问题的根源在哪里呢?

别人的代码(其实就是你写的代码,我来看)为什么很难修改?因为看不懂,代码不规范,没有详细的注释说明,设计不合理无法扩展... 这样的代码我也建议你不要修改了,直接重写吧。于是我们的软件开发就这样“重复又重复”的写下去,我们做软件确实很累,但回过头去看别人的那些代码,忍不住心里要骂:谁写的代码这么垃圾?!但是被骂的人(这个人可能就是你自己)却很委屈:哪有那么多时间写好代码做好设计?“功能实现第一”啊!

先不要埋怨了,一切从我们自己做起,反复重构你的代码吧,把注释写详细,把代码写规范,把设计更新一下(很多人的设计都是应付,最终的代码跟设计相差很远,所以导致设计文档没有人看)。

“四象限图”程序是我为FT深圳中行三期写的一个组件,如果按照“先实现功能”来做我只需要花一天就完成了,但是为了让它成为真正的“组件”,我需要反复优化接口,优化设计,优化算法,编写详细的注释说明,编写示例程序,编写设计文档,这些工作花了我一天半的时间,之所以这么做,是为了让同事拿到这个组件,看看说明就能够使用,看看代码自己就能够修改,而不是继续“重写”。

我想,如果我们要开发一个真正好的软件,不能够强调“功能实现第一”了,当前的“功能实现”只是暂时的,以后的“功能变化”才是永远的,我们不要天天写功能重复的代码,不要做那只玉米田里面的“猴子”, 做那种客户“只想运行一次”的软件,如果这样的话,我们做软件还有什么意义呢?

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java架构师历程

微服务架构是什么

架构师在软件行业一直有很高的位置,并且在开会中的架构师都带有主角光环。 架构师是可以说是软件的设计者,运用我们学会就会忘记的23种设计模式、企业架构模式、面向对...

64620
来自专栏微服务

电商前端交易型系统设计原则

个人认为设计系统要因场景因时间而异,一个系统不是一下子就设计的非常完美,在有限的资源情况下一定是先解决当下最核心的问题,并预测/发现未来可能出现的问题,一步步解...

10810
来自专栏IT技术精选文摘

规模化时间序列数据存储(第一部分)

17430
来自专栏韩伟的专栏

如何设计运维友好的服务器端系统

如果我们在开发的时候,就充分考虑到系统的运维需求,就算只进行了一些简单的约束,都能让运维工作有巨大的改进。我想这也是所谓DevOps流行起来的原因吧。

64600
来自专栏织云平台团队的专栏

腾讯SNG全链路日志监控平台之构建挑战

全链路日志监控在现在盛行的微服务和分布式环境下,能有效地提高问题定位分析效率,成为开发和运维利器。当前已有开源解决方案和成熟的厂商提供。

1.3K00
来自专栏顶级程序员

看似简单的 Windows 记事本,其实维护起来并不简单

相信大家对 Windows 系统自带的记事本程序都不会陌生,在座的各位或许还有用它来写代码的经历。看上去它的功能非常简单,但你能否想到即便功能如此简单的程序,也...

8320
来自专栏PHP在线

关于高并发和秒杀系统,你知道的和不知道的一些事

大家也许开发过高并发的系统或者秒杀程序,但肯定都有接触过,像电商平台的秒杀、抢购等活动,还有12306春运抢票。

30530
来自专栏性能与架构

体验真实的微信小程序

下面是微信团队开放的小程序示例: 【注】微信搜索小程序“小程序示例” 可以查看小程序的组件和接口演示 ? 体验后非常明显的感觉有两个: 1)顺畅,例如微信登录...

378110
来自专栏c#开发者

数据库同步设计方案

需求 目前我们公司开发的系统大部分都涉及到数据传输,简单的系统架构如下,有企业输入单证信息,提交到政府机关进行审批,将审批的结果返回到企业端,由于企业客户端系...

481110
来自专栏吕力的专栏

磁盘读写速率测试

逻辑层业务机器上如果有数据落地处理,可能会考虑的一个因素就是磁盘读写性能是否能满足要求,于是有必要进行测量。本文将介绍一些具体的测试操作。

1.3K00

扫码关注云+社区

领取腾讯云代金券