C++/C就像他没有二进制标准一样,没有统一的代码风格,有unix风格的,有匈牙利风格的。自己很长一段时间也是比较郁闷,后来看到google C++ style的文档受益匪浅。但是STL、MS、Qt等代码风格各有不同,个人就产生了一些思考。
-
缩进
- tab还是空格?更多的文档推荐用空格去而不用tab,仍旧有些会说tab的好处。
- 2、4、8个空格?这对应着不同的缩进深度,2个空格是不是不明显?8个空格是不是按的手疼?4个空格似乎更好些,但是如果多级缩进就会比2个空格更早的超出80个字符的边界了。
-
括号
- 括号(或者其他运算符)是跟在行尾还是另起一行呢?放到行尾知道下一行还有内容,放到下一行的理由是你没有“;”这一行一定没有完成,更能知道单独一行是从上一行的继续。
-
变量与命名
- 类变量在前还是函数在前?
- 匈牙利命名,还是驼峰,还是全小写下划线分割?STL和unix系的大师们都是下划线分割,匈牙利似乎是MFC的专宠,而驼峰在Qt中大量使用而像java、C#这些语言也是这样的风格。
- 成员变量怎么定义,加m还是加m_还是加_后缀还是不加任何修饰
- 需不需要在变量前加类型标识?如果使用的都是原始类型的数据这似乎很有效的区分变量的类型,但是我们大量自定了很多类型似乎这条规则似乎就不那么好用了?
-
头文件定义顺序
- 先自定义头文件后系统头文件,能够更快地发现自定义文件中的冲突。
- 先系统头文件后自定义文件,减少隐藏头文件的依赖。
-
注释
- 注释的第一个目的就是让看代码的人快速的了解代码的意思,还有一个功能就是能够生成开发文档
- doxygen是一个比较通用的更加注释生成文档的工具,开源界更倾向于这种风格的注释。
-
文件
- 一个文件一个类还是按功能分文件?
- 文件尾多一个空行?似乎这没有什么害处。
- 总结
- 不管那种风格,在一个项目中都应该是统一的,不管你的好恶如何
- 什么风格的注释我所谓,关键你应该有注释并把事情说明白
- 不管什么风格,你的代码一定是优美整洁的
- 代码风格的一切是为了效率的平衡
分享到:
相关推荐
本书内容系统、全面,给出了大量代码示例、自测练习、编程提示和编程练习,并且提供了练习的解答。本书有利于初学者尽快掌握c++的编程知识,养成良好的编程习惯;具备相当编程经验的人,也可以从本书了解到使用c++的...
《Linux多线程服务端编程:使用muduo C++网络库》主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。...
今天要总结学习的是 std::chrono 库,它是 C++11 标准时从 boost 库中引入的,其实在 C++ 中还有一种 C 语言风格的时间管理体系,像我们常见的函数 time()、clock()、localtime()、mktime() 和常见的类型 tm、time_t...
http://www.51emb.com/forum_view.asp?forum_id=2&view_id=2468<br>or http://bbs.cnttr.com/archiver/?tid-113142.html<br><br>备注A:学习完该文档后,您将有基于makefile文件编译C/C++代码嵌入式软件开发基本...
Java语言基于C++思想,其编程风格与C++差别很小;C++ Builder又是基于C++;Delphi中的有关对象的概念与C++中的对象几乎完全一致。C++相比其他语言具有与计算机硬件集合紧密、代码效率高,这是Java语言和其他高级语言...
本书沿袭前一版的编写原则和风格,在读者学习了C/C++的基础上,从Windows SDK程序设计出发,用C++类对Windows应用程序进行了模拟封装,重点介绍MFC的应用程序框架。随后以精练的语言介绍Windows的图形图像处理、应用...
如代码的风格、效率和可读性;模块设计的灵活性、可扩展性和耦合度等等。要试图把所有方面都阐述清楚必须花很多的精力,而且也不一定能阐述得全面。因此,本系列文章以软件开发的基础问题为切入点,阐述程序设计和...
FourInOne(中文名字“四不像”)是一个四合一分布式计算框架,在写这个框架之前,我也看了老外写的其他开源框架,也对分布式计算进行了长时间的思考,当我们把复杂的hadoop当作一门学科学习时,似乎忘记了我们想...
和官网题解的区别:题解在笔者思考之后进行了优化,代码风格更好,而且笔者汇集了大量优质的解法,减少官网查看题解的信息筛选时间。对于题目分类更加细致到细小的知识点。 没有解析怎么办?代码风格好,几乎不需要...
对程序员来说,这意味着要注意其中的数据和操纵数据的方法(method),而不是严格地用过程来思考。在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合。数据和方法一起描述对象(object)的状态和...
对程序员来说,这意味着要注意其中的数据和操纵数据的方法(method),而不是严格地用过程来思考。在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合。数据和方法一起描述对象(object)的状态和...
对程序员来说,这意味着要注意其中的数据和操纵数据的方法(method),而不是严格地用过程来思考。在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合。数据和方法一起描述对象(object)的状态和...
对程序员来说,这意味着要注意其中的数据和操纵数据的方法(method),而不是严格地用过程来思考。在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合。数据和方法一起描述对象(object)的状态和...
对程序员来说,这意味着要注意其中的数据和操纵数据的方法(method),而不是严格地用过程来思考。在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合。数据和方法一起描述对象(object)的状态和...
对程序员来说,这意味着要注意其中的数据和操纵数据的方法(method),而不是严格地用过程来思考。在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合。数据和方法一起描述对象(object)的状态和...
对程序员来说,这意味着要注意其中的数据和操纵数据的方法(method),而不是严格地用过程来思考。在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合。数据和方法一起描述对象(object)的状态和...
对程序员来说,这意味着要注意其中的数据和操纵数据的方法(method),而不是严格地用过程来思考。在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合。数据和方法一起描述对象(object)的状态和...
对程序员来说,这意味着要注意其中的数据和操纵数据的方法(method),而不是严格地用过程来思考。在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合。数据和方法一起描述对象(object)的状态和...
对程序员来说,这意味着要注意其中的数据和操纵数据的方法(method),而不是严格地用过程来思考。在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合。数据和方法一起描述对象(object)的状态和...