字符数少,而且显示的时候格式很好,不同设备展示差不多,而且能兼容一些宽度变化比较小的字体。
字符多,字体一变整个代码格式都变了,还有无法与代码中有用的空格区分
其实我倒无所谓,只是我们部门也没规定这些,有些同事用空格,有些同事用 tab,搞得我强迫症犯了
上面的一堆
,改成一些
1
BrettD 2020-08-18 11:45:35 +08:00 via iPhone 3
字体变了代码格式怎么可能会变呢?难道你用的不是等宽字体?
|
2
ayase252 2020-08-18 11:46:59 +08:00 via iPhone
tab 的显示宽度是不一致的
|
6
passerbytiny 2020-08-18 11:57:07 +08:00 via Android
请楼主先说一下你用的什么神仙编辑器,竟然还能(在同一个编辑器内)让 tab“尽量”对齐。
|
8
levn 2020-08-18 11:59:02 +08:00
不混用的话其实用哪个都行
如果说有点区别的话,用空格更灵活,可以在不同地方使用不同的缩进数 |
9
cmdOptionKana 2020-08-18 11:59:36 +08:00 1
@lovecy 编程就用等宽字体,这是行业标准。
|
10
ysoserious 2020-08-18 11:59:58 +08:00 1
现在的编辑器不是都可以自动把 tab 转换为空格么, 又不需要你手动去一下下敲空格, 都能对齐有啥好纠结的, 保持团队统一不好么.
|
11
ripperdev 2020-08-18 12:03:46 +08:00
@passerbytiny Vim 就可以,JetBrains 家的设置下应该也可以
|
12
si 2020-08-18 12:06:35 +08:00 4
空格的宽度是固定的,输入 N 个空格就是 1 个空格的 N 倍宽度。
但 tab 在不同的编辑器显示的时候宽度是不同的,有些按一个字符宽度显示,有的按 8 个字符显示,差别太大了。 而且还会根据内容缩减宽度。和内容混合的时候,tab 的宽度会在 1 至 N 之间变化。 我如果要固定宽度的时候,用空格,如果要多行对齐就用 tab 。 所以我一般开头用空格对齐,中间用要对齐就用 tab,如果只是为了分隔就用空格。 |
13
lovecy OP @passerbytiny 我惊了,`\t 空格\t`和`\t\t`难道不是同一个宽度?
@whenov sublime3 默认字体,不是等宽(具体默认是啥我没找到。),vscode 默认字体`Consolas, 'Courier New', monospace`,也不是等宽,我目前用的是`Casadia Code`,也不是等宽,等宽字体用过几个,感觉美观性确实差点 @also24 如上 |
14
icyalala 2020-08-18 12:12:42 +08:00
写代码有哪个编辑器默认不是等宽字体的,难不成你是用记事本或者 word 来写代码?
用空格缩进在哪里看都不会变,反而是 tab 显示空间会不一致。 |
15
ispinfx 2020-08-18 12:15:37 +08:00 via iPhone 1
`Consolas, 'Courier New', monospace`不是等宽???
|
16
icyalala 2020-08-18 12:16:20 +08:00 1
@lovecy Sublime 默认字体 Linux 是 Monospace,Windows 是 Consolas,macOS 是 Menlo Regular,这些都是等宽字体。Casadia Code 也是等宽字体。
除非你中英文混用,中文 fallback 到其他字体去了。 |
18
Kr98 2020-08-18 12:18:18 +08:00 3
tab 显示宽度的不一致正是它优于空格的点
使用空格等于将你的缩进喜好强加于阅读者,比如你喜欢 2 缩进,阅读者就只能看 2 缩进的代码。如果阅读者喜欢 4 缩进,那就很难受了。 而 tab 完全不存在这个问题 |
19
watzds 2020-08-18 12:21:23 +08:00 via Android
我觉得 tab 每个人可以选择显示宽度比较好用,不过同时限制每行宽度的话,不知道是不是有问题
|
20
xmumiffy 2020-08-18 12:24:48 +08:00 via Android
我们就是用 tab 的,然后每个人可以自己在 IDE 上指定一个 tab 多少空格
|
21
casparchen 2020-08-18 12:25:49 +08:00
等宽字体(英语:Monospaced Font )是指字符宽度相同的电脑字体。
|
22
lovecy OP @cmdOptionKana 啥行业标准,我咋没听说过。。。。,那为啥热门编辑器默认字体都不是等宽字体
@ysoserious 不是我不想统一,如果大家都用空格,我也用了,我们老代码是 tab,然后有些同事用 JetBrains,有些用 sublime,默认的缩进是空格,我们没人规定这个,所以想看看大家都是咋样的。。。 |
23
MyPassWordis 2020-08-18 12:27:29 +08:00
“而且显示的时候格式很好,不同设备展示差不多”
这就没法聊了 |
24
lovecy OP |
25
passerbytiny 2020-08-18 12:30:00 +08:00 via Android 4
看楼主对我的回复,大家散了吧。
|
26
morethansean 2020-08-18 12:30:08 +08:00 1
楼主你列的几个全是等宽字体,现代编辑器的默认字体估计你找不出不是等宽的。我感觉你可能有中文,然后用的系统没有正确的等宽中文 fallback. 你可以在最后再加一个等宽中文,比如宋体。
|
27
lovecy OP @passerbytiny 我已经说了我的例子,你可以自己去编辑器试试这两个是不是显示宽度一直,你觉得不对就给出反例或者指出问题,请不要阴阳怪气
|
28
whileFalse 2020-08-18 12:35:04 +08:00 1
Tab 的唯一问题是,难以阻止协作者甚至是你自己混用 Tab 和空格,然后在不同的环境中看起来不一样。
这点 yaml 做的就挺好,直接不允许使用 Tab 。 |
29
rockyou12 2020-08-18 12:37:47 +08:00 1
不要和杠精辩论,只会浪费时间,大家散了吧
|
30
Chingim 2020-08-18 12:38:56 +08:00 via Android
肯定空格呀
tab 的宽度在不同的环境下是会变的,恶心得一批 |
31
fishCatcher 2020-08-18 12:57:02 +08:00 via iPhone
所以 gofmt 直接一律 tab
|
32
newtype0092 2020-08-18 13:03:23 +08:00 19
看了 24#的回复 “原来你们说的是英文等宽,我以为这个是默认了,我说的是中英文等宽”
嗯。。。 真相只有一个:LZ 写的是易语言代码!!! |
33
ipadpro4k 2020-08-18 13:04:27 +08:00 via iPhone 1
散了散了,奇葩
|
34
BrettD 2020-08-18 13:19:15 +08:00 via iPhone
大家散了吧,我都看不懂楼主在说啥
|
35
Shook 2020-08-18 13:22:49 +08:00 1
我喜欢在初始化变量时,把等号对齐。
有时会需要用空格手动对齐一下,如果用 tab 而不是空格的话就会造成混用了,所以我都是用空格的。 |
36
la9998372 2020-08-18 13:23:59 +08:00 1
举个例子 C 语言注释
一行代码,后面跟着 //注释,如果代码和注释之间用 tab,换编译器的时候,由于 tab 在每个编译器下的空格数不一致,很容易就会出现,你在某个编辑器上发现注释是对齐的,但是另外一个编辑器就不对齐了。虽然现在大部分编辑器都是 tab=4 空格,但是有时候也会出现不对齐的情况。 如果这时候用空格,一定是没问题的。 |
37
Mutoo 2020-08-18 13:26:33 +08:00
tab 调成 2 缩进或 4 缩进时非常容易与空格混淆,对编辑器兼容性也极差。相比之下空格的兼容性更好。
另外 editorconfig / prettier 也如此好用,根本不需要手工缩进,硬盘空间如此便宜,也无须纠结文件大小。 |
38
si 2020-08-18 13:46:35 +08:00
@newtype0092 易语言只支持空格,不支持 tab,不会有这个问题,更谈不上喜欢用 tab 了😁
|
39
jackmod 2020-08-18 13:50:56 +08:00
tab 和空格我都用。很多格式化工具支持自动转换。保证不混用即可。
|
40
shijingshijing 2020-08-18 14:10:08 +08:00 1
特别讨厌 Python 这种行尾不加休止符+用缩进来分隔代码的风格,C,C++,Java 的花括号+分号结尾很好的解决了格式问题,而且即使在极端情况下,所有代码被压缩到一行,还能够快速格式化成原来的样子。
Python 这种就是解决一个不存在的问题,敲四个空格+后期可能出现问题 vs 每行分号结尾,真不明白到底是谁战胜了谁。 |
41
mazyi 2020-08-18 14:15:44 +08:00 via iPhone
hhhhhhhh,我要笑死啦,今日精选笑话集
|
42
lovecy OP @la9998372 对齐确实用空格对齐比较好,我这老项目好多用 tab 对齐的,换个字体格式乱了都
@Shook 对齐确实用空格,我也是用一个插件自动空格对齐的,就是有一次前面有中文 @newtype0092 你是在开发只给英语语种人用的软件?代码里一点中文没有么 @shijingshijing 强制格式好像也有优点,感觉是习惯问题了 |
43
einsdisp 2020-08-18 14:40:07 +08:00 2
tab 用于“缩进”,空格用于“对齐”。
对于“缩进”,显示宽度是由阅读者自己定义或设置的,代码作者无法强制。 对于“对齐”,代码作者强制将相邻的行对齐,阅读者无法自己控制。 大部分情况下,“缩进”与“对齐”是两件事。 所谓“缩进”,用于区分代码块层级,例如代码行首的缩进。 所谓“对齐”,用于代码行中的某种语义的对齐,例如对齐前后相邻若干行的等于号、冒号、或行尾的注释,诸如此类的。 golang 默认的格式化工具就很清晰的区分的这两点:行首缩进用 tab,结构体注解对齐用空格。 |
44
darmau 2020-08-18 15:02:32 +08:00 3
我只知道你再纠结于这点就要找不到女朋友了,见《硅谷》
|
45
webshe11 2020-08-18 15:07:48 +08:00
(笑而不语)
|
47
ian19znj 2020-08-18 15:31:10 +08:00
@lovecy #46 硅谷里有一个情节是, 男主这样的奇葩走了狗屎运遇到一个志同道合的女票, 但是两人由于缩进应该用空格和 tab 的分歧而分手, 其中男主坚持要用 tab.
|
48
chenmobuys 2020-08-18 15:49:45 +08:00
空格固定宽度,Tab 不同编辑器显示的宽度可能不一致。
|
49
lxk11153 2020-08-18 16:02:42 +08:00 1
append 一个例子出来吧,我懵逼了!!!
|
51
qiyue0726 2020-08-18 16:08:37 +08:00
我就很不爽 Python 那垃圾缩进设计,Java 、JS 这些我都是 tab 、空格混着来,对齐了就好
|
52
qqqqqcy 2020-08-18 16:57:35 +08:00
所有靠自觉和口头的风格化都是没有任何价值的。在项目里用 lint 工具限定好就行了,用哪个都无所谓,关键是要统一
|
53
sdlzqjf 2020-08-18 17:39:17 +08:00
ide 里都可以设置缩进格式,可以设置成四个空格,也可以设置成 tab,只要团队用统一代码格式模版,统一格式化就行啊,讨论哪个好哪个坏没什么意义,关键是要有统一的规范,其他的用工具来实现就可以啊
|
55
passerbytiny 2020-08-18 18:10:33 +08:00 via Android
@lovecy 直到现在,你都没说你用得是什么编辑器,你也没说明白你那个“尽量”对齐是个什么效果。
“我不明确说出我的论据,你要先猜出我的论据再拿论据反驳”,你这种人在本社区是会被喷 /屏蔽到自闭的。 此项不用回复,原因见上。 |
56
ZRS 2020-08-18 19:21:41 +08:00
一致性
|
57
JCZ2MkKb5S8ZX9pq 2020-08-18 19:23:23 +08:00
本来我 python 也一直用 tab,感觉简洁还省字符。不过后来有几个开源项目统一要 pep8,那之后就基本都按 pep8 标准来了,缩进也用空格了( autopep8 自动搞定)。
|
58
Torpedo 2020-08-18 19:41:45 +08:00
随便,设置好格式化工具,爱咋咋地
|
59
secondwtq 2020-08-18 20:00:44 +08:00
文本形式的“代码”仅仅是“程序”的一种编码形式而已。我倒是觉得不应该太局限在单一的编码形式上。
|
60
tairan2006 2020-08-18 21:14:35 +08:00
tab 转 4 空格就完事
|
61
shylockhg 2020-08-18 22:21:02 +08:00
tab 是不定长的,space 是定长的
|
62
masker 2020-08-19 00:43:16 +08:00 via Android
看了那么多回复,我倒觉得是楼主自己阴阳怪气,说不过就暗讽。。。
|
63
moguiyu 2020-08-19 01:45:24 +08:00
我去,你没有看过《硅谷》吗?强烈建议去看一下。。
|
64
msg7086 2020-08-19 07:03:26 +08:00
为什么各大编辑器的默认字体是英文等宽而不是中英文等宽?
因为他们的开发者™不写中英文混合的代码。 你要在英文代码里加中文,自己找中英文等宽字体去啊。 Yahei Consolas Hybrid 出来多少年了?至少有个 5 年了吧,我自己 VSCode 上一直在用,以前 Sublime2 上就在用了。 更纱黑体也有好久了吧?虽然我不太喜欢这英文字形,不过 SSH 远程用感觉还不错。 用空格和用 Tab 这事能怪到老外不用中文写代码上我也是头一次见了。 |
65
zhouzm 2020-08-19 08:26:07 +08:00
tab 根本不是缩进,它是对齐。
The tab key Tab ↹ on a keyboard is used to advance the cursor to the next tab stop. |
66
yolee599 2020-08-19 09:11:50 +08:00
tab 是不定长的,你的编辑器看着没问题,到另一个编辑器看就是乱七八糟的
|
67
missdeer 2020-08-19 09:29:55 +08:00
拿着几个英文字体说中文不等宽,呵呵
|
68
acgost 2020-08-19 09:30:20 +08:00 1
真不知道楼主是来寻求答案还是来寻求认同的,越往后看越发现已经不是用 tab 还是空格的问题了,毕竟大部分人都建议用空格了,也给出了原因,答案已经显而易见,认同也明显寻求不到的了。现在主流编辑器都带有一键格式化,甚至自动格式化,甚至可以通过添加插件自定义并约束格式,不至于旧的代码换了字体就无法正常显示了。至于使用什么编辑器和插件,自行 google 吧,这都扶到门口了,如果还不愿意抬抬腿,那还是别进门了。
|
69
0x11901 2020-08-19 10:59:08 +08:00
惊了……用大部人用空格代替制表符缩进的原因是因为制表符在不同的编辑器中显示的长度不同的原因么……而空格你可以自己制定缩进的长度是多少么……
|
70
tomoya92 2020-08-19 11:03:06 +08:00
自从 idea 装上 save actions 插件后,我就再也没有按过 tab 键了,写代码的时候光标在哪就在哪写,写完 ctrl+s,完事,至于它格式化后是用的 tab 还是空格,就看 idea 默认是啥了。。
|