Answers:
在编码之前编写伪代码肯定比不进行计划的编码要好,但这远非最佳实践。测试驱动的开发是一种进步。
更好的方法是使用诸如用户故事,用例,CRC卡,图表之类的技术来分析问题领域并设计解决方案,例如Cleanroom,RUP,Lean,Kanban,Agile等方法所支持。
彻底了解问题的性质以及用于实施解决方案的组件是最佳实践的原理。
我将注释用作一种非常高级的伪代码,因为在编写代码之前先编写注释。我发现,即使从较高的角度考虑整个问题,也可以极大地改善我的代码。
不,请勿先进行伪代码
这是太多的开销。您正在做编写逻辑的工作,但没有任何好处。我建议使用以下任何一种方法:
与伪代码不同,所有这三种方法都将您直接带到解决方案中。就个人而言,我倾向于根据团队规模使用技术1或2。对于较小的团队(例如5人或更少),原型制作非常有效。对于有多个开发人员并行工作的大型团队,我发现技术2早期产生的文档效果很好,因为它使您可以尽早讨论并帮助您更好地定义组件边界。我敢肯定TDD也能很好地工作,但是我还没有致力于这个过程的团队工作。
如果您不熟悉该语言,或者需要更改思维环境,则伪代码会很有用。在极少数情况下,我会写伪代码,它在纸上。有时,只需将手从键盘上移开并在纸上涂鸦,就可以避免精神障碍。
但是作为开发过程的正式部分?没门。对于个人来说,这是一个偶尔有用的工具。有更好的方法“在编写之前先知道自己在写什么”,例如:
我还建议在开始编写代码之前获得任何形式的批准可能会带来麻烦,其价值不菲。设计评审(预实施)可能有用,但是它们需要比单个算法更高的级别。
对于我自己和最近几年与我一起工作的人来说,伪代码几乎已变成不完全完美的真实代码。除非您同时使用多种语言,否则大多数人似乎开始以其主要语言的一般模式进行思考。我已经在.net商店工作了一段时间,所以大多数人在办公室周围的白板涂鸦看起来都像vb或c#,但缺少一些标点符号。
在辩论诸如此类的选择时,该练习仍然很有价值,但是随着您花更多时间使用几种语言,与语言无关的部分会逐渐消失。
伪代码越来越多地使用诸如UML之类的工具以图形方式编写。例如,尝试yUML。
用于创建和发布简单UML图的在线工具。它使您确实非常容易:
- 将UML图嵌入到博客,电子邮件和Wiki中。
- 在论坛和博客评论中发布UML图。
- 直接在基于Web的错误跟踪工具中使用。
- 将UML图复制并粘贴到MS Word文档和Powerpoint演示文稿中...
... yUML节省您的时间。它是为那些喜欢创建小型UML图和草图的人设计的。
如果没有yUML,创建UML图可能涉及到加载UML工具,创建图,为其命名,修改布局,将其导出到位图,然后在线将其上传到某个地方。yUML不会让您做任何事情...
取决于所使用的语言以及您对它的熟悉程度。
许多现代语言(例如Python或Java)已经非常接近伪代码,以至于首先编写一些临时的伪代码非常浪费,恕我直言。更好的方法是立即使用跟踪器项目符号方法进行操作。
如果您要制作一些底层的,接近金属的东西,或者对所使用的语言不满意,这是另一回事。那么伪代码肯定是有用的。
在某些情况下,伪代码倾向于在我的工作中被打破,在学术界,编程倾向于被用作工具或在项目中间填充“现在我们解决它”的学术研究:
这不是一个是/不是问题。相反,应该怀疑何时使用伪代码。在设计解决方案之前了解问题很重要,并且在实施解决方案之前要对解决方案有清晰的了解很重要。伪代码可用于以下任何步骤:
伪代码实际上是高级语言中的正确代码,通常也称为原型设计。
除了获得理解之外,伪代码还可以用于通信。
如果您想知道是否应该定期使用伪代码,我个人会反对各种严格的规定。如果用于团队中每个人都能理解的琐碎问题,这很容易变成无聊的时间浪费。将伪代码用于在项目的整个生命周期内维护的规范也很昂贵,并且几乎没有价值。