答某位朋友邮件中关于编程风格的问题

作者: NickYang 分类: 心情随笔 发布时间: 2013-07-15 21:06

今天有位朋友邮件问我了一些关于编程风格的问题,先引用下邮件原文:

eliteYang,您好,一直喜欢看你的博客,一直觉得你是一个对程序对生活都要求质量高的人,因为我太热爱程序,但是同时也对美的定义有了更加严格的要求。所以最近有些迷茫,想听听你的怎么处理这些问题的。
比如1.你平时代码写注释的时候,如果用英文写的话,是习惯全小写原则还是习惯首字母大写的原则?因为我看了观察了几本C++国外的英文原版,发现他们写注释往往都喜欢通篇小些,一旦写自己的文件头或者自己的作者名的时候就喜欢用首字母大写,我想听听你的想法
2.还有平时在Linux和Windows两者系统之间切换的时候,你命名或者文件夹有没有什么区别,可以举点例子吗?比如同样的project和Project或者同样的MyTest和mytest(my_test),你的习惯是什么样的?我对这种命名该不该大写会一直很在意,我也不知道是不是程序员做的久对任何事物都会有一种近乎完美的控制,一会切到windows一会切到linux,能简单的谈下你对大小写的理解和控制吗?是主推大小写还是主推小写的多,包括平常在手机上打字,类似要大写的时候也会这样吗?是坚持标准的首字母大写还是小写。
3.我就想问下像我这种毛病的人还有救吗?经常会为这些事情所纠结,而且往往会影响平时的工作效率,比如创建文件夹的时候我就会想是首字母大写好看呢还是全小写来保持统一呢(Movie,movie,mytest,MyTest),当写程序注释的时候我会想是写// this function proves that…好呢还是// This function proves that..
4.eliteYang,我不知道我这种对大小写在意的习惯是一种好习惯还是一种坏习惯,我做不到一般人所谓的那种随意,想到什么写什么,我就是比较想统一,比较想一致,但是冲突存在windows和Linux之间,希望eliteYang能够牺牲点时间说下你的想法,洗耳恭听。谢谢!

感谢如此认真的回答我的问题,非常感谢,呵呵,我的意思还有就是抛去编程以外的范畴,像MyMovie,MyPhoto如此之类的,你更倾向于这种形式,还是mymovie的Linux形式。生活当中,当你触及一些英语的时候,你还会认真去考虑过首字母大写的问题吗?会不会这种东西往往会影响自己的思路或者打断自己的思路。因为我不敢确定养成这种首字母都大写的习惯会不会影响自己以后的工作效率或者生活效率(PS:常常要多按一个键),请豆子哥开导开导,因为Linux和Windows之间的来回穿梭,工作和生活上的文件工程名,目录名都会让我困扰,包括手机用户名和电脑用户名,我也会去纠结大小写的问题,似乎想要一招鲜吃遍天,感觉自己想要极端化,就是要么全小写要么全大写,一定要找出那个最适合的方法,但效果往往不尽如人意。有时候我会觉得全小写比较好(因为速度快,可以加快工作效率和生活效率(写小便签的时候)),但有时候也会觉得全小写很丑,有个首字母大写来过渡似乎更舒服,所以一直处在这两者之间犹豫。问过身边的同事和朋友,都觉得我神经病,会去考虑这些,但我真的为这件事情给困扰了,再次谢谢你

其实这个问题我看到的时候,第一反应是这位署名为 LionFlex的朋友中度强迫症,而且很纠结。这个问题从头到尾的意思就是问编程中一些关于大小写的问题。

先说下我的习惯吧:
我以前的习惯是windows风格,因为我原来大部分时间在windows上写代码,而且再加上当年mfc的残留症,喜欢用驼峰命名法,也就是m_OneTwo这样的风格,不过如今接触linux时间越多之后,逐渐变成了小写字母+下划线的方式,例如:one_two,通过我的博文大家应该也会感受到我编程风格的变化,总结为下面几点吧!
1.代码风格为小写字母 + 下换线的方式,例如:one_two
2.括号风格为最外层括号不加空格,里面的符号加空格,例如:((a + b) / (c + d))
3.英文注释一般是首字母大写,与英语语法一致
4.文件夹命名也是小写字母 + 下划线方式

下来再回答你的问题:
1.如果用英文写注释,一般的风格是跟英文语法一致,首字母大写,关于你说的那些英文书籍中,很多首字母小写的,这可能是这些人自己的习惯,从boost库来看,一般都是首字母大写,还有一些关键的单词全词大写。作者名字大写是因为英文名字一般都是首字母大写的,当然了,如果你的代码和文档大部分都是国人看,可以注释成中文的,这样就没有任何纠结了
2.linux和windows系统切换时,文件和文件夹命名,我的意见是一切以高效查找为目的,boost是全部是小写字母命名文件名和文件夹名称的
3.你这种其实就是个习惯而已,不存在什么救不救的问题,可能是你的编程中见到不同的风格太多了,并且你各个时间段内也觉得不同的方式比较好看,所以就形成了这种纠结的习惯,不过这种习惯挺影响效率的,前提是你的风格不停变化
4.注意大小写不算好习惯也不算坏习惯,只能说你比较注重细节和整体的美观,如果你在win和linux之间切换,建议你用小写字母总结下你的
这些问题的结论:
1.编程风格的统一主要是为了方便多人书写阅读代码,也就是说多人合作时才会牵扯到这个问题,如果你的代码是你一个人写一个人看,就不存在什么风格了,写成什么样子都可以的。所以如果你的团队习惯某一种风格,试着去适应这个风格
2.对于细节不要过度重视,不然你会写的很累,当你在和团队合作时,大家编程水平和风格良莠不齐的时候你就会很难受,这个时候你就需要接受别人的风格
3.更多的时候考虑效率,而不是特定的风格,当你效率很高,准确率很高,那么别人对你的风格就不是那么在意了
4.不要在意别人对你的看法,要分清楚别人是在给你带来正面的东西还是在打击你,对于刻意打击你的人,送给他们Fuc* them,大家更看重的是你的能力,而不是编程风格,所以基本可以无视

最后,如果你还在纠结关于编程风格的问题,建议你参考boost的代码规范,可以去boost网站上搜下,具体地址我忘记了。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

28条评论
  • 李阳博客

    2015 年 1 月 5 日 10:43

    个人比较喜欢驼峰,其余和你差不多,文件夹首字母大写,特殊文件夹全部大写。括号和你一样。

    活跃 其它浏览器 其它操作系统
  • Vespa

    2013 年 12 月 31 日 20:35

    经常看别人代码就有一种审美洁癖,总感觉就算功能实现了,也觉得不尽完美。。
    不过我经常是写一个小段代码来干件临时的事的话,那么写得就相对比较随意,但是稍微写个大一点的程序的话,都会对代码比较苛刻。。

    潜水 搜狗浏览器 Windows XP
    1. eliteYang

      2014 年 1 月 1 日 00:07

      嗯,这种比较好的。我们都是这样,严于律人,宽松律己,哈哈

      神话 Chrome浏览器 Windows 7
  • 万载啦

    2013 年 10 月 20 日 12:49

    内容很长啊。

    潜水 其它浏览器 其它操作系统
  • 爱软咿

    2013 年 9 月 17 日 17:46

    不懂什么风格

    话唠 其它浏览器 其它操作系统
    1. eliteYang

      2013 年 9 月 17 日 18:44

      风格这东西,只要统一了就行了,没必要太讲究

      神话 其它浏览器 其它操作系统
  • HeHe.wang|52coder.net

    2013 年 9 月 11 日 12:46

    http://www.52coder.net/archives/1867.html 大学要做的N件事征集.

    冒泡 其它浏览器 其它操作系统
  • 孙超博客

    2013 年 8 月 2 日 17:43

    貌似标准写法都是小写的吧?我对于编程不精通,最近也在学习HTML和PHP

    潜水 其它浏览器 其它操作系统
    1. eliteYang

      2013 年 8 月 2 日 19:06

      *nux平台基本都是小写,ms平台因为ms本身的代码就是各种大小写,所以导致大家的风格不统一,boost的风格就很好。我个人更喜欢小写一些

      神话 其它浏览器 其它操作系统
      1. Yu Jing

        2013 年 8 月 29 日 19:34

        以前超抵触MS的所谓匈牙利标记法,但用了几次后觉得还是挺带感的…

        神话 其它浏览器 其它操作系统
        1. eliteYang

          2013 年 8 月 29 日 20:20

          我工作中大家都是用匈牙利的,觉得也没什么问题

          神话 其它浏览器 其它操作系统
  • Yu Jing

    2013 年 7 月 28 日 18:43

    话说,RSS阅读好久没看到更新,还以为不搞了呢…
    可否检查下?feed的错误?
    错误提示:
    This page contains the following errors:

    error on line 354 at column 25: Input is not proper UTF-8, indicate encoding !
    Bytes: 0x0B 0xE4 0xB8 0x8D
    Below is a rendering of the page up to the first error.

    神话 其它浏览器 其它操作系统
    1. eliteYang

      2013 年 7 月 28 日 23:18

      请问你是用什么订阅的?点击我博客的哪一个方式订阅的

      神话 其它浏览器 其它操作系统
      1. Yu Jing

        2013 年 7 月 29 日 00:31

        订阅本站RSS->默认订阅方式 , 我修改为feedsky就好了

        神话 其它浏览器 其它操作系统
        1. eliteYang

          2013 年 7 月 29 日 10:57

          我用chrome测试是没有问题的,回头再用Firefox测试下看看

          神话 其它浏览器 其它操作系统
          1. Yu Jing

            2013 年 7 月 29 日 13:28

            我指的是这个地址: http://www.cppfans.org/feed 打开,我的fedora 19 + chrome 28 表示有错误, liferea也表示读不懂

            神话 其它浏览器 其它操作系统
            1. eliteYang

              2013 年 7 月 29 日 19:38

              已经搞定了,是非UTF-8字符导致的,转载的文章里面估计有一些隐藏内容

              神话 其它浏览器 其它操作系统
          2. Yu Jing

            2013 年 7 月 29 日 13:28

            18…写错了

            神话 其它浏览器 其它操作系统
  • HeHe.wang|52coder.net

    2013 年 7 月 20 日 14:50

    你那个文章版权信息声明是用的代码还是用的插件?

    冒泡 其它浏览器 其它操作系统
    1. eliteYang

      2013 年 7 月 20 日 20:30

      用的代码

      神话 其它浏览器 其它操作系统
    2. Yu Jing

      2013 年 7 月 28 日 16:48

      简单的对文章字符串再处理下.可以这么写: https://gist.github.com/yujing5b5d/6097988 ,不过内容要自定义下.效果可以看我的文字.

      神话 其它浏览器 其它操作系统
      1. eliteYang

        2013 年 7 月 28 日 23:34

        因为我上面有文章链接,所以下面就没加链接了,只是交了CC声明。你写的这个挺好的,可以用

        神话 其它浏览器 其它操作系统
  • HeHe.wang|52coder.net

    2013 年 7 月 20 日 12:42

    很久没来了,关于编程风格的讨论无论什么时候不会统一的.

    冒泡 其它浏览器 其它操作系统
    1. eliteYang

      2013 年 7 月 20 日 13:40

      是的,编程风格在团队的时候才会用到,不过还是有一些小差别的,这个很难统一的,不过这哥们太纠结了点,有点强迫症,自己虐自己总是不太好!

      神话 其它浏览器 其它操作系统
      1. HeHe.wang|52coder.net

        2013 年 7 月 20 日 14:41

        少年你在哪工作呢?

        冒泡 其它浏览器 其它操作系统
        1. eliteYang

          2013 年 7 月 20 日 20:30

          在上海一家游戏公司上班呢,你呢?

          神话 其它浏览器 其它操作系统
      2. Yu Jing

        2013 年 7 月 28 日 16:50

        我以前也这样,直到有一天终于自暴自弃了,我只保证本工程的风格统一

        神话 其它浏览器 其它操作系统
        1. eliteYang

          2013 年 7 月 28 日 23:32

          其实对风格纠结没必要,最重要的是能写出东西来,写着写着就会发现纠结的问题全没了

          神话 其它浏览器 其它操作系统

发表评论

电子邮件地址不会被公开。 必填项已用*标注