有时我茫然地凝视着空间或勾勒出想法,然后在纸上写下一些伪代码。然后我将其擦除并重新开始,然后,当我认为自己有解决问题的正确方法时,我便开始编写代码。
想几天不写任何代码是正常的吗?这是否表明我正在完全解决问题?没有在我的IDE中编写任何有形的代码使我感到紧张。
有时我茫然地凝视着空间或勾勒出想法,然后在纸上写下一些伪代码。然后我将其擦除并重新开始,然后,当我认为自己有解决问题的正确方法时,我便开始编写代码。
想几天不写任何代码是正常的吗?这是否表明我正在完全解决问题?没有在我的IDE中编写任何有形的代码使我感到紧张。
Answers:
根据您要解决的问题,设计阶段可能需要数周甚至数月(如果不是数年),而不仅仅是几天。
需要经验才能避免立即开始执行代码。关于架构和高级设计的思考可能需要几天甚至更长的时间-绝对是开始编写代码之前发生的事情。
习惯通常是对事物的反复试验方法的结果,不断产生能够为我们带来预期结果的事物,而避免产生无法取得的结果。做我们喜欢的事情并避免我们讨厌的事情也起作用。这在一定程度上是可行的,因为最终我们会做一些自己不喜欢的事情来获得租金。
这取决于导致您这样做的原因和原因。这里有一些:
希望您发现,如果设计时间更长,则代码会更好。如果您可以回头看看,花多少时间在设计上都没关系,则可能需要进行更改。另一个要考虑的是与编写设计相比,编写代码后发现问题的频率是多少。如果直到编写完一些代码后才发现问题,则应考虑一个平衡点,并尽快开始进行编码。也许这种方法可以应用于更新的技术或非常复杂的功能。
我不知道我是否有遵守一种方法或另一种方法的纪律,即使我发现一种方法比另一种方法更好。有时我觉得有必要去白板;其他键盘。
这很常见,我觉得这是处理和理解事物的更好方法。在进行项目时,我经常陷入困境,花一两天的时间才能了解如何更好地处理它。即使问题解决了,我也要等一天。这使我更加精神焕发并开始前进。
这是很自然的现象,对于开发人员来说,截取自己的思维时间和中间时间是一件好事。
我认为,有三种方法,每种方法都适合特定的编码情况
之前我曾遇到过类似的问题,所以我对要应用的模式有一个很好的了解,并且明确了解决方案的行为方式和响应方式。
=>从所需的解决方案开始使用BDD / TDD,然后使用该代码。(好吧,有时我作弊并编写了一些代码,然后进行了测试-一种嵌套的2--> 1.方法)。
我对要应用的模式有一个很好的了解,但是我不确定该解决方案应该是什么样子。
=>原型,看看会弹出哪些有趣的东西。当我确定需要哪些有趣的东西时,移至1.。
我不确定要应用哪种模式。
=>考虑问题,以及解决问题的各种方式如何影响代码。根据练习的结果移至2)或1)。
换句话说,答案是工程师的最爱:这取决于。
我同意其他答案,原则上,花时间思考问题/解决方案是一个好主意。但是,如果您觉得自己陷于困境,那么我对如何使计划过程变得更加连贯提出了一些建议:
创建设计工件。那么,如果您不编写代码怎么办?也许您只是写下您的想法日记。或一般解决方案的草图。甚至只是对您随时间改进的问题的一个很好的总结。当您考虑并接受/拒绝想法时,请记录下您对该主题的推理记录。这样,在一天结束时,您仍然可以将真实的交付物作为劳动的证据。
与人交谈!就像有一个活着,呼吸良好的人与他们讨论想法一样。如果您认为自己陷入困境,请与某人讨论。抓住某人-任何人-并向他们解释问题。勾勒出您对解决问题的想法。即使他们做的只是在胡闹的同时吸气,呼气和眨眼十分钟,但您很有可能会在解释问题的过程中发现新的见识。
这是我的想法。
从头开始首先,您需要一个大概的想法。尝试获取一些要求的列表,或创建它们。在这里弄清楚情况应该花费一些时间。一旦有了至少一个您有信心想要的作品,就知道该作品的大部分界面,然后开始编码。
解决现有代码中的问题首先,跟踪问题。这可能需要一段时间不编写真实代码(可能会编写一些调试代码,但是通常不会保留)。一旦发现问题,根据复杂性,开始编写代码以尝试解决它。已知错误后,几乎无需考虑。如果问题是主要的设计缺陷,请参阅下一节。
设计变更/主要特征这很可能是最需要思考的一个。关于保留结构,向后兼容性等方面的思想必须包括在内。深思熟虑,寻求最佳的改变可以节省大量时间,但对我而言通常不超过几天。
添加简单功能如果不需要进行重大设计更改,则只需使用一些试验/错误即可在功能中进行编码。一般而言,这不需要很多时间。
我不同意对此达成的共识。我什至对我希望我的系统如何工作有了最模糊的书面餐巾一开始就想开始制作原型。除非我以非常精确的方式指定事物,否则我几乎不可能想到所有可能导致问题的小细节。如果我只是在与人讨论设计,那么轻易解决一些更复杂的问题就太容易了。一旦指定了类似的内容,它就可能直接位于源代码中,而不是其他一些精确而又形式化但无法编译和执行的表达方式。
在RAD和敏捷编程的时代,一旦您可以识别系统的主要部分,就应该立即开始开发,细节随之而来。由于软件正在变得越来越大,因此过早地关注每个细节将无济于事。