C++基础 学习笔记一:源代码的格式化

1. 源代码中的标记与空白

C中的语句是以分号表示语句的结束。在C中空格和回车以及制表符均为相同作用,即三者通常可以互相替代。

例如可以将一个简单的main函数这样写:

int main(){cout<<endl;return 0;}

也可以这样写:

int main

()               {cout

<<

endl;return

 0;}

都可以通过编译。

空白

空格和回车以及制表符统称为空白

标记

代码中不可分割的元素叫做标记,标记与标记之间需要用空白分开(括号,分号,逗号等符号可以不用分开)。

2. 源代码格式化(仅供参考)

上面的两个例子均可通过编译但是可读性不强,为了便于阅读需要遵循合理的风格,命名规则。

风格规范

  1. 每条语句尽量占一行,对于过于长的语句可以将语句用换行符切割成易读的较短的代码行。
  2. 每个函数都将花括号独占一行
  3. 函数的语句都要对函数体进行层级相对缩进。
  4. 函数的括号和函数名在同一行,参数过长要保持左括号与函数名再同一行。
  5. 空循环体可以用 continue;代替。
  6. 合理运用行注释和块注释

命名规则

  1. 类名首字母大写,名称为名词
  2. 方法(函数)名建议用动词命名首字母小写
  3. 变量名全部用小写
  4. 整个项目都遵循一种命名规则

命名规则推荐

没有一种命名规则是所有人都赞同的,但是有一些著名的命名规则现罗列在此。

  1. 匈牙利命名法

    ​ 匈牙利命名法是由Microsoft程序员查尔斯·西蒙尼(Charles Simonyi) 提出的。其主要思想是“在变量和函数名中加入 前缀以增进人们对程序的理解。

    • 匈牙利命名法关键:

      ​ 标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合, 该单词要指明变量的用途,但这种命名法对于跨平台移植简直是灾难 。

    • 形式如下:

      ​ 全局变量名=范围前缀+下划线+类型前缀+数组前缀+自定义命名

      ​ 局部变量名=类型前缀+数组前缀+自定义命名

      ​ 函数命名=类型前缀+自定义命名

      ​ 控件命名=控件前缀+自定义命名

      ​ 控件事件命名=控件名称+下划线+事件名称

      ​ 程序文件命名=模块名缩写+自定义命名

    • 特点:

      ​ 含义明确,便于程序维护、提高工作效率,但是繁琐。

    基本原则

    ​ 变量名=属性+类型+对象描述。

    1. 属性:

      全局变量 g_ 常量 c_
      类成员变量 m_ 静态变量 s_
    2. 类型部分

      指针 p 函数 fn
      句柄 h 长整型 l
      布尔 b 浮点型(有时也指文件) f
      双字 w 字符串 sz
      短整型 n 双精度浮点 d
      计数 c(通常用cnt) 字符 ch(通常用c)
      整形 i(通常用n) 字节 by
      w 实型 r
      无符号 u
    3. 描述部分

      最大 Max 最小 Min
      初始化 Init 临时变量 T(或Temp)
      源对象 Src 目的对象 Dest
    4. 举例:

      • hwnd :

        ​ h 是类型描述,表示句柄, wnd 是变量对象描述,表示窗口,所以 hwnd 表示窗口句柄;

      • pfnEatApple :

        ​ pfn 是类型描述,表示指向函数的指针, EatApple 是变量对象描述,所以它表示指向 EatApple 函数的函 数指针变量。

      • g_cch :

        ​ g_ 是属性描述,表示全局变量,c 和 ch 分别是计数类型和字符类型,一起表示变量类型,这里忽略了对 象描述,所以它表示一个对字符进行计数的全局变量。

  2. **骆驼(Camel)命名法 **

    ​ 骆驼式命名法(Camel-Case)一词来自 Perl 语言中普遍使用的大小写混合格式,而 Larry Wall 等人所著的畅销书 《Programming Perl》的封面图片正是一匹骆驼。 骆驼式命名法的命名规则可视为一种惯例,并无绝对与强制,为 的是增加识别和可读性。

    驼峰法(小驼峰法)

    ​ 变量一般用小驼峰法标识。驼峰法的意思是除第一个单词之外,其他单词首字母大写。常用于函数名。

    Pascal法(大驼峰法)

      相比小驼峰法,大驼峰法把第一个单词的首字母也大写了。常用于类名,属性,命名空间等

  3. 下划线命名法

    ​ 下划线法是随着C语言的出现流行起来的,在UNIX/LIUNX这样的环境,以及GNU代码中使用非常普遍,用小写字 母和下划线来构成变量或函数名,每个逻辑断点处用下划线来标记。

C++基础 学习笔记之一:源代码的格式化的更多相关文章

  1. 尚学堂JAVA基础学习笔记

    目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...

  2. 0003.5-20180422-自动化第四章-python基础学习笔记--脚本

    0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...

  3. 【C#编程基础学习笔记】4---Convert类型转换

    2013/7/24 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]4---Convert类型转换 ...

  4. 【C#编程基础学习笔记】6---变量的命名

    2013/7/24 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]6---变量的命名 ----- ...

  5. 1.C#基础学习笔记3---C#字符串(转义符和内存存储无关)

    技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com ------------------------------------- ...

  6. Java基础学习笔记总结

    Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...

  7. Mysql数据库基础学习笔记

    Mysql数据库基础学习笔记 1.mysql查看当前登录的账户名以及数据库 一.单表查询 1.创建数据库yuzly,创建表fruits 创建表 ) ) ,) NOT NULL,PRIMARY KEY( ...

  8. Java基础学习笔记(一)

    Java基础学习笔记(一) Hello World 基础代码学习 代码编写基础结构 class :类,一个类即一个java代码,形成一个class文件,写于每个代码的前端(注意无大写字母) XxxYy ...

  9. C#RabbitMQ基础学习笔记

    RabbitMQ基础学习笔记(C#代码示例) 一.定义: MQ是MessageQueue,消息队列的简称(是流行的开源消息队列系统,利用erlang语言开发).MQ是一种应用程序对应用程序的通信方法. ...

随机推荐

  1. SHELL用法二(练习)

    1.SHELL编程作业&剖析演练 1)SHELL编程Nginx虚拟主机脚本:  安装Nginx WEB平台:  配置虚拟主机(1个网站):  重启&加载配置文件:  配置hos ...

  2. NDK开发之<cpu-features.h模块功能>

    今天研究下cpufeatures库,它是一个轻量级的展示CPU特性的模块,调用者在运行时候可以根据这个库提供的简单接口获取到目标机的CPU架构和特性. 一.代码路径: $NDK_ROOT/source ...

  3. telnet不是内部或外部命令的问题解决

    在windows DOS 命令窗口中输入telnet命令,出现如下提示信息:     可能是没有安装telnet客户端的原因,又得开始捣鼓了  www.2cto.com     依次点击"开 ...

  4. servlet简单概括总结

    最近在看java web的相关内容,不管是整体还是细节,要学习的知识有很多,所以有一个好的学习体系非常重要.在阅读学习一些博客和教程中关于servlet的内容后,现将知识体系和自己的总结体会进行梳理, ...

  5. (警告)不要轻易删除libc.so.6,以及误删恢复

    网上有很多帖子介绍升级libc.so.6库的帖子,这里存在巨大的坑: 如: Linux/CentOS 升级C基本运行库CLIBC的注意事项(当想解决GLIBC_2.x找不到的编译问题) 里边都会有这样 ...

  6. 教你如何将txt复制到excel的各个单元格;并解决科学计数法显示问题及导致的个位数变0问题

    1.如果你的txt或log等文件中的数据每个数据刚好都回车了,那么直接粘贴到excel即可: 2.如果你的txt或log等文件中数据较多,回车之后的每一行数据仍需再次分列,那么要求:每一行中需要分列的 ...

  7. [洛谷P4388] 付公主的矩形

    18.09.09模拟赛T1. 一道数学题. 题目传送门 首先把对角线当成是某个点的移动轨迹,从左下到右上. 那么这个点每上升一个单位长度,就穿过一个格子. 每右移一个单位长度,也会穿过一个格子. 例外 ...

  8. LG承认手机业务遭到中国厂商碾压!这是输得心服口服的节奏?

    近日,关于LG手机业退出中国市场的消息传的沸沸洋洋.不少相关媒体也对此事向LG北京办事处求证,得到的结果确实是手机业务退出中国市场.并且据韩媒报道,LG还将会逐渐取消高端手机业务,也就是说未来V系列和 ...

  9. 阿里大数据竞赛season1 总结

    关于样本测试集和训练集数量上,一般是选择训练集数量不小于测试集,也就是说训练集选取6k可能还不够,大家可以多尝试得到更好的效果: 2. 有人提出归一化方面可能有问题,大家可以查查其他的归一化方法,但是 ...

  10. 在Docker中运行gocd

    gocd是一个持续集成的工具,可视化效果非常好 运行gocd-server 12345 docker run -d --name server -p8153:8153 -p8154:8154 -v / ...