2

是否有任何编程方法考虑到第一轮编写的代码可能不是您想要使用的概念?在项目结束时,我从开发人员那里听到的最常见的话是“如果我能再做一次,我会做的与众不同。” 这几乎是作家在写完初稿后所经历的过程的精确反映。不同之处似乎在于,编写者会重写并再次重写,直到他们准备好进入编辑阶段,而开发人员似乎先编写然后通过测试和重构来完善他们的初稿。

我当然不喜欢尝试使用替代类比来定义开发过程,但我确实认为认识到你的初稿只是为了记下想法是有价值的,你需要进一步重写才能产生有价值的东西。我只是不认为我曾经遇到过认识到这一点的编程过程或项目方法,所以我希望 Stackoverflow 的广大集体意识可能知道我可以从哪里开始探索这种可能性?

4

5 回答 5

4

原型设计似乎以某种方式解决了这个问题。关于原型的维基百科文章命名了一种称为“一次性原型”的方法,这似乎与您的思维方式一致。

于 2009-06-21T20:28:36.620 回答
3

您所描述的称为一次性原型设计。这个想法是,一旦您有了初步需求,您就可以创建系统的基本模型,以向用户和/或客户展示最终系统的外观以及它的功能(尽管没有真正的功能)。用户提供对此原型的反馈。

如果你想利用一次性原型,我的第一个建议是开始研究螺旋过程模型。但是,我不熟悉很多明确使用一次性原型的方法。更“敏捷”的方法有利于进化原型或增量原型。我个人使用一次性原型的唯一一次是只对用户界面进行原型设计,因为底层系统已经在开发中,我使用白板和笔和纸来制作原型。

于 2009-06-21T20:30:29.110 回答
3

此外,这是 Brooks 的想法之一,他自己在一些修改后发现它并不是最有效的:您可能听说过“在计划丢弃一个系统后丢弃两个系统”。幸运的是,由于敏捷方法,现在可以克服许多这样的麻烦。

于 2009-06-21T20:44:55.337 回答
1

这正是 Bruce Eckel 在这里提出的论点。

于 2009-06-21T20:29:49.300 回答
1

我认为最好的办法是很好地模块化。例如,如果您正在编写内核,“获取下一个可用的空闲内存帧”函数应该驻留在它自己的函数中。这样,当您发现它是以一种非常糟糕的方式编写时,您只需擦除(当然您正在使用版本控制)并从头开始。这样,您现有的模块就可以作为测试新代码的一种方式存在。

从头到尾再从头到尾是再次解决大部分相同错误的绝佳方式。

于 2009-06-21T20:38:31.637 回答