2009-05-27 76 views
3

所以我知道一些人在编码之前用纯英文(伪代码)写出算法。我以前从来没有这样做过,但现在我想到了,组织复杂的算法很有意义。你做这个?它有帮助吗?如果不是,那么在你编写程序之前你怎么做(如果有的话)来组织你的程序?您是否在编码之前用伪代码写出算法?

+0

部分重复的[http://stackoverflow.com/questions/480432/do-you-pseudo-code]? – 2009-05-27 23:31:34

+0

..或[http://stackoverflow.com/questions/852724/writing-pseudocode-best-practices/852928#852928]? – 2009-05-27 23:33:48

回答

8

I've mentioned it before

我倾向于发现自己写的小用例在记事本中使用缩进......半打线后还是让我突然意识到我正在写的风格基本上是Python的但少一点语法!所以我得出这样一个结论:Python实际上是伪代码,它是一种用你想要写的任何语言来创建你的想法的原型。关于这种技术的最好的事情是你已经有了一个可以比较的参考您的完成结果,以防止恶意错误。

+0

我刚刚准备建议Python原型作为替代品,因为这是我发现自己也在做的;) – 2009-05-27 23:54:23

0

我不写在伪代码,但我通常做某种流程图来指导我。

1

如果它不平凡,我会首先使用伪代码,然后在我的文档中包含该伪代码,如果我为该特定组件生成任何正式文档。

如果它很简单,我只需在我的实现语言中编写代码,然后在需要的时候添加注释。

1

如果这是一个非常棘手的问题,我会做一些伪代码。

7

我不写太多的伪代码,但我发现如果我不能说我想用纯英文做什么,那么我不明白这个问题就足以开始编写代码了。

+0

好的。在我为它编写一行代码之前,我会继续在假定函数的头文件中执行此操作。 – 2009-05-27 23:49:35

+0

我倾向于亲自写一本纯英文的大纲。 – 2009-05-27 23:53:18

0

如果我知道我需要为另一部分编写代码,但我现在可以考虑方法或函数的总体轮廓,我会写出足够的内容,以便稍后可以记住我的想法。该方法应该如何运行。通常我最终会改变它,所以我很少发现它有帮助。

2

我试过这个,但是我觉得很难做到这一点,因为在我被迫用严格的语言写出算法之前,通常会有很多事情我没有考虑过。英语就像是一种很好的语言来骗你自己。

我居然发现它是有害的,因为我花时间在非问题上,忽略了直到我试图写计算机代码才看到的真正问题。事实上,我编写了计算机代码来帮助整理我对我用英文写作的想法。

我发现绘制图片和/或采取几何方法可能会非常有帮助。

+1

对于在伪代码上花费大量时间的问题,这是一个完美的解释。 – 2009-05-27 23:46:01

4

我现在主要用Python编写。这是开始的伪代码。

1

通常对于一个函数,我会写一个很好的长头描述(Doxygen格式化,最好)。

如果它足够复杂,我会做结构图(旧的UML之前的pre-OO设计),或者像UML序列或活动图。

对于整个系统,当然我从类图开始。

+0

我曾经为一个项目使用过UML,并且我觉得它有问题,但我也开发了适用于小型相当独立的软件项目。您使用UML的项目规模如何?你是建筑师还是工程师? – 2009-05-28 00:58:33

+0

其实我也不太喜欢UML。这就是为什么我会先做我的旧时尚结构图,如果可以的话。对于我想要弄清的内容,UML图表看起来不太正确。我不知道这是因为它们是由committe设计的,还是只是我更喜欢我学会设计的东西。 – 2009-05-28 14:07:04

3

我使用注释(在方法内和在发布的界面中)作为伪代码。

当实现算法,我按照顺序执行步骤是:

  • 确保API或接口是正确的。如果我无法确定正确的操作是什么,或者有什么数据进出,那就错了。
  • 描述Javadoc(或等效)注释中的每个操作;这通常指出算法的问题或如何使用它。
  • 将方法或方法中的注释写为伪代码的一种形式。我在开始编写代码之前或者在编写代码之前都要这样做。这有助于我在写作之前记住自己的想法,并记录下我以后的参考。
0

这将是梦想。

只需编写伪代码,它就可以工作。

3

一般来说,并不是真的。如果我在计算机上,而且我正在做一些特别困难或乏味的事情,那么我可能会先使用注释进行描述,但它们往往比正确的伪代码更像是一种自然语言陈述。通常我唯一一次使用适当的伪代码是在上课期间。

但是,值得注意的是,对于一个开发人员来说什么可能不适用于另一个开发人员,并且有些人会在开始前编写伪代码来发誓。

0

我非常喜欢用伪代码编写算法,只是为了将我的头包裹在算法中。它相对容易(对我来说)从英文转换为代码,所以我倾向于写更多的单词和更少的代码。我可以很容易地使用我的伪代码作为其他人的注释,以获得足够复杂的算法。

至于具体情况,我通常会用旧纸/铅笔,并缩进循环/控制语句。其他的一切都是我当时吐露出来的。

0

绝对......有一次,我有一些坚实的伪,我开始“端口”。轻松地以简单的方式完成一些复杂的事情,而无需使用语言语义。

0

和其他人一样,我的伪代码基本上是Python。这不是关于我的Python专业知识的陈述,而是关于语言的直观程度。我的解决问题的能力一直比我的记忆要好,比如语法这样的细节,所以能够用一种语言来工作是非常好的,这样我就可以专注于手头的问题,而不会因为强迫我查找语法而陷入困境。而且,伪代码与其他语言的好处之一就是在编写没有类型声明之类的东西的逻辑时 - 无论如何你都不会在Python中这样做,所以编写代码基本上不会比伪代码逻辑更复杂。

0

我把它写在fortran中 - 基本上这是几乎任何人都可以理解的伪代码。我想不出一个更简单的方法来写它。

0

这取决于算法。如果它很简单,那么我通常可以将所有的逻辑路径存储在我的脑海中,如果它很复杂,那么我会用相关的逻辑画出每一步。