编程时使用空格的最佳方法是什么?

Imm*_*ith 9 whitespace coding-style

我是编程和学习的新手,我已经看到了格式化代码,注释等的不同方法; 并被推荐用于不同的技术.

我主要使用C#,C++和Java进行编程,所以我想知道布局代码的最佳方法是什么,这样如果其他人经历过它,他们会对它的简单易懂感到印象深刻.

jjn*_*guy 27

遵循的最佳规则是:( 可能是每个人都会同意的唯一规则)

始终如一!

选择一种风格并坚持下去.始终把你的牙套放在同一个地方.使用类似的命名约定.不要混合标签和空格等...

话虽如此.尝试遵循已经存在的语言惯例通常也是一个好主意.


与人合作的团队中,确保你们都认同一种风格并坚持下去.如果不这样做,通常一个开发人员将使用自动格式化程序重新格式化文件,然后您可能会有数百个由空白引起的小冲突.

  • 您应该提到您应该在源存储库中保持一致,以获得可读的提交/差异.如果你不这样做会有很大的痛苦 (2认同)

iwe*_*ein 14

保持你的差异清洁.

在以下限制下用空格做任何你喜欢的事情:

  1. 不要将空格中的更改与代码中的更改一起提交
  2. 除非您有一个好的(合理客观的)参数,否则不要更改现有文件中的空格.

为什么?

处理空白的最重要因素不是文件本身的可读性,而是差异的可读性.当冷汗流入你的脊椎并且思维似乎比平时更难时,你会看到这些差异.

以上两条规则确保差异清晰可读.在如何处理空白方面保持一致有帮助,但只有在一个完美的世界中它才是万无一失的.努力争取是一件好事,但并不像保持差异一样重要.

作为优化,您可以尝试与其他人就代码风格达成一致,这样您就不会浪费时间来遵守1和2.

  • 这是一个很好的观点,我已经违反了#1几次.它通常会在以后引起重大疼痛. (3认同)

JSB*_*ոգչ 8

几乎每个人都会同意:

  • 在逗号后面加上空格
  • 在分号后面添加换行符(for循环声明除外)
  • {}通过一个标签或四个空格(您的选择)缩进所有块(内部任何内部)的主体
  • }结束块的结束后添加换行符(除了少数例外)

除了一些团队坚持的一致性之外,还有很多东西,但这些代码格式的元素是通用的.

基本上有两种方法来处理if块和任何与相同的格式(for,while,using等):

if (condition) {
    /* code */
}
Run Code Online (Sandbox Code Playgroud)

与:

if (condition)
{
    /* code */
}
Run Code Online (Sandbox Code Playgroud)

这纯粹是一个偏好问题.选择一种风格并坚持下去(或与团队的其他成员保持一致).

"换行后}"规则的一个可能例外是分组if/else if/else,块,try/catch块或其他紧密连接的块,许多人更喜欢这样的空间:

if (condition) {
    /* code */
} else if (condition2) {
    /* code */
} else {
    /* code */
}
Run Code Online (Sandbox Code Playgroud)

  • @Kendrick,那些人应该被cluebat打败.(我从未见过任何人用逗号后避开空格). (4认同)
  • 缺少两件事.(另一个答案涵盖了一致性.)另一个问题是在逻辑代码块之后,考虑一个额外的换行符或两个空格,以便在屏幕上直观地分隔内容. (2认同)