【C++】关于左花括号位置的研究

前言

最近因为工作,看了很多视频和源码,包括谷歌的Android Open Source Project和一些C++的视频,忽然发现一个疑惑,就是关于写类或者写函数等等的时候,需要一对花括号,左花括号的位置总是看见有两种写法:

// 风格1
if (...){
    // do something
}
// 风格2
if (...)
{
    // do something
}

说实在的,大家应该都觉得风格1有些怪异吧?因为有时候很难去找到配对的括号,比如如下代码:

if (a < 10){
    if (k > 1){
    	if (s | k){
    	}
    }
}

是不是一眼比较难看出花括号的配对,从而分辨不同的代码块?如果改成下面这样,就很容易分辨多了:

if (a < 10)
{
    if (k > 1)
    {
    	if (s | k)
    	{
    		
    	}
    }
}

记得看过哪本书写的来着,代码是给人看的,看得懂的代码才是一份好代码,但是,为什么像Android Open Source Project这种值得阅读的大型工程代码,还要用风格1这种怪异的风格呢?于是开始查资料,找原因,发现原来是确有其因。

原因

网友@昔影若梦 对它进行了研究。
1978年贝尔实验室正式发表了C语言。同时由B.W.Kernighan和D.M.Ritchie (K&R)合著了著名的《The C Programming Language》一书。书中推荐了一套代码编写标准,有人称之为《K&R》标准。因此,风格1我们也可以称为K&R风格,风格2我们可以称为微软风格。
而左花括号和函数名在同一行(风格1)的原因,可能和早期显示器的分辨率有关:以1981年IBM推出的第一台计算机彩色显示器标准CGA为例,它的最高分辨率为640*200。竖向分辨率居然只有200,也就是屏幕一行中可以显示的字比较多,但显示不了很多行,现在一台普通的22寸显示器的竖向分辨率是1080,大约是它的5倍!在这种情况下,屏幕空间就金贵了,K&R的风格可以省一行的空间,否则一屏根本显示不了几行代码。有时候令人非常困惑的问题,答案往往意想不到的简单!
明白了这一点,争论和疑惑就可以结束了:现在的我们,当然是更推荐用微软风格,因为K&R风格的理由已经不存在了,今天你能找到的再旧显示器分辨率恐怕也不会低于1024*768吧?所以还是要知其所以然,不能死记硬背大牛的教条,不能看到大牛这么写,就觉得它一定是好的。

结论

推荐大家用微软风格,将花括号单独放置一行:

if (...)
{
    // do something
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值