【问题标题】:Writing pseudocode - Best practices? [closed]编写伪代码 - 最佳实践? [关闭]
【发布时间】:2010-10-25 13:28:20
【问题描述】:

我不想在这里引起关于伪代码是否有用的争论,..有很多与此相关的问题。我确实发现编写伪代码有时很有用,但一直出现的一件事是我如何最好地表达它?

有时我最终会采用编号方法,有时我会使用 C 风格的语法,但大多数时候它是我认为当时最好的方法的混合。没关系,但是在 6 个月后,当我再次查看它时,并不总是那么清楚其意图是什么!为了解决这个问题,我最近开始将页面分成两部分,在右半部分我会写 pidgin [在此处插入语言],在左半部分我会用非常明显和冗长的英语写。

我认为编写伪代码没有任何“标准”,但我很想看看其他人是如何做到的,也许这会帮助我决定统一的方法。

提前致谢。

哦,我知道这个问题是主观的,如果这不是 SO 的预期目的,我很抱歉,但它仍然是一个有效的问题。事实上,计算中真的有那么多只有一个正确答案的问题吗?我会将最有帮助的答案标记为正确。

【问题讨论】:

    标签: pseudocode


    【解决方案1】:

    我倾向于发现自己在记事本中使用缩进编写小用例……在大约六行之后,我突然意识到我正在使用一种基本上是 Python 的风格编写,但语法少了一点!所以我得出的结论是,Python 实际上是伪代码,并且是一种用您真正尝试编写的任何语言来原型化你的想法的绝妙方法。关于这种技术的最好的事情是你已经有一个参考,您可以将完成的结果与讨厌的错误进行比较。

    有时候UML sequence diagram 比写作作为一种心理锻炼更快地确定需要发生的事情和时间,但这两种技术是我一次又一次地使用的方法。

    【讨论】:

    • 很好地调用序列图,.. 我将它们用于正式文档,或者当我必须了解特别技术人员或算法繁重的概念时。不过,Python 让我感到恶心。当然,它是一种完全有效的语言,也许尤其是对于原型设计,.. 我只是从不喜欢这种语法。
    • 出于好奇,相比 Python,您更喜欢什么?
    • 我喜欢这句“好的伪代码就是 Python”。
    【解决方案2】:

    我喜欢 Steve McConnell 在他的书 Code Complete 中关于编写伪代码的章节。我知道,如果您不拥有它,这个答案可能并不令人满意,但如果您不拥有它,这本书本身就是必须拥有的。

    【讨论】:

    • 从来没有时间阅读它,所以它与 Pragmatic Programmer 一起订购。是时候阅读它们了!
    • 是的,你真的应该,你会很高兴你有! :) 这就是我学习伪代码的方式,我还没有真正找到其他详细介绍它的教程。
    【解决方案3】:

    我从来没有使用过伪代码,也从来没有觉得有必要这样做,我相信如果你花一些时间重构它,你的代码可以足够干净,无论你使用什么语言。

    我以为我太懒了,或者出于某种原因反对它,但后来我发现others think the same

    【讨论】:

    • 我能理解你的意思,但我写的伪代码不是为了“干净”,我写它是为了确保在开始之前我的概念/算法就在我的脑海中。此外,无论您为重构预算多少时间,除非您预先进行了某种设计,否则您不知道可能需要多少重构。您最终可能会通过项目获得 90%早早错过了一些东西,你可能会回到原点!课程的马虽然。我写了很多完全没有伪代码的软件。这取决于事情变得多么复杂。
    【解决方案4】:

    我从用英语写作或混合编程语言表达开始。 然后我一步一步地用编程语言表达式替换英语,有时将英语单词保留为 cmets,然后 - 瞧 - 我有一个测试功能 - 所以它就像伪代码 + TDD 合二为一。 不过我不得不提一下,我并不总是使用这种方法,只是当我必须解决一项困难的任务或设计一个新的而不是微不足道的类时。

    【讨论】:

      【解决方案5】:

      我通常会完全避免使用任何类型的代码语言,并编写有关我希望在程序中的任何给定点发生的事情的 cmets。一旦所有的cmets都完成了,就是填空题了。

      【讨论】:

      • 我沿着这条路线走了几次,但问题是,当您使用 OO 语言时,您不会以整个过程的顺序流程结束,除非您需要的一切都可用于您的对象'正在写作,......如果这有意义吗?!
      【解决方案6】:

      我还发现伪代码很有用。你的两页方法听起来不错。你也可以看看LiterateProgramming;我在编程时经常使用 LP 风格来表达我的想法,尽管我通常不使用 LP 工具。

      【讨论】:

      • 嗯,以前从未遇到过。当然值得一看。谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-27
      • 1970-01-01
      • 2022-01-19
      • 2010-11-11
      • 1970-01-01
      • 2010-11-29
      相关资源
      最近更新 更多