在进行原型设计时,您在多大程度上放弃了最佳实践以支持代码和修复黑客攻击?当然,代码并不打算在完整的生产中保留。
补充:我正在研究一个用 Python 制作的相当大的半工作原型,以找出嵌入式应用程序的 UI。我知道代码不打算在生产中使用,但是代码库的质量随着更改次数的增加而稳步下降,这让我很恼火。
在进行原型设计时,您在多大程度上放弃了最佳实践以支持代码和修复黑客攻击?当然,代码并不打算在完整的生产中保留。
补充:我正在研究一个用 Python 制作的相当大的半工作原型,以找出嵌入式应用程序的 UI。我知道代码不打算在生产中使用,但是代码库的质量随着更改次数的增加而稳步下降,这让我很恼火。
不幸的是,由于时间限制,我有太多的原型变成了基线产品。因此,理想情况下,您将遵循最佳实践。实际上,您尽一切努力完成工作,以满足您所追求的任何最后期限。不要指望有机会完全重写。您提出的通常是基准,尤其是在开发时间超过几天的情况下。最好的建议是以黑客级别的速度学习使用最佳实践。
这取决于您的原型试图证明什么。您是为了可用性和向客户演示而对 UI 进行原型设计,还是在对架构进行原型设计?
如果我正在对 UI 进行原型设计,那么一旦这个概念经过迭代并得到证明,我就会抛弃所有东西。
如果我正在对架构进行原型设计,那么最终代码将符合最佳实践并且可以使用。
也就是说,由于时间或预算限制,最终投入全面生产的黑客工作原型的数量令人惊讶。如果您的目的是让代码不最终投入生产(即 UI 原型),那么模拟屏幕截图而不是对其进行编码可能会很有用。
我抛弃了“干净”的方法和评论(即“使事情发生”的实用程序类),但如果你愿意的话,我不会抛弃“业务对象”。
例如,如果我可以选择定义“Car”类来定义“WheelCount”、“DoorCount”的字符串值属性,或者只是制作一个快速的 Hashtable,我通常会继续并花一些额外的时间来创建汽车类。
这样做的原因是因为当我稍后回去重新编码时,查看真实的类名更有意义(有时这些小类可以转移到“真实”版本)。
一般来说,原型设计的最大危险是想“我会在以后修复它”然后不去做......所以如果在任何时候你在脑海中想“我对我需要如何做这门课有一个很好的想法”,继续在这门课上多花几分钟,把它做好,这样你就可以重复使用它。
我几乎总是将原型(此处称为“尖峰”)视为一次性代码。原型的目的是了解问题,而不是解决问题。这种理解比任何代码制品都重要得多,正确实施解决方案应该是微不足道的(如果不是,我认为尖峰的范围太大了)。
您可以将原型重构为合适的状态,但根据我的经验,从头开始重写会更快,因为它必须与更广泛的系统集成。
对于原型来说,只有外部才是真正重要的。如果你以后有足够的勇气把代码扔掉,你可以使用书中任何肮脏的技巧,只要它看起来很棒。
请记住,原型只是获得客户响应的工具。(是的,我喜欢它,或者,你为什么把那个选项放在那里?)。