细数空格缩进在开发中的坑

没错,这是一篇火药文。网上流传的各种编程规范几乎青一色都是说用空格代替Tab,其理由几乎都是“这是唯一能保证在所有环境下获得一致展现的方法”。

那我想问一句,你们到底能要多少种环境要看代码???

1、用Windows自带的记事本?那我只能说,你继续装,看你什么时候才能完成得了任务。
2、连接到Linux服务器上使用VI或者VIM?我也只能说只有改服务器的配置文件的时候才会这样做吧,而且如果是配置文件比较复杂也是下载下来用Notepad++改清晰很多好伐,比如Aapche的配置文件在Notepad++选择shell语言的配色规则,那一大段一大段绿的注释立刻就可以一眼跳过了,能比在SSH上看的一堆黑白文字好一万倍吧。
3、开发机是Linux或者MAC?我只能说,你黑客你随意、你公司壕你随意,但是这个都用了装个集成IDE有那么难吗,想调成多少就多少啦,还要看系统文本编辑器里丑丑的一个Tab八个空格吗?
4、IDE很多难以统一?网页开发的Notepad++、Sublime、Dreamweaver、PHPStorm、HBuilder,微软的VC++6.0、VS20xx,嵌入式开发的Keil C51、Keil MDK,还有一批Eclipse外观的各种IDE(Eclipse、ZendStudio等),我都用过,但还没见过一个默认不是一个Tab四个空格的。
5、代码贴到网上对齐有问题?这个我还没遇到过,如果有,那么只能说那个网站跟不上时代,别人网站都行你却不行你说是不是网站的问题。
所以,综上所述,需要用空格来确保所有环境统一展示 是一个伪需求!

细数空格带来的不便

1、代码对不齐。在HTML代码中,非常多重的嵌套缩进是常有的事,但你试想看看,同一个文件里大部分缩4空格、但有的缩3空格,有的个别甚至缩2空格,这是怎么样一种乱象。或者同一个项目里,有的HTML是用4个空格,有的HTML是用2个空格。不用怀疑,很多老代码都有这样的现象。即使是一个人开发的都会,一段时间觉得4个空格比较标准,一段时间又觉得HTML一行那么长,用2个空格节省位置。空格缩进的不严谨就这样无形地把代码带入了混乱。

2、鼠标不好点和方向键不好用。比如你要修改某个地方,鼠标只是点左了一个点点,然后就光标就去了前面的空格的位置,而不是真正代码开始的地方,然后你又得多点一下或者按个右方向键。手不太熟练的偏差大一点的还要点很多下或者按几下方向键才行。还有在按上下方向键时,有时候又会去到了一些不理想的空格位。

3、在使用TortoiseSVN的文件对比工具时,太多的点点点,而不是一连四格的横线箭头。在文件左边一片片的点点,尤其在CSS文件中前面缩进空格的点十分容易与CSS的class选择器混淆,影响视觉。

4、代码文件变大了,这个问题主要体现在网页文件上,以UTF8编码来算,一个Tab是3个字节而对应的四个空格是12个字节,所以每一个本来用Tab的地方都会多出9个字节来,可能一个文件上看不出来有多大差别,但是有千千万万个用户浏览呢?会白白增加了多少网络带宽?即使是有GNU压缩,但是在大访问量的网站也会有较明显的改变。

时间: 2024-10-24 23:24:17

细数空格缩进在开发中的坑的相关文章

细数捕鱼游戏软件开发的游戏技巧,趣味性十足遵循经典套路设计

捕鱼游戏作为深海捕鱼游戏从出现就吸引了很多人的目光,并且在随着技术的发展和进步下,手机捕鱼游戏开发也逐渐的愈演愈烈,甚至是成为了当下流行的投资运营选择.其实在手机捕鱼游戏开发下的捕鱼游戏蕴含了许多还没有被玩家了解透彻的游戏技巧,仍然需要玩家在捕鱼游戏中自己慢慢的发现与总结.欢迎咨询电话:15315986100:QQ:3410861822 手机捕鱼游戏开发,华软打造值得玩 谈及捕鱼游戏的游戏技巧很多人都认为捕鱼游戏就是简单的点击屏幕进行发射就好,账户金币没有了就等着系统的补助发放,丝毫不去想如何捕

AngularJS移动开发中的坑汇总

使用AngualrJs开发移动App已经快半年了,逐渐积累了很多AngularJS的问题,特别是对于用惯了Jquery的开发者,转到AngularJS还是需要克服很多问题的.不像Jquery那样侧重DOM操作,AngularJS是以视图模型和双向绑定为核心的. 下面的内容假设你已经了解前端 MVC 概念,并对 AngularJS 有了一定经验,初学者读起来可能比较艰深晦涩.本文的总结会涉及部分在移动设备上特有的问题. DOM操作的问题 避免使用 jQuery 来操作 DOM,包括增加元素节点,移

Unity3d Android Http 开发中的坑(吐槽

在一般的U3D网络开发中,直接使用WWW类便足够正常使用,但我在发现使用WWW下载大文件时,会导致整个程序卡顿的情况(不清楚是否我个人电脑问题),所以干脆使用HttpWebRequest/HttpWebResponse + await/async 来代替WWW. U3D中还是在使用比较低的Mono版本,所以是不支持(await/async)的.准确来说是不支持Task<T>,而且还有些BUG(我自个能确定的就有两个),现在最希望就是U3D更新Mono版本,写代码就可以更爽了! 无奈之下,只有参

[转]AngularJS移动开发中的坑汇总

使用AngualrJs开发移动App已经快半年了,逐渐积累了很多AngularJS的问题,特别是对于用惯了Jquery的开发者,转到AngularJS还是需要克服很多问题的.不像Jquery那样侧重DOM操作,AngularJS是以视图模型和双向绑定为核心的. 下面的内容假设你已经了解前端 MVC 概念,并对 AngularJS 有了一定经验,初学者读起来可能比较艰深晦涩.本文的总结会涉及部分在移动设备上特有的问题. DOM操作的问题 避免使用 jQuery 来操作 DOM,包括增加元素节点,移

Android 相机开发中的坑

android 开发中经常遇到拍照的需求,android 系统帮我们把相机封装成了Camera类,除了Camera还有个SurfaceView 需要用到,核心的就这2个. # 先说下简单实现,在说里面的坑 一般实现是写个自定义view  例如(CameraView)继承SurfaceView在View 的构造方法中完成相机的初始化 重要的函数 就是 Camera.open() 和 Camera.open(i); 前一个打开时直接打开后置摄像头,后面的打开摄像头方法可以选择 打开具体的摄像头  (

Java技术开发中的坑

1.(2014/05/28)struts2中使用eclipse自动获取getter和setter方法的坑 今天着实被eclipse坑了一把,平时遇到get和set方法时,我都是通过eclipse自动生成,今天在做数据查询的时候,有一个变量首字母小写,第二个字母大写(即tName),我也跟平常一样在struts2的action中用eclipse自动生成getter和setter方法,然后调试,发现无论传给tName什么参数,它接收的都是null,当时,我很纳闷,试了很就发现还是不成功,就把参数换成

iOS 开发中的坑与相关技巧

1. 界面切换部分: 当一个界面中不包含NavigationBar的时候但是要其跳转到另一个包含NavigationBar的界面的情况下,要进行NavigationBar的展示和隐藏的情况下设置不同的界面的逻辑,此时设置的不当的话会造成侧滑切换界面的间隙会造成NavigationBar的标题栏的短暂隐藏,所以在控制其隐藏的时候需要注意一下,可以在需要隐藏的界面做以下设置: - (void)viewWillAppear:(BOOL)animated { [self.navigationContro

React开发中的坑

1.React Router4的传值方式: (1)内部数据传递:刷新后不保存. //需要跳转的组件 import {withRouter} from "react-router-dom"; export default withRouter(组件名); this.props.history.push({ pathname: "路径", state: 数据 //整个传过去,接受到的也是完整的数据 }) //路径的组件 this.props.location.state

混合开发中那些坑(一)

1.沉浸式标题 对于安卓和ios来说,解决沉浸式标题的方法不一样,通过打包设定,ios可以完美解决沉浸式问题,而安卓就会在head部分多出来一个标题栏的高度,非常恶心. 解决办法:通过js判断设备类型 // 动态加载css文件 function loadUfsStyles(url) { var link = document.createElement("link"); link.type = "text/css"; link.rel = "stylesh