在实际工作中,您多久使用一次伪代码?

9
大学时期,我的课程中除了面向对象编程(OOP)之外,伪代码的使用也得到了宣传。就像注释(和其他被宣扬的“最佳实践”)一样,在时间紧迫的情况下,我发现伪代码经常被忽略。所以我的问题是...谁真正经常使用它?或者你只有在算法真的很难完全在脑海中概念化时才使用它?我对每个人的回答都感兴趣:从刚入行的初级开发人员到在穿孔卡片时代就已经活跃的老手。

至于我个人而言,我大多数情况下只在处理困难的事情时使用它。


谢谢Daok...哇。我有点为那个拼写错误感到尴尬!;) - Kyle Walsh
没问题,我打字的时候也经常出错 :) - Patrick Desjardins
哈哈哈...我猜我应该编辑一下吧?为了准确起见,我会这么做的。 - Kyle Walsh
14个回答

15
我经常使用它。每次我需要解释一个设计决策时,我都会使用它。当与非技术人员交流时,我也会用它。它不仅适用于编程,还适用于解释任何事情的完成方式。
在与团队一起处理多个平台(如使用Java前端以及COBOL后端)的情况下,使用伪代码来解释代码的工作原理比使用真实代码更加容易。
在设计阶段,伪代码尤其有用,因为它可以帮助你看到解决方案以及它是否可行。我见过一些看起来非常优雅的设计,但尝试实现它们后才发现我甚至无法生成伪代码。结果是,设计师从未尝试考虑过理论实现。如果他试图编写一些代表他的解决方案的伪代码,我就不必浪费两周时间来弄清楚为什么无法使其正常运作了。

5

当我没有电脑,只有纸和笔时,我会使用伪代码。对于不会编译的代码(无法在纸上编译),担心语法并没有太大意义。


那不是一个坏的经验法则。 - Kyle Walsh

5

现在我几乎总是在创建任何非平凡程序时使用它。我将伪代码作为注释创建,并继续扩展它,直到我可以在其下方编写等效的代码。我发现这显著加快了开发速度,减少了“只编写代码”综合症,通常需要重写未考虑的事物,因为它迫使您在编写实际代码之前思考整个过程,并在编写代码后作为良好的代码文档基础。


3

我和我的团队中的其他开发人员经常使用它。在电子邮件、白板上,或者只是在对话中。伪代码是为了帮助你思考所需的方式而教授的,以便能够进行编程。如果你真正理解伪代码,你几乎可以掌握任何编程语言,因为它们之间的主要区别在于语法。


大多数编程是用仅在语法上有所不同的语言完成的可能是真的。你可以为C、C++、C#、Pascal和Java提出这种论点。你可以说它适用于Perl、Python、Smalltalk、Ruby,或者根据您的宏功夫水平来决定方案。您可以将Basic、COBOL和Fortran分组。然后还有一些离群值:Haskell、YACC、SQL——它们都是编程语言,但具有不寻常的语义模式。这就是真正创建新语言的原因:语义学。 - Ian

2
在第9章“伪代码编程过程”中,Steve McConnel的《代码大全》提出了一种有趣的方法:当编写超过几行的函数时,先使用简单的伪代码(以注释形式)概述函数/过程需要做什么,然后再编写实际执行该任务的代码。伪代码注释随后可以成为函数主体中的实际注释。
我倾向于在任何需要超过屏幕显示的代码段的函数中使用这种方法。如果您已经习惯将函数主体分解为代码“段落”-由空白行分隔的语义相关代码单元,则此方法特别有效。然后,“伪代码注释”就像这些段落的“标题”。
PS:有些人可能会争论“你不应该评论什么,而是为什么,只有当对于一个比你更了解该语言的读者来说不容易理解时才进行评论”。我基本上同意这一观点,但我在PPP方面做出了例外。评论的存在和形式的标准不应该固定不变,而应该最终由明智、深思熟虑的常识应用来管理。如果你发现自己因为一点点主观“规则”的弯曲而拒绝尝试,那么你可能需要退后一步,意识到自己是否足够批判性地面对它。

2

我从来没有必须在编写程序之前写出程序的伪代码。

然而,有时我需要在编写完代码后写出伪代码,通常发生在我试图用简短的时间让某人了解新代码的高级实现时。所谓“高级实现”,是指一个伪代码行描述了大约50行C#代码,例如:

核心将一堆XML文件转储到一个文件夹,并使用几个命令行参数运行process.exe可执行文件。

process.exe读取每个文件
    每个文件逐行读取
    从文件中提取唯一单词并存储在数据库中
    处理完成后删除文件

这种伪代码足以描述大约1000行代码,并足以准确地告知新手程序实际在做什么。

在许多情况下,当我不知道如何解决问题时,我实际上会在白板上以非常高级别的术语绘制我的模块,以清晰地了解它们的交互方式,绘制数据库架构的原型,绘制数据结构(特别是树形、图形、数组等)以获得对如何遍历和处理它的良好掌握等。


2

我在解释概念时会使用它。它有助于削减掉不必要的语言部分,使示例仅包含与所提问的问题相关的细节。

我在StackOverflow上经常使用它。


2

我不使用学校教授的伪代码,已经有很长一段时间了。

当逻辑足够复杂时,我会使用算法的英文描述; 它们被称为“注释”。 ;-)

在向他人解释事物或在纸上解决问题时,我尽可能多地使用图表 - 简单为上。


2
如果我在处理复杂的事情时,我会经常使用它,但我会将其用作注释。例如,我会存根过程,并放入我认为需要执行的每个步骤。然后,当我编写代码时,我会留下注释:它说明我试图做什么。
procedure GetTextFromValidIndex (input int indexValue, output string textValue)
// initialize
// check to see if indexValue is within the acceptable range
//    get min, max from db
//    if indexValuenot between min and max
//       then return with an error
// find corresponding text in db based on indexValue
// return textValue
   return "Not Written";
end procedure;

1

我主要用它来解决非常复杂的代码问题,或者向其他开发人员或不了解系统的非开发人员解释代码。

当我尝试做以上工作时,我还会使用流程图或UML类型的图表...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接