Language agnostic 注释中的水平线

Language agnostic 注释中的水平线,language-agnostic,coding-style,comments,Language Agnostic,Coding Style,Comments,我意识到这在很大程度上取决于个人偏好,但我很好奇,以下这些是否有明显的缺点 我发现自己在同一个文件中不断地将源代码分成逻辑组(通过“注释”)。例如: 我最近一直在阅读一些外星人的资料,我注意到几乎没有人这样做 我能提出的唯一反对这种“除法”的论点是,当你以纵向模式实际打印源代码时,除法(如果超过80个字符)将被换行。不过,在横向模式下,这不是一个问题 老实说,我甚至不知道我为什么或者什么时候开始这么做。我的强迫症还有其他缺点吗 此外,对我来说,这种行为与语言无关;前几天我在写一个shell脚

我意识到这在很大程度上取决于个人偏好,但我很好奇,以下这些是否有明显的缺点

我发现自己在同一个文件中不断地将源代码分成逻辑组(通过“注释”)。例如:



我最近一直在阅读一些外星人的资料,我注意到几乎没有人这样做

我能提出的唯一反对这种“除法”的论点是,当你以纵向模式实际打印源代码时,除法(如果超过80个字符)将被换行。不过,在横向模式下,这不是一个问题

老实说,我甚至不知道我为什么或者什么时候开始这么做。我的强迫症还有其他缺点吗


此外,对我来说,这种行为与语言无关;前几天我在写一个shell脚本,注意到了完全相同的行为模式。

在我看来,你没有使用好的IDE。
例如,您可以使用VS中的#区域对代码进行分组。而且它比你的方法简单得多。

在我看来,你没有使用好的IDE。
例如,您可以使用VS中的#区域对代码进行分组。这比你的方法简单得多。

我们中的一些人确实使用了它们,尽管可能没有你那么慷慨。请看我的答案。

我们中的一些人确实使用了它们,尽管可能没有你那么慷慨。请参阅我的答案。

区域是划分代码的更好方法。我现在所在的公司有一项反对“花卉拳击”的政策(即用/****和******/注释包围事物),我相信它也适用于单杠


我会坚持使用区域,使事情看起来更好。

区域是划分代码的更好方法。我现在所在的公司有一项反对“花卉拳击”的政策(即用/****和******/注释包围事物),我相信它也适用于单杠


我会坚持使用区域,让事情看起来更美好。

很久以前我就做过类似的事情。我会为包含、声明、函数等等的块设置部分标题

我放弃做那件事有几个原因:

  • 还有一件事需要维护。您需要记住在编写新代码时添加它们,在删除内容时删除它们。我宁愿把精力花在代码本身上,而不是纠结于某个东西是否足够大,是否需要中断

  • 有些东西很难分类。假设您想在函数中嵌套一个小类。你真的要在你的函数中间添加一条这样的线吗?

  • 更智能的编辑器使得在代码中导航更容易。最初,当在文件中上下滚动以查找内容时,它们是一种很好的地标。但在Emacs中,我经常跳过增量搜索和标记文件。在我使用IDE的时候,它会在侧面显示文件的各个部分,让我点击一下就可以找到它们

  • 随着我越来越好,我转向更小、更少的单片模块。这些天,我只是将内容移动到一个新文件中,而不是向现有的源文件中添加一个新的节。文件本身提供了逻辑分组。每个文件都是一个紧密的、有凝聚力的单元——为什么要将其分解

  • 我改用Javadoc/Doxygen风格的注释。这些线比随机的水平线更具描述性,我也发现它们在代码中看起来也更好


  • 很久以前我经常做类似的事情。我会为包含、声明、函数等等的块设置部分标题

    我放弃做那件事有几个原因:

  • 还有一件事需要维护。您需要记住在编写新代码时添加它们,在删除内容时删除它们。我宁愿把精力花在代码本身上,而不是纠结于某个东西是否足够大,是否需要中断

  • 有些东西很难分类。假设您想在函数中嵌套一个小类。你真的要在你的函数中间添加一条这样的线吗?

  • 更智能的编辑器使得在代码中导航更容易。最初,当在文件中上下滚动以查找内容时,它们是一种很好的地标。但在Emacs中,我经常跳过增量搜索和标记文件。在我使用IDE的时候,它会在侧面显示文件的各个部分,让我点击一下就可以找到它们

  • 随着我越来越好,我转向更小、更少的单片模块。这些天,我只是将内容移动到一个新文件中,而不是向现有的源文件中添加一个新的节。文件本身提供了逻辑分组。每个文件都是一个紧密的、有凝聚力的单元——为什么要将其分解

  • 我改用Javadoc/Doxygen风格的注释。这些线比随机的水平线更具描述性,我也发现它们在代码中看起来也更好


  • 在C源文件中,我有一个模板,它将文件拆分为#defines、typedefs、静态(文件范围)变量定义和函数原型、公共函数和静态函数等部分(类似于C头文件)。它们由一行“=”分隔

    与上面的问题不同,创建这些代码不是为了对现有代码块进行分组。我从这些部分开始,因为它为每个文件提供了一个有用的结构,并指示将要创建的代码放在何处

    我在每个函数之间也有一行“-”,必要时在其他部分的逻辑分组之间也有一行“-”


    如果没有其他内容,我发现在滚动文件时能够看到函数开始和结束的位置非常有用。

    在C源文件中,我有一个模板,可以将文件拆分为#def
    //----------------------------------------------------------------------------
    #include "..."
    //----------------------------------------------------------------------------
    #include <...>
    //----------------------------------------------------------------------------
    #include <boost/...>
    //----------------------------------------------------------------------------
    #include <os-specific/...>
    //----------------------------------------------------------------------------
    namespace
    {
        void Foo()
        {
        }
    }
    //----------------------------------------------------------------------------
    namespace
    {
        void Bar()
        {
        }
    }
    //----------------------------------------------------------------------------
    namespace
    {
        void Baz()
        {
        }
    }
    //----------------------------------------------------------------------------
    int main()
    {
    }
    //----------------------------------------------------------------------------
    //This file ends with a new-line.
    
    //----------------------------------------------------------------------------
    #ifndef FOO_HEADER_INCLUDED
    #define FOO_HEADER_INCLUDED
    //----------------------------------------------------------------------------
    #include "..."
    //----------------------------------------------------------------------------
    namespace Foo
    {
        void Bar();
    }
    //----------------------------------------------------------------------------
    #endif
    //----------------------------------------------------------------------------
    //This file ends with a new-line.