我如何知道自己是否过度分析?
过去3天我一直在追逐一个问题。我经历了很多设计,并使用大约3个课程达成了复杂的解决方案。在与同事讨论后,我意识到我只需要一种方法和struct
。我怎样才能避免成为architecture astronaut?
答案 0 :(得分:5)
我发现如果我在30分钟内无法提出一个好的清洁解决方案,那么与其他人讨论它几乎总是最好的。
即使他们不知道如何解决它,它通常会触发更好的设计或解决方案。
所以跟别人谈谈。
答案 1 :(得分:2)
就个人而言,我真的不能抱怨任何真正计划他们软件的人!我这样做,但我知道很多程序员只知道如何直接进入代码......我经常需要修复这些代码......
那就是说,你真正想知道的是如何知道什么时候有更好的解决方案。
我给你的建议是反复问自己:我是在考虑解决方案的细节,还是关于真正的问题?
答案 2 :(得分:1)
避免成为建筑宇航员的最佳方法是养成直接进入的习惯。直接进入的最佳方法是编写一些测试,当您的实现完成且正确时,这些测试将会通过。这迫使你从一开始就面对“完成”意味着什么,和它提供了对将遵循的代码的完整性检查。
然后寻求解决方案。
你现在可能第一次到达那里,但是开始时想一想“完成”意味着什么,这将有助于你提出更好的问题,并提前完成一些验收测试帮助将设计空间剔除到合理的范围。
答案 3 :(得分:0)
我曾经遭受过这个问题。设计一个能够在未来处理大量增长的解决方案。确保它具有良好的抽象性,从而导致您对上述问题的关注。
然后我抛弃了这种方法并将它全部打成一个大脏的类,也许两个。在那之后,我重新考虑了它,直到它类似于我希望别人工作的东西。
答案 4 :(得分:0)
我喜欢快速做事。首先是脏的,当它工作时,我会逐步重构代码,直到我对设计感到满意为止。
这也是TDD方法。
答案 5 :(得分:0)
我发现自己按照以下三个步骤找到了“理想”的解决方案:
如果我拥有世界上所有的时间和资源,那么什么是最好的解决方案。 (技术上,逻辑上,性能方面,可选地解决一些相关问题,重新编写你发现的模块可以做得更好......)在这里做你的(过度)分析,只是为了尽可能地了解它。运行测试,统计并创建概念验证。
与现状有什么不同。两种解决方案的结果有什么区别。是否有更快的方法来获得相同或相似的结果。为什么这个或那个改变解决了手头的问题。做一些更多的测试,统计,更新您的概念证明。
找到实现所需更改的方法,仅所需的更改,删除对此更改不重要的任何内容。检查你没有修改任何没有问题的东西。测试一下,检查代码,逻辑,结构的变化;如果可能的话,尽量减少它们。
这听起来非常严格(以及很多工作),但事实上我发现自己最终会在某些情况下将整个表格添加到数据库中。部分工作(因为要完全确定某些内容需要做很多工作)是检查所有现有代码与此额外表格保持完全相同的工作。
最重要的是,在大多数情况下,我们需要在更新之前为系统中保留的“过渡数据”提供服务,这些数据必须在更新后生成并发送完毕。