论空格和空行 常佳军论写程序(二)

本文讲述了写程序时添加空格和空行的重要性,指出微软的某些编码风格可能对代码可读性造成负面影响。作者建议遵循一定的规则,如变量前后加空格、适当使用空行等,以提高代码清晰度。同时,文章讨论了微软的匈牙利命名法和括号空格使用的问题,并提倡更加人性化的代码格式规范。
摘要由CSDN通过智能技术生成
 
论空格和空行 常佳军论写程序(二)
     ——写给入门级别的软件工程师 常佳军
(转贴请注明来自5G 常佳军 or http://blog.csdn.net/eastsun  ——转载本作者不收取费用,否则等着收律师事务所的律师信)
   
    我毕业前写代码基本是自学的。
    毕业后写代码,有个高手给我做过指导。心里一直很感谢他。
    这个高手,很抱歉,我不能说他的名字。只能透露他是个南方人。
    但这个高手告诉我的第一件事情,是在代码中加入足够的空格。
 
    这是我所想不到的。
    这与后来我告诉手下的工程师说要加空格,所得到的反应是差不多的。
   
    不过当我切实地给程序加上空格和空行后,发现代码变清晰了,不管是否采用coding as talking,有适当空格 的代码,阅读起来比同样的代码但没有空格强很多。(当然,空格的作用还是比不上coding as talking,所以我要先写coding as talking,后再写空格和空行。
    空行加在哪里?
 
    先停一下。
    你最近看微软写的例子代码是前几天?
    如果你还记得微软如何加空格,或者说,你正好用的是微软加空格的方法,那么恭喜你!
    恭喜你什么呢?你比那些从来不会加空格的工程师要痛苦2倍,学习加空格的时间长1倍。
 
    估计很多人不幸被我恭喜了一遍。
 
    不过没关系。如果过去被微软的空格毒害了,我这里提供解毒的方子。很管用。
    1)任何变量前后都要有空格,除非是行尾,或者是变量后接的是分号。
    2)任何左小括号后、右小括号前,都要加空格(微软加的方法相反,这是错误的)
    3) 任何左中括号后、右中括号前,都要加空格
    4) .前后不要加空格,但->前后要有空格。
    5) 不要把两个空格连续在一起。如果要排版用Tab键,不要把多个空格堆在一起。
 
    以下讲如何加空行。
    每12行至少要空一行。
    要根据代码的思路安排空行。要把几行关系密切的行之间不空行。然后空一行,下一组,然后再空行。
    不要每写一行就空一行。那样与不空行也没有本质区别,反而看起来更糊涂了。
         
    空行的比例控制在15%-25%比较好。
   
    如果一个函数超过了50行,而且这个函数中的一段语句,只改变了一个变量的值,其他的都是为了这个变量而 定义的中间变量和执行语句。而这段语句长度大于等于12行(含其中的空行)。那么,你要做的事情是把这段语句前后加上{和}。如果以后要把这段提炼成一个独立的函数,就把 这个新加的{}中语句直接copy过去就成了一个新函数了。如果不独立,这样放着也很清楚。
     这个是一种比空行更高级的用法。
 
     上面讲完具体怎么做。
     下面讲,为什么微软的做法是错误的。
 
      1)微软的基本命名法是匈牙利命名法,比如strHorse这种名字,它依靠的是字母大小写的变化来 隔开一个个独立的单词。这个规范不能说错误,但问题是这样一来,如果单词比较多,比如strHorseInRiver,则导致每个单词挤在一起,如果再没有空格,结果是代码过于密集。
     2)过于密集的代码,则会使得眼睛很累,神经过度紧张。——这无疑是损害代码编写人员、阅读维护人 员的健康的。
     3)微软的[]内是不坚持空格的,则写出的东西会是这样Horse[nIndex], 这样的代码挤在一起,肯定是 不科学的。而微软把空格加在()括号的外侧,更是可笑。(是什么,(是围墙,有哪个城市把房子直接与城墙连接在一起的呢?那么人在城墙里面怎么走路呢?而[往往是下标的标记 (当然你要把它重载成你想要的其他意思除外),如果我们写成 Horse [nIndex], [与Horse的关系就有脱节的地方。这也是不科学的。
    4)微软基本不用下划线命名的方法,主要支持匈牙利命名法,结果是如果一个变量有3个或者3个以上的单词构 成的时候就显得过于拥挤。为了能够支持好coding as talking,推荐在一定时候采用下划线隔开的命名方式。 比较一下:str_of_horse_in_river : strHorseInRiver, 哪个看起 来更拥挤紧张呢? 无疑是匈牙利命名法更紧张。
 
     所以,在我推行代码足够空格便于阅读的时候,如果下面哪个触霉头的工程师跟我讲:微软是这样写的 ,所以我这样写没错。我有一个标准的回答:*S去吃屎的时候,你也去吗!?
 
       微软在代码格式方面虽然规范化了,但这个规范是不人性的,以牺牲程序员眼睛和神经的 健康为代价的。这种格式早TMD该改正了。要骂它,不骂不行。它这种风格把有志青年教坏了。
 
       所以,任何人如果以MS的名义坚持不好好加空格的谬论的时候,我还是那句话回应: *S去吃屎的时候,你也去吗!?
 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值