1
大家有没有发现,大部分语言代码基本都是空 4 格的,只有前端项目空 2 格。
source link: https://www.v2ex.com/t/802579
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
大家有没有发现,大部分语言代码基本都是空 4 格的,只有前端项目空 2 格。
用过多种语言,只有前端是这样的,至少 github 上的大部分项目都这样。挺凌乱的
48 条回复 • 2021-09-17 20:49:25 +08:00
a379395979 4 小时 12 分钟前
CodeCodeStudy 4 小时 2 分钟前 2
主要是 html 嵌套太多,如果空 4 格的话,横向滚动条会非常长,如果用 soft wrap 的话更惨,早期 js 都写在 html 文件里,所以也跟着是空两格
wu67 3 小时 51 分钟前
其实前几年还是有呼声用 4 格的.
但是 16 17 年开始, 前端 3 大框架混战, 都是用的两空格(或者说是 react 用的那套方案,具体忘记叫什么名了)作为默认规范, 又随着培训班以及各类教程文的推广, 渐渐的广大前端码农就接受了两格.
但其实我还是非常反感的, 我更倾向于 4 格, 奈何各种格式化等玩意限制, 而且还有项目历史因素、代码整体风格、团队风格等等若干限制, 现在估计已经不可能回得去 4 格了, 除非再又一种强大的框架横空出世占据大量的开发场景, 才有可能把风格推回去 4 格.
但是 16 17 年开始, 前端 3 大框架混战, 都是用的两空格(或者说是 react 用的那套方案,具体忘记叫什么名了)作为默认规范, 又随着培训班以及各类教程文的推广, 渐渐的广大前端码农就接受了两格.
但其实我还是非常反感的, 我更倾向于 4 格, 奈何各种格式化等玩意限制, 而且还有项目历史因素、代码整体风格、团队风格等等若干限制, 现在估计已经不可能回得去 4 格了, 除非再又一种强大的框架横空出世占据大量的开发场景, 才有可能把风格推回去 4 格.
IsaacYoung 3 小时 25 分钟前
libook 2 小时 59 分钟前
缩进除了部分语言里有语义功能外,很多语言里是作用于可读性的,也就是人读代码的时候是否能够直观理解层级关系。
其实在编程语言之前,自然语言就已经在用这种策略了,比如中文的首行缩进习惯(虽然现在用得越来越少了)。
那么大多情况下,四个空格的缩进长度是可以满足这个需求的,三个较短,五个太长,(或者单纯是程序员偏好偶数),很长时间下来就形成了共识。
前端 JS 和 CSS 用四空格缩进的话也是没有问题的,但是涉及到 HTML 可能就会有问题了。
HTML 有两个特点:
1. 标签经常会嵌套很多层;
2. 会在标签内包含属性,所以经常会写很长。
当然可以让属性换行,但即便这么做也还是难以解决问题,而且迫于另一个习惯的约束,即每行不超过 80 或 120 个字符,使得折行情况增多,于是可读性方面的主要矛盾就变成了缓解折行问题,将缩进的优先级降低,少缩几个字符,到两字符缩进基本上是没法再缩的程度了,而对于嵌套层数越多的情况,两空格缩进带来的收益也更明显。
所以我个人认为,对于每行大概率会写很长、嵌套层数较多的语言,用两空格缩进是一种权衡之策,否则还是优先选择四格。
其实在编程语言之前,自然语言就已经在用这种策略了,比如中文的首行缩进习惯(虽然现在用得越来越少了)。
那么大多情况下,四个空格的缩进长度是可以满足这个需求的,三个较短,五个太长,(或者单纯是程序员偏好偶数),很长时间下来就形成了共识。
前端 JS 和 CSS 用四空格缩进的话也是没有问题的,但是涉及到 HTML 可能就会有问题了。
HTML 有两个特点:
1. 标签经常会嵌套很多层;
2. 会在标签内包含属性,所以经常会写很长。
当然可以让属性换行,但即便这么做也还是难以解决问题,而且迫于另一个习惯的约束,即每行不超过 80 或 120 个字符,使得折行情况增多,于是可读性方面的主要矛盾就变成了缓解折行问题,将缩进的优先级降低,少缩几个字符,到两字符缩进基本上是没法再缩的程度了,而对于嵌套层数越多的情况,两空格缩进带来的收益也更明显。
所以我个人认为,对于每行大概率会写很长、嵌套层数较多的语言,用两空格缩进是一种权衡之策,否则还是优先选择四格。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK