跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 实在没想明白空格缩进优点在哪里
未分類
2 9 月 2020

实在没想明白空格缩进优点在哪里

实在没想明白空格缩进优点在哪里

資深大佬 : lovecy 23

tab 缩进

字符数少,而且显示的时候格式很好,不同设备展示差不多,而且能兼容一些宽度变化比较小的字体。

空格缩进

字符多,字体一变整个代码格式都变了,还有无法与代码中有用的空格区分

其实我倒无所谓,只是我们部门也没规定这些,有些同事用空格,有些同事用 tab,搞得我强迫症犯了

大佬有話說 (70)

  • 資深大佬 : BrettD

    字体变了代码格式怎么可能会变呢?难道你用的不是等宽字体?

  • 資深大佬 : ayase252

    tab 的显示宽度是不一致的

  • 主 資深大佬 : lovecy

    @BrettD 现在各编辑器默认用的字体有几个是等宽字体的。。。

  • 主 資深大佬 : lovecy

    @ayase252 tab 会在字符数量内尽量给你保持对齐,这个字符数量看你编辑器的设定

  • 資深大佬 : also24

    @lovecy #3
    不妨说一下你正在用的编辑器和字体是啥……

  • 資深大佬 : passerbytiny

    请主先说一下你用的什么神仙编辑器,竟然还能(在同一个编辑器内)让 tab“尽量”对齐。

  • 資深大佬 : whenov

    @lovecy 有几个不是等宽字体的…

  • 資深大佬 : levn

    不混用的话其实用哪个都行
    如果说有点区别的话,用空格更灵活,可以在不同地方使用不同的缩进数

  • 資深大佬 : cmdOptionKana

    @lovecy 编程就用等宽字体,这是行业标准。

  • 資深大佬 : ysoserious

    现在的编辑器不是都可以自动把 tab 转换为空格么, 又不需要你手动去一下下敲空格, 都能对齐有啥好纠结的, 保持团队统一不好么.

  • 資深大佬 : ripperdev

    @passerbytiny Vim 就可以,JetBrains 家的设置下应该也可以

  • 資深大佬 : si

    空格的宽度是固定的,输入 N 个空格就是 1 个空格的 N 倍宽度。
    但 tab 在不同的编辑器显示的时候宽度是不同的,有些按一个字符宽度显示,有的按 8 个字符显示,差别太大了。
    而且还会根据内容缩减宽度。和内容混合的时候,tab 的宽度会在 1 至 N 之间变化。
    我如果要固定宽度的时候,用空格,如果要多行对齐就用 tab 。
    所以我一般开头用空格对齐,中间用要对齐就用 tab,如果只是为了分隔就用空格。

  • 主 資深大佬 : lovecy

    @passerbytiny 我惊了,`t 空格t`和`tt`难道不是同一个宽度?
    @whenov sublime3 默认字体,不是等宽(具体默认是啥我没找到。),vscode 默认字体`Consolas, ‘Courier New’, monospace`,也不是等宽,我目前用的是`Casadia Code`,也不是等宽,等宽字体用过几个,感觉美观性确实差点
    @also24 如上

  • 資深大佬 : icyalala

    写代码有哪个编辑器默认不是等宽字体的,难不成你是用记事本或者 word 来写代码?
    用空格缩进在哪里看都不会变,反而是 tab 显示空间会不一致。

  • 資深大佬 : ispinfx

    `Consolas, ‘Courier New’, monospace`不是等宽???

  • 資深大佬 : icyalala

    @lovecy Sublime 默认字体 Linux 是 Monospace,Windows 是 Consolas,macOS 是 Menlo Regular,这些都是等宽字体。Casadia Code 也是等宽字体。

    除非你中英文混用,中文 fallback 到其他字体去了。

  • 資深大佬 : sosilver

    @lovecy 惊了,这几个字体不全是等宽字体吗

  • 資深大佬 : Kr98

    tab 显示宽度的不一致正是它优于空格的点

    使用空格等于将你的缩进喜好强加于阅读者,比如你喜欢 2 缩进,阅读者就只能看 2 缩进的代码。如果阅读者喜欢 4 缩进,那就很难受了。

    而 tab 完全不存在这个问题

  • 資深大佬 : watzds

    我觉得 tab 每个人可以选择显示宽度比较好用,不过同时限制每行宽度的话,不知道是不是有问题

  • 資深大佬 : xmumiffy

    我们就是用 tab 的,然后每个人可以自己在 IDE 上指定一个 tab 多少空格

  • 資深大佬 : casparchen

    等宽字体(英语:Monospaced Font )是指字符宽度相同的电脑字体。

  • 主 資深大佬 : lovecy

    @cmdOptionKana 啥行业标准,我咋没听说过。。。。,那为啥热门编辑器默认字体都不是等宽字体

    @ysoserious 不是我不想统一,如果大家都用空格,我也用了,我们老代码是 tab,然后有些同事用 JetBrains,有些用 sublime,默认的缩进是空格,我们没人规定这个,所以想看看大家都是咋样的。。。

  • 資深大佬 : MyPassWordis

    “而且显示的时候格式很好,不同设备展示差不多”
    这就没法聊了

  • 主 資深大佬 : lovecy

    @ispinfx
    @icyalala
    @casparchen
    原来你们说的是英文等宽,我以为这个是默认了,我说的是中英文等宽

  • 資深大佬 : passerbytiny

    看主对我的回复,大家散了吧。

  • 資深大佬 : morethansean

    主你列的几个全是等宽字体,现代编辑器的默认字体估计你找不出不是等宽的。我感觉你可能有中文,然后用的系统没有正确的等宽中文 fallback. 你可以在最后再加一个等宽中文,比如宋体。

  • 主 資深大佬 : lovecy

    @passerbytiny 我已经说了我的例子,你可以自己去编辑器试试这两个是不是显示宽度一直,你觉得不对就给出反例或者指出问题,请不要阴阳怪气

  • 資深大佬 : whileFalse

    Tab 的唯一问题是,难以阻止协作者甚至是你自己混用 Tab 和空格,然后在不同的环境中看起来不一样。
    这点 yaml 做的就挺好,直接不允许使用 Tab 。

  • 資深大佬 : rockyou12

    不要和杠精辩论,只会浪费时间,大家散了吧

  • 資深大佬 : Chingim

    肯定空格呀

    tab 的宽度在不同的环境下是会变的,恶心得一批

  • 資深大佬 : fishCatcher

    所以 gofmt 直接一律 tab

  • 資深大佬 : newtype0092

    看了 24#的回复 “原来你们说的是英文等宽,我以为这个是默认了,我说的是中英文等宽”
    嗯。。。
    真相只有一个:LZ 写的是易语言代码!!!

  • 資深大佬 : ipadpro4k

    散了散了,奇葩

  • 資深大佬 : BrettD

    大家散了吧,我都看不懂主在说啥

  • 資深大佬 : Shook

    我喜欢在初始化变量时,把等号对齐。
    有时会需要用空格手动对齐一下,如果用 tab 而不是空格的话就会造成混用了,所以我都是用空格的。

  • 資深大佬 : la9998372

    举个例子 C 语言注释
    一行代码,后面跟着 //注释,如果代码和注释之间用 tab,换编译器的时候,由于 tab 在每个编译器下的空格数不一致,很容易就会出现,你在某个编辑器上发现注释是对齐的,但是另外一个编辑器就不对齐了。虽然现在大部分编辑器都是 tab=4 空格,但是有时候也会出现不对齐的情况。
    如果这时候用空格,一定是没问题的。

  • 資深大佬 : Mutoo

    tab 调成 2 缩进或 4 缩进时非常容易与空格混淆,对编辑器兼容性也极差。相比之下空格的兼容性更好。

    另外 editorconfig / prettier 也如此好用,根本不需要手工缩进,硬盘空间如此便宜,也无须纠结文件大小。

  • 資深大佬 : si

    @newtype0092 易语言只支持空格,不支持 tab,不会有这个问题,更谈不上喜欢用 tab 了

  • 資深大佬 : jackmod

    tab 和空格我都用。很多格式化工具支持自动转换。保证不混用即可。

  • 資深大佬 : shijingshijing

    特别讨厌 Python 这种行尾不加休止符+用缩进来分隔代码的风格,C,C++,Java 的花括号+分号结尾很好的解决了格式问题,而且即使在极端情况下,所有代码被压缩到一行,还能够快速格式化成原来的样子。

    Python 这种就是解决一个不存在的问题,敲四个空格+后期可能出现问题 vs 每行分号结尾,真不明白到底是谁战胜了谁。

  • 資深大佬 : mazyi

    hhhhhhhh,我要笑死啦,今日精选笑话集

  • 主 資深大佬 : lovecy

    @la9998372 对齐确实用空格对齐比较好,我这老项目好多用 tab 对齐的,换个字体格式乱了都
    @Shook 对齐确实用空格,我也是用一个插件自动空格对齐的,就是有一次前面有中文

    @newtype0092 你是在开发只给英语语种人用的软件?代码里一点中文没有么

    @shijingshijing 强制格式好像也有优点,感觉是习惯问题了

  • 資深大佬 : einsdisp

    tab 用于“缩进”,空格用于“对齐”。

    对于“缩进”,显示宽度是由阅读者自己定义或设置的,代码作者无法强制。
    对于“对齐”,代码作者强制将相邻的行对齐,阅读者无法自己控制。

    大部分情况下,“缩进”与“对齐”是两件事。
    所谓“缩进”,用于区分代码块层级,例如代码行首的缩进。
    所谓“对齐”,用于代码行中的某种语义的对齐,例如对齐前后相邻若干行的等于号、冒号、或行尾的注释,诸如此类的。

    golang 默认的格式化工具就很清晰的区分的这两点:行首缩进用 tab,结构体注解对齐用空格。

  • 資深大佬 : darmau

    我只知道你再纠结于这点就要找不到女朋友了,见《硅谷》

  • 資深大佬 : webshe11

    (笑而不语)

  • 主 資深大佬 : lovecy

    @darmau 搜了一下这剧感觉可以啊,追一下看看,至于你说的梗没 get 到

    @webshe11 我急了我急了

  • 資深大佬 : ian19znj

    @lovecy #46 硅谷里有一个情节是, 男主这样的奇葩走了狗屎运遇到一个志同道合的女票, 但是两人由于缩进应该用空格和 tab 的分歧而分手, 其中男主坚持要用 tab.

  • 資深大佬 : chenmobuys

    空格固定宽度,Tab 不同编辑器显示的宽度可能不一致。

  • 資深大佬 : lxk11153

    append 一个例子出来吧,我懵逼了!!!

  • 資深大佬 : qiyue0726

    @ian19znj 理查德是空格党

  • 資深大佬 : qiyue0726

    我就很不爽 Python 那垃圾缩进设计,Java 、JS 这些我都是 tab 、空格混着来,对齐了就好

  • 資深大佬 : qqqqqcy

    所有靠自觉和口头的风格化都是没有任何价值的。在项目里用 lint 工具限定好就行了,用哪个都无所谓,关键是要统一

  • 資深大佬 : sdlzqjf

    ide 里都可以设置缩进格式,可以设置成四个空格,也可以设置成 tab,只要团队用统一代码格式模版,统一格式化就行啊,讨论哪个好哪个坏没什么意义,关键是要有统一的规范,其他的用工具来实现就可以啊

  • 資深大佬 : icyalala

    @qiyue0726
    实在没想明白空格缩进优点在哪里

  • 資深大佬 : passerbytiny

    @lovecy 直到现在,你都没说你用得是什么编辑器,你也没说明白你那个“尽量”对齐是个什么效果。

    “我不明确说出我的论据,你要先猜出我的论据再拿论据反驳”,你这种人在本社区是会被喷 /屏蔽到自闭的。

    此项不用回复,原因见上。

  • 資深大佬 : ZRS

    一致性

  • 資深大佬 : JCZ2MkKb5S8ZX9pq

    本来我 python 也一直用 tab,感觉简洁还省字符。不过后来有几个开源项目统一要 pep8,那之后就基本都按 pep8 标准来了,缩进也用空格了( autopep8 自动搞定)。

  • 資深大佬 : Torpedo

    随便,设置好格式化工具,爱咋咋地

  • 資深大佬 : secondwtq

    文本形式的“代码”仅仅是“程序”的一种编码形式而已。我倒是觉得不应该太局限在单一的编码形式上。

  • 資深大佬 : tairan2006

    tab 转 4 空格就完事

  • 資深大佬 : shylockhg

    tab 是不定长的,space 是定长的

  • 資深大佬 : masker

    看了那么多回复,我倒觉得是主自己阴阳怪气,说不过就暗讽。。。

  • 資深大佬 : moguiyu

    我去,你没有看过《硅谷》吗?强烈建议去看一下。。

  • 資深大佬 : msg7086

    为什么各大编辑器的默认字体是英文等宽而不是中英文等宽?

    因为他们的开发者™不写中英文混合的代码。

    你要在英文代码里加中文,自己找中英文等宽字体去啊。
    Yahei Consolas Hybrid 出来多少年了?至少有个 5 年了吧,我自己 VSCode 上一直在用,以前 Sublime2 上就在用了。
    更纱黑体也有好久了吧?虽然我不太喜欢这英文字形,不过 SSH 远程用感觉还不错。

    用空格和用 Tab 这事能怪到老外不用中文写代码上我也是头一次见了。

  • 資深大佬 : zhouzm

    tab 根本不是缩进,它是对齐。

    The tab key Tab ↹ on a keyboard is used to advance the cursor to the next tab stop.

  • 資深大佬 : yolee599

    tab 是不定长的,你的编辑器看着没问题,到另一个编辑器看就是乱七八糟的

  • 資深大佬 : missdeer

    拿着几个英文字体说中文不等宽,呵呵

  • 資深大佬 : acgost

    真不知道主是来寻求答案还是来寻求认同的,越往后看越发现已经不是用 tab 还是空格的问题了,毕竟大部分人都建议用空格了,也给出了原因,答案已经显而易见,认同也明显寻求不到的了。现在主流编辑器都带有一键格式化,甚至自动格式化,甚至可以通过添加插件自定义并约束格式,不至于旧的代码换了字体就无法正常显示了。至于使用什么编辑器和插件,自行 google 吧,这都扶到门口了,如果还不愿意抬抬腿,那还是别进门了。

  • 資深大佬 : 0x11901

    惊了……用大部人用空格代替制表符缩进的原因是因为制表符在不同的编辑器中显示的长度不同的原因么……而空格你可以自己制定缩进的长度是多少么……

  • 資深大佬 : tomoya92

    自从 idea 装上 save actions 插件后,我就再也没有按过 tab 键了,写代码的时候光标在哪就在哪写,写完 ctrl+s,完事,至于它格式化后是用的 tab 还是空格,就看 idea 默认是啥了。。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具