使用空格来对齐代码是否被认为是一种好的风格?

时间:2010-10-22 22:19:09

标签: scala coding-style

例如,什么样的代码被认为是更好的样式?如果我向专业开发人员展示我的代码并询问我的代码是否良好,那么使用第二种样式是否可能被视为(次要,但......)减去或加上我的代码质量?

我自己倾向于喜欢第二种风格,但更愿意遵守这种情况下最常见的意见。

1

val foo : Int = -1
val bar : Int = 1
val yohoho : Double = NaN

2

val foo    : Int    = -1
val bar    : Int    =  1
val yohoho : Double =  NaN

18 个答案:

答案 0 :(得分:12)

您是否更改了标签?我看到几个答案指的是Python,但我看到的唯一语言标签是Scala。如果您对Scala感兴趣,我会参考非官方的Scala Style Guide。根据样式指南,我建议您的示例应如下所示:

val foo = -1
val bar = 1
val yohoho = Double.NaN

答案 1 :(得分:9)

这只是我的拙见,但我个人只是讨厌缩进,就像任何编程语言中的第二个变体一样。有人声称“它看起来不错”,但我发现它完全不切实际。例如,为了重命名变量yohoho,您必须重新调整所有其他变量(并且大多数编辑都不会帮助您)。

答案 2 :(得分:8)

使用重构工具重命名变量时,第二种样式会搞乱。

答案 3 :(得分:3)

无论你是谁,你都是编码员。第一个对我来说真的很有趣。

答案 4 :(得分:3)

Scala并没有强迫你使用任何一种风格,但第一种通常是首选,因为如果你必须添加一个新行然后重新考虑其他所有内容,它可以真正破坏diff工具......

另一方面,如果您的代码/算法在对齐时更具可读性,那么请对齐它!根据敏捷宣言,可读性胜过所有其他问题:

  • 个人和流程与工具之间的互动

即。让其他程序员满意而不是让diff工具满意更重要。

答案 5 :(得分:2)

如果需要,我会使用第二种方式。这样做很费时间,但是有一点时间你可以配置自动格式化以自动生成它。

但这是一个偏好的问题。

答案 6 :(得分:2)

如果您的目标是遵守社区准则,可能首先更常见。但是,您是否希望适应 - 或者以代码的质量脱颖而出?学习对你有用的东西非常重要。

我建议你尝试两种风格 - 然后看看你如何找到两种风格。对我来说,对齐变量很麻烦,但在处理更大的代码文件时它非常有用。当我遇到代码的某些特定方面并希望花一点时间让我的想法渗透时,这也是一项繁忙的工作。

沿着同样的思路,我发现在使用JavaScript时,将函数的第一行推到最左边可以让我非常快速地扫描代码。这打破了正常的缩进规则 - 但它帮助我阅读代码远远好于简单的缩进代码。

答案 7 :(得分:2)

Scala Style Guide对此主题保持沉默,但我没有看到Scala代码中的垂直对齐声明,所以我选择了第一个选项。

答案 8 :(得分:2)

我用Python尝试过这个,例如在Django模型声明中。

当你稍后修改代码时,它会成为一个强迫症。例如,如果你在第二个例子中添加一个名为yoohoohoey的var怎么办?您必须返回并为每行添加空格以使其与新长度对齐。

所以,我更喜欢第一种方式做事。

答案 9 :(得分:2)

Python's PEP 8(这是“Python代码样式指南”)要求您不要使用空格来对齐代码:

  

Pet Peeves

Avoid extraneous whitespace in the following situations:
     

...

- More than one space around an assignment (or other) operator to
  align it with another.

  Yes:

      x = 1
      y = 2
      long_variable = 3

  No:

      x             = 1
      y             = 2
      long_variable = 3

答案 10 :(得分:1)

如果你自己工作,那么只要你合适就适合自己。如果您是一群开发人员的一部分,您应该投票并坚持一种方式。保留编码标准列表并在代码审查中强制执行。

答案 11 :(得分:1)

你有多少次在Scala文件中有多个初始化的val或var声明?如果可能,类中的顶级val和vars应该主要是主构造函数参数。特征中的顶级val可能是抽象的,因此未初始化。方法中的Vals和vars绝对不应该填充,因为重新排序是非常可能的。

我刚刚搜索了一个200级的Scala项目,并且只找到了一个甚至出现这个问题的类(一个“蛋糕模式”模块,其中val声明了我的应用程序的组件)。这不是问题。

答案 12 :(得分:0)

我不能代表Python,但总的来说,你会发现所有不同语言的两个例子。根据我的经验,第一个例子比较常见,但这是个人品味的问题,我不相信另一个开发人员会因为使用这两种风格而对你不好。

我非常喜欢第一个例子,并且同意其他评论过第二个例子的可维护性的人。如今所有IDE和大多数高质量的文本编辑器都提供了语法高亮功能,我认为后一种风格对于保持可读性不是必需的。

答案 13 :(得分:0)

无论你是谁,你都是编码员。第二个对我来说真的很有趣。

答案 14 :(得分:0)

无论你是谁,你都是编码员。我发现第二个更难以编辑。

答案 15 :(得分:0)

从阅读时的可用性角度来看,第二种类似于表格布局,它可以帮助您垂直扫描,快速查看有两个Ints和一个Double,但是连接水平极值稍微有点难以看到那个酒吧是1。

第一个使得各个行成为焦点并且更容易水平扫描以查看该条是1但是很难快速看到有两个Ints和一个Double。

使用更多行来扩展示例,可能更容易“感觉”到这一点 - 但使用哪一个更重要,当然在项目,团队,工作场所或有关语言的最佳实践。

另外,为什么要将表格布局限制为仅左对齐列? ^^

   val foo : Int    = -1
   val bar : Int    =  1
val yohoho : Double =  NaN

答案 16 :(得分:0)

当您需要搜索特定文本时,第二种风格令人头疼。当代码文件变大时,你需要寻找特定的文本,如果用自定义空格编码,很难找到 我们在使用TSQL脚本的大型XML文件方面遇到了不好的经验,在我之前使用样式2的编码器,在我们添加新规则或升级旧规则时结束,搜索通过自定义空间编码的文件是很痛苦的。

答案 17 :(得分:0)

当有人阅读代码时,这种缩进很有用,但这取决于你自己决定。 我的回答是不要使用它,你会节省一些时间,你真的想要使用它,制作一些文本编辑器来做它,或者自己做一些编译器来解释打印的html代码,因为它是没有价值的我要提醒你的是一个文本文件,是一个用标签,空格和返回车厢重组的简单长字节。

相关问题