排列操作符是一种值得推崇的风格吗?

3
some_var = foo()
another_var = bar()

或者

some_var    = foo()
another_var = bar()

当添加或删除行时,包括改变空格以保持它们对齐。这看起来真的很好吗?这值得破坏差异吗?


你是如何制作差异的?只需告诉它忽略空格的更改即可。 - brian d foy
7个回答

9

我认为这不是一个好的风格,因为它会使更改变得太困难(你必须重新排列所有内容),而且对我来说,在没有额外空白的情况下也可以完美阅读。

尤其让人烦恼的是,当你更改一行左侧的内容时,如果该行比其他所有行都要长,那么你需要重新排列所有其他行。

例子:

some_var    = foo()
another_var = bar()

现在我想添加一个名为another_another_var的变量:
some_var    = foo()
another_var = bar()
another_another_var = baz()

现在我需要再次将它们排列起来:
some_var            = foo()
another_var         = bar()
another_another_var = baz()

非常让人恼火。

4

从我作为版本控制系统管理员的经验来看,很少有样式问题值得破坏差异。我们有一个开发者进行了性别转换手术后更改了名字,她的新名字没有相同的首字母。然后,每当她在程序上工作时,她就会将以前的缩写更改为新的缩写,这给我带来了很多烦恼。


这种情况应该分成两个更改,以便可以隔离“无用信息”,并且不太可能隐藏重要更改。虽然很难记住要这样做。 - Diastrophism
是的,这很烦人,但如果我必须选择变性和因为改名字而生活在2000个差异中,我肯定知道该选择什么。希望她对自己的新生活感到满意。 - Toon Krijthe

2
使用Perl,您只需设置偏好并定期运行perl-tidy即可。
在正确的上下文中,它提供了对齐= 's' 的美感,而无需担心如何最好地对齐它们并记得自己执行。
此外,无论您为项目使用什么编码样式,都应该坚决维护它。
样式越一致且强制执行,就越容易发现代码中的奇怪之处和编程错误。
此外,对编码样式进行一些强制执行可以通过实施良好的换行规则在长期内减少差异冲突问题。

1

不。

虽然有些人觉得这种风格很美观,但是现代的带有语法高亮功能的IDE使得按照这种方式对齐变量成为一种浪费时间的行为,包括重构或修改代码时重新格式化所需的时间。

此外,我坚信在需要使用变量的范围附近声明变量。很少会出现需要对齐的变量声明块。


1

这样的样式会导致眼睛垂直移动;然而,代码应该是水平阅读的。编码风格应该与眼睛的行为相辅相成,而不是相互抵触。


1
不,除非变量之间存在某种垂直关系,例如:
some_var[  1] = "foo";
some_var[100] = "bar";

但这种情况非常罕见,尤其是当我只有几个变量时。在 SQL 中,这种情况可能更常见,其中参数名称、类型和默认值(三个部分)可能在一行中,但即使在那里,我也会尽量避免它——这不值得麻烦。

@some_var varchar(25) = NULL
@another_var varchar(1000) = ''
@one_more int = 0

1
此外,在极端情况下,由于存在大的间隔,很难轻松地看出哪个赋值语句属于哪里。这是我在头文件中经常看到的情况。
...
some_important_number                                             = 348273;
initial_message_prefix                                            = "foo";
another_important_number                                          = 348711;
max_bucket_sz                                                     = 456;
...

当一个块中有几十个这样的内容时,它变得难以阅读。


我希望你在夸张... :P - Paige Ruten
很遗憾,不是的。这个例子是虚构的,但它来自真实经验。 - Diastrophism

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接