什么时候应该在源代码中插入空行?

问题描述 投票:0回答:8

我不确定我应该在我的源代码中的哪里添加新的空行。我想编写易于阅读和理解的漂亮代码。

它是仅基于对象还是基于概念?有例子的答案对我最有帮助。

language-agnostic coding-style
8个回答
9
投票

就我个人而言,我并没有使用太多的垂直空白——其他人会推荐比我在下面描述的更多的东西。只要不同事物之间存在某种视觉分离,我就想查看代码,而不是空行。我倾向于把:

  • 非成员函数之间的单个空行(以及在 C++ 中,在类外部定义的成员函数之间)
  • 类之间的一个空行。
  • 与后面的多个函数/类相关的注释前后的单个空行,即在代码中定义“部分”:“用于 XML 处理的辅助函数”,那种注释。
  • 类中成员函数之间没有空行
  • 函数内通常没有空行。如果一个函数分为几个阶段,我可能会在它们之间放置空行,或者只是在它们之间添加一条注释来解释这些阶段。很长的函数更有可能以这种方式被空格分开,并不是说我认为很长的函数是一件特别好的事情。如果一个成员函数确实有内部空行,我通常也会用空行将它与类中的其他成员函数分开。

两个连续的空白行在我看来有点可疑,我自己几乎从不这样做。三只是在我的显示器上浪费了非常好的空间 - 任何想要分开的东西都应该 IMO 把它们放在不同的文件中。

自动文档(Javadoc、Doxygen、Pydoc 等)的注释块也提供视觉分离——比几行空格更有效,比任何数量的空格都更有效率。

当你在团队中工作时,复制你修改的任何文件的样式。不要重新格式化它以符合您自己的喜好,不要使用您喜欢的格式添加新代码。要么同意一种房屋风格,要么接受它。


5
投票

我认为这是个人喜好或公司标准的问题,但在办公室里,即使我们有一些准则,每个人都有自己的代码编写方式,空格是其中一个差异。

我更喜欢使用大量的空行。每次我的代码上下文发生变化时,我都会将这部分与之前和接下来的部分分开,并在之前注释整个块。


1
投票

这取决于您自己的喜好或您公司的准则,您必须在其中创建回车符。事实上,这样的指导方针还将决定你放置空格、制表符的位置以及你的呼吸方式。好吧,也许不是最后一次。

如果你是一个人,并且希望编码方式简洁,你总是可以考虑实施 Microsoft StyleCop。它可以控制您的编码习惯,您可以将其配置为随心所欲。


1
投票

就像每个人都表示每个人都有自己的方法。就我而言,有几件事我喜欢始终如一地做。

超过一行的注释前后空行。

每节课前后至少有两个空行。

函数用一行分隔。

其他空行更多可选。这里的事情是我喜欢评论和课程脱颖而出。通常适当的缩进可以满足大多数其他需求。这里的技巧是除非万不得已,否则永远不要浪费垂直空间。

如果您必须使用其他人的代码,我想如果他们遵循相同的空白时间表,您会很高兴。迷失在函数或类定义中可能会很麻烦。


0
投票

这可能是喜好或房屋风格的问题。

我在函数之间以及较大函数调用中的逻辑块之间包含空行。


0
投票

我的代码标准是:

  • 在每个 if / else 语句结束后(最后一个
    }
  • 在每种方法之后
  • 在每个属性之后由多行组成
  • 采集字段后

例子:

    string a = "Note: ", b= "This", c= "A", d= "String", e= "Test";
    int f=1, h=1;

    string A { Get; Set; }
    string B { Get; Set; }
    string C { Get; Set; }

    string D 
    { 
        Get 
        {
            Return this.d; 
        }
        Set 
        { 
            if (value == "Foo")
            {
               // DoSomething
            } 

            this.d=value; 
        }
    }
    //empty line

0
投票

查看 StyleCop 的源代码布局:http://stylecop.codeplex.com/.
我还推荐 FxCop 或 ReSharper。
另外,Control K D 布局文档但不整理空行?


-2
投票

如果一个函数非常复杂,以至于我们想要放置空行以使其更易于理解,那么它可能需要一些重构,而不是空行。

即,考虑这个简化的 php 片段:

function doStuff(){
    $a = new A();
    $result = $a->foo();

    $b = new B();
    $result += $b->bar();

    return $result;
}

在我看来会更好:

function doStuff(){
    $result = $this->processA();
    $result += $this->processB();
    return $result;
}

通过这种方式,您仍然可以在不浪费文件空间的情况下提高可读性。

我经常用我的笔记本电脑工作,不得不在文件中滚动很多东西是很烦人的。如果代码可以干净,避免不必要的空行,开发和理解会更快。

© www.soinside.com 2019 - 2024. All rights reserved.