【本文转载自CocoaChina】

每个程序员都有自己喜欢的编码风格以及编码习惯,那么,问题来了。

一个很常用也很简单的问题,让程序员分为两派。编程时,到时是使用Tab按键来进行首行缩进好呢还是敲空格按键好呢???少侠,别急,带老夫给你慢慢分析。

Tab 占用更少的空间

使用 Tab 的文件或许和不使用 Tab 的在 gzip 压缩后并没有明显的区别。但是不使用 Tab 的话,就得多一道程序处理你的代码,以保证文件大小合理。你不得不依赖压缩工具。拿注释举例来说,注释很有用,即使无法压缩代码也要有注释。Tab 可以达到和空格同样的效果,所以不用 Tab 的话,平白无故就会膨胀代码。

Tab 可个性化

每个编辑器都可以调整 Tab 字符的宽度。这通常被认为是 Tab 的缺陷,但是实际上,这正是 Tab 的优势所在。有了 Tab,别人就能以自己觉得方便的格式查看你的代码,而不是用你喜欢的格式。Tab 将代码表现从逻辑中分离出来,就像是 CSS 将页面表现从 HTML 中分离出来一样。Tab 使读者更方便,而不是让编写者掌控一切。用空格就像是在说:“我不管你读代码时方不方便,这是我的代码,你就得按照我的方式来”。

Tab 更利于合作

每个程序员都有自己不同的想法,在团队合作中这种个性更要重视。有的程序员喜欢缩进 2 个空格宽,有的喜欢缩进 4 个空格宽。使用 Tab,每个程序员可以用自己喜欢的缩进方式编写代码,编辑器会根据所设置的 Tab 宽度自动调整缩进,而不必手动调整或者机械地在pull之后改成自己的缩进风格,而在提交前又改回统一的风格。

不需依赖特定工具

使用空格时,缩进实际上是 N 个字符而不是一个,只不过编辑器展现出来的看起来像是一个字符而已。而使用 Tab,你每次按下 Tab 键,编辑器会插入 N 个空格;每次按回退键或是在缩进处删除字符时,编辑器会自动删除 N 个字符。当你不能用编辑器,而被迫使用其它工具时(例如当在嵌入了像是 codemirror 等工具的 webapp 中写一小段代码时),你会被空格丑哭的。尤其是 codemirror 会将 Tab 转换为空格,别人看你的代码时也会被丑哭。

Tab 易于选择

假设你要选中所有缩进,想把缩进加倍或是将它们换成空格的话,用 Tab 就很容易操作。因为这是正它的意义所在,Tab 就是为了这类情况发明的。而空格的意义就多了,所以你无法简单的查找、替换空格。这种并不是为了发挥某种工具的原本功能而使用它的行为,我们通常称之为 hack。使用空格来进行缩进就是一种 hack。

使用 Tab 缩进的代码更易于复制粘贴

Norbert Süle 在评论中 指出,复制粘贴用空格缩进的代码时,除非别人惯用的缩进宽度恰好和你的一样,否则你就得手动调整缩进。使用 Tab 就不会出现这种问题,因为 Tab 就是 Tab,它会和代码完美的融合在一起。每个人都使用 Tab 的话,世界都会更加美好。

Web 中的 Tab 更宽怎么办!

这是个严重的问题,即使是钟情 Tab 的优秀程序员在上传代码前也会将 Tab 转换成空格。但是,CSS3 的 tab-size 属性 解决了这个问题。目前 Opera、Firefox 支持此属性,Webkit 很快也会支持。这个属性可优雅降级:即使浏览器不支持,呈现出来的代码虽然没有那么美观,但是仍具有良好的可读性。

空格一定不好吗?

空格是对齐的最佳选择,而不是缩进。比如下面这段代码:

var x = 10,

y = 0;

你需要 4 个空格使变量对齐。如果使用 Tab 的话,只有在 Tab 宽度为 4 的时候,变量才会对齐,否则格式就会乱掉。但是如果这段代码是缩进的,仍然应该用 Tab 而非空格。

另一个例子是对齐具有不同厂商前缀的 CSS3 属性。缩进应该使用 Tab,但是对齐应该使用空格。示例如下:

div {

-webkit-transition: 1s;

-moz-transition: 1s;

-ms-transition: 1s;

-o-transition: 1s;

transition: 1s;

}

好吧,我承认,我一直是使用Tab按键来缩进的,因为比起敲空格,它会省略几次对键盘的敲打并且Tab缩进会很规范。今天的分享就到这里,以上干货拿好不谢,因为我叫雷锋!

c语言缩进用tab还是空格,程序员编码首行缩进使用Tab键好还是空格好?相关推荐

  1. 编码首行缩进使用Tab键好还是空格好?

    每个程序员都有自己喜欢的编码风格以及编码习惯,那么,问题来了. 一个很常用也很简单的问题,让程序员分为两派.编程时,到时是使用Tab按键来进行首行缩进好呢还是敲空格按键好呢???少侠,别急,带老夫给你 ...

  2. 微信小程序文章怎么首行缩进或取消首行缩进

    很多同学问酱茄小编,微信小程序怎么让文章首行缩进或取消文章首行缩进,代码参考了大神"武当山道士",表示感谢,以下代码大家仅供学习参考. 首行缩进 .wxss 代码如下: .str1 ...

  3. 微信小程序如何段落首行缩进

    微信小程序中"text"标签首行缩进会失效,换成"view"标签用text-indent:2em;可生效.

  4. 缩进一个字符_Indesign里标点挤压及首行缩进2字符设置

    在ID排版,一个汉字的标点符号是占一个全角即占一个汉字的格子.但因为标点符号的间距比较大,若这样进行排版,会特别影响版面的外观度,致使不好看,需要把标点符号与文字的间距缩小才行,这时需要用到标点挤压工 ...

  5. 首html行缩进2字符怎么设置,css如何设置首行缩进2个字符

    css设置首行缩进2个字符的方法:可以利用text-indent属性来设置首行缩进2个字符,如[text-indent:2em;].text-index属性用于规定文本块中首行文本的缩进,em是相对单 ...

  6. 微信小程序rich-text 文本首行缩进和图片居中

    微信小程序开发使用rich-text组件渲染html格式的代码,常常因为不能自定义css导致文本不能缩进,以及图片不能居中等问题,这里可以考虑使用js的replace方法,替换字符串,然后在渲染的同时 ...

  7. 微信小程序实现首行缩进、取消首行缩进

    首行缩颈wxss代码如下: .tip p:last-child{text-indent: 60rpx; //首行缩进60rpxtext-align: left;} 取消首行缩进wxss代码如下: .t ...

  8. 换行样式不要首行缩进_CSS实现文章段落首行缩进两个字符不再每次空格

    段落前面空两个字的距离,不要再使用空格了.应该使用首行缩进text-indent.text-indent可以使得容器内首行缩进一定单位.比如中文段落一般每段前空两个汉字. 代码如下: p{ text- ...

  9. html首行缩进语言,css如何设置首行缩进2字符?

    用CSS实现段落首缩进两个字符.应该使用首行缩进text-indent.text-indent可以使得容器内首行缩进一定单位. 在这里我们需要了解一种长度单位em.em是相对长度单位.相对于当前对象内 ...

最新文章

  1. Python机器学习——DBSCAN聚类
  2. Js时间格式[转载]
  3. vue 后台返回的文件流进行预览_基于 Vue3+Ts 后台前端管理系统Vue3-Admin
  4. docker mysql 查找ip_Docker 查看运行服务ip
  5. python写一个通讯录V2.0
  6. 文件内容统计——Linux wc命令
  7. aws s3及cloudfront访问问题
  8. oracle磁带库清洁带标签,磁带库、磁带机和介质支持
  9. 时至 2018 年,还有必要学 Vim 吗?
  10. 华为某员工哀叹:过年回来后心态已崩,自己是亲戚中混的最差的
  11. 三星电子能从硬件公司转型成软件公司吗?
  12. python 会议室预约系统 开源_最新PHP会议室预定管理系统mrbs-1.8.0开源会议室预订系统安装教程...
  13. java调用万网域名接口
  14. php 发 语音验证码,分享一下子语音验证码的php开发流程
  15. 甲骨文总裁埃里森:我的目标是击败微软
  16. webQQ迷你版协议(基于http://w.qq.com)
  17. python统计中英文字符_如何统计文本中的中英文字符数?Python帮你解决
  18. IDEA搭建单模块springboot-web项目、多模块springboot-web项目
  19. Win7(Win10)+Ubuntu18.04(16.04)双系统安装心得
  20. Android开源项目汇总【转】

热门文章

  1. 什么是DOM,DOM的作用,以及DOM与JavaScript的关系
  2. ES千亿级搜索实战-架构优化
  3. Druid(Druid.io)简单使用
  4. 《java架构师成长直通车》课程阶段一学习笔记
  5. 【信息论基础】离散信息的度量—自信息和互信息
  6. 关于blob数据类型引起的mysqldump乱码问题
  7. 山东教师教育网研修平台-首页
  8. 基于堆优化算法的函数寻优算法
  9. Knativa 基于流量的灰度发布和自动弹性实践
  10. Clion 使用 armadillo 配置方法