【问题标题】:Separate code and comments单独的代码和注释
【发布时间】:2009-12-06 18:24:33
【问题描述】:

我发现代码中的 cmets 开始变得烦人。我觉得一旦你获得了一定程度的专业知识,代码几乎就是自我记录的。但是 cmets 仍然是必需品。 我想知道是否有这样的插件或IDE,将cmets从代码中分离出来。如果不存在这样的东西,您认为哪些想法会在 Eclipse 等 IDE 的插件上发挥作用?

以这段 Python 代码为例:

def do_something(self, var):
    # * 541
    ...

然后是这样的一些 XML:

<comments>
 <comment id="541" file="x.py" line="14">This is a comment</comment>
<comments>

谢谢!

【问题讨论】:

  • 如果注释是不必要的,Delete 键应该将它与代码分开就好了。如果评论有用,您可能不想让它不可见。
  • 就我个人而言,我宁愿成为一名污水技术员,也不愿像那样用 XML 包装我的 cmets。但我确实相信,最好的老大学尝试提出这个问题!
  • Carl,XML 只是一个例子,在将 XML 用于任何事情之前,我会先打自己的脸! :)
  • Thomas,我觉得有人删除其他人的评论是不礼貌的。你可以在提交日志上放什么? “删除了愚蠢的评论”?
  • 您以 XML 为例。我认为你欠自己一个机会。 ;)

标签: ide plugins comments


【解决方案1】:

我从未听说过外部化 cmets 之类的东西,我认为它们会很慢或很容易损坏,因为它们总是需要更新才能与代码保持同步。此外,如果您的想法是在编写代码时将它们从您的视图中完全消除,您可能会忘记更新它们,它们可能会变得不准确。

您应该研究的功能是code folding。当您不想查看它们时,它们不会将 cmets 分离到不同的文件中,而是折叠到较小的空间中。许多 IDE 都实现了它(eclipse 就是其中之一)。

【讨论】:

  • 折叠绝对是个好建议。但我想警告用户,他们可能最终会在更改代码时忘记更新 cmets。
【解决方案2】:

好的cmets会添加信息,比如why,他们不会重复代码,所以我不同意问题的前提。

但是,暂时考虑一下这个想法,我可以想象一个 IDE 在您编辑时隐藏 cmets,但单独存储它们会造成混乱。

【讨论】:

  • 自记录代码是真实存在的,与 cmets 中的重复代码无关。它是关于使用约定来说明原因,而无需太多评论。不是说来评论是没有必要的,只是更少。 en.wikipedia.org/wiki/Self-documenting
  • "come" == "some" in my cmets.
  • 我正在回答最初的问题:“我发现代码中的 cmets 开始变得烦人。” - 我认为好的 cmets 不应该因为照明而烦人。我同意好的命名和结构可以大大减少评论的数量。我不相信完整的自我记录是可能的。
【解决方案3】:

不要忘记好的 cmets 解释意图和后果,而不是从字面上解释代码在做什么。

话虽如此,您是否看过 IDE 中的代码折叠? Eclipse(一个)将collapse comments 并隐藏它们。您只需按一下按钮即可显示它们。 cmets 保留在代码中并与相关部分关联,没有任何间接(如您所提议的那样),因此您可以在任何编辑器/环境中查看它们。

【讨论】:

    【解决方案4】:

    适用于大多数编辑器的快速修复方法是更改​​语法突出显示颜色方案,以使 cmets 不可见或几乎不可见,例如白色背景上的浅灰色文本。

    如果您的编辑器支持多种配色方案,那么您可以有一个隐藏 cmets 和一个隐藏除 cmets 之外的所有内容,然后在它们之间交换。

    【讨论】:

    • 低技术解决方案万岁! :)
    【解决方案5】:

    Donald Knuth 以“文学编程”为题深入探讨了这个主题(这是谷歌搜索的一个很好的起点)。他编写了一个名为 Weave 的程序(或者是 Web?)和 Tangle,它的功能与您所要求的类似,但使用的是 Pascal 代码。

    恐怕这个想法从未离得太远,而且我从未听说过 Python 有类似的东西。

    如今,有一个程序员社区相信编写具有足够描述性的名称和变量名称的短方法,以使 cmets(通常)变得不必要。我们其他人只是按照我们一直以来的方式努力并发表评论。

    更新

    我撒谎了!这里有一个叫做 PyLit 的东西:http://pylit.berlios.de/literate-programming/index.html。此外,对整个事情进行了相当广泛的讨论。

    【讨论】:

    • 就我所见,文学编程与所要求的完全相反(恕我直言:很好:-),因为它期望代码和 cmets 的组合是一个可读的整体。
    • 如果你算上en.wikipedia.org/wiki/Leo_%28text_editor%29 带大纲的文学编辑器,那么至少有两个 Python 选项。
    • 还有用于文学编程的 Leo 编辑器 - 用 Python 编写,并且支持 Python 和其他语言的编程。 webpages.charter.net/edreamleo/front.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 2017-10-29
    • 1970-01-01
    • 2021-10-01
    相关资源
    最近更新 更多