当前课程知识点:基于Linux的C++ >  第一讲 C/C++基本语法元素 >  1.6 程序设计风格 >  LinuxCPP0106

返回《基于Linux的C++》慕课在线视频课程列表

LinuxCPP0106在线视频

LinuxCPP0106

下一节:LinuxCPP0107

返回《基于Linux的C++》慕课在线视频列表

LinuxCPP0106课程教案、知识点、字幕

最后一部分就是关于

整个程序的设计风格

涉及到几个简单小知识

第一个是关于注释的

第二是命名规范

第三是宏与常量

第四就是赋值语句的简写形式

然后第五个就是我们源代码的排版格式

我们先从注释开始讲

注释的目的是为了强调

整个程序的可读性和可维护性

标准格式有两种

一种是“/*” 和“*/”对 配对用

另外一种用“//”来表达

两者使用有差别

“/*”和“*/”配对的时候

它可以出现在程序代码任何一个地方

只要出现这个配对

它就认为中间代码全是注释

编译器在编译代码的时候就会跳过去

不编译了

比如说“int /* 此处内容为注释*/ a;”

结果这行代码编译出来

就是“int a;”

第二个就是“//”

双斜杠表示这个注释从当前“//”处开始

一直到这个文本行的结尾

“/*”和“*/”对它可以跨行

“//”是不跨行的

同一种注释标记不可以嵌套

特别注意这一条

“//”还好 因为它都是单行注释

只注释这一行

从这个地方开始到这一行结尾

“/*”和“*/”是跨行注释

它是不可以嵌套的注释的

同学们要特别注意

第二个是标准命名规范

C++代码使用ASCII码字符集

它包括了大小写英文字母

包括数字

包括一些部分的特殊字符(标点符号)

这就是我们的字符集

特别注意

为量、类型、函数命名的时候

这些东西的名字就叫标识符

这个标识符必须以下划线

或者是一个英文字母开头

后面跟着下划线

英文字母和数字来组成

不能以数字来打头

因为它和数字的值没有办法区分

注意这个变量的名字

或者标识符这个名字

是区分大小写的

大写和小写是不一样的

特别注意这一条

关键字就是系统中给我们提供的

一些已经预先定义好的

具有特定意义的标识符

你可以用 你不可以重新命名 比如int

那就是整型这个数据类型标识符 关键字

你就不可以将变量名字

定位为int 那不行

这就叫关键字

你可以用

但是已经系统定义好

你就不可以重新定义它

第三个就是宏与常量

宏标准定义就是#define这样一条指令

后面跟着两个部分

一个部分就是宏的名字

后面跟着一大串

就是宏想要对应的那个文本

注意它实际上是文本

简单文本替换 后面不需要分号

如果真有分号

则分号就是替换文本一部分

你看到这个代码

#define表示它是宏定义

后面一定会有一个空格

至少一个空格

后面跟着就是宏的名字

这个宏名字我们决定下来了

就是PI 大写的PI

再接下来 从PI空格后面跟着那个字符开始

一直到这一行结尾

全是PI宏名所对应的那个文本

宏本身并不是常量

在编译的时候 查找PI

用后面的文本全部替换

替换完一遍以后

才开始编译

这就是宏

有了const关键字

可以定义常量以后

我们很少再使用宏来定义

像这样的宏文字

我们C++代码中

优先使用常量而不是宏

宏的目的和意义和常量非常类似

就是增强我们程序的可读性

和程序的可维护性

这就是我们宏与常量

赋值语句有一些简写的形式

在我们程序中

经常就需要做类似这样一些指令

x = x + a

x = x - a

x = x * a

诸如此类操作经常会做

如果你每次都这么写很麻烦

C++的程序员认为这个东西麻烦

给它提供简写的形式

就是x += a

它就表示它是一个加赋的动作

把a累加到x上

乘赋就是把a累乘到x上

减赋呢 从x上把a减去

除赋呢 就是从x中除掉

但是对于除法

同学们要特别记住

因为C/C++语言这个除法

涉及到在整数上面做除法

还是在浮点数上做除法

两者是不一样的

如果x和a都是整数

那么除法动作就是一个整数除法

出来的结果就是整数

小数部分忽略掉

比如9 / 2

结果它实际上是4 而不是4.5

同学们一定要记住

它整数除法出来的结果是4

而不是4.5

那么你想取得余数

你用百分号除法 就9 % 2

它也是一个除法

但实际上取两者

除了结果以后的那个余数

所以叫余赋

9 % 2 它的结果是什么 1

9 / 2结果是4 然后余数为1

结果就是1 就这个意思

两者都是整数 那么除法就是整数运算

你要想它的结果为4.5

有一个方案 就是把9和2

不管是除数或被除数

只要其中某一个

换成double类型的量或者float类型

换成小数 那么结果自动变成小数

比如换成9.0 / 2 那结果就是4.5

9 / 2.0

结果也是4.5

特别需要说明的就是x *= a + b

像这样一个表达式

你要把a + b算完了以后才能累乘到x上

注意右边那个表达式

你必须把它做完才可以

否则没有这个括号

它的优先级是不对的

这个地方需要特别注意

其它没什么

然后最后一部分就是源代码排版

我们有一些基本规则

正常情况下你这个代码排得漂亮不漂亮

对理解这个程序和维护这个程序

有巨大的影响

形式上很美观很重要 在这一点

所以说我们有一个排版的规则

同学们要经过长期的实践

你可能会形成自己的排版规则

我这里有一个基本建议

你就照着这个建议去做

做完了以后

你才能摸索出适合你自己的

第一条 递进层次

应该使用左缩进格式

像从左边不断向后缩进

一个层次 一个层次缩进一点

一个层次 一个层次缩进一点

按照这个格式缩进

一行代码不应该太长

正常情况下不要超过80个字符

早期那些个文本行计算机一行

就能够显示80个英文字符

尽量不要超过它

现在大家都用宽屏显示器

有的时候在一行能够写很多

尽量不要超过

超过的话不太容易理解 应该换行

然后函数

函数代码尽量不要超过60行

如果真超过60行怎么办呢

把它换成两个函数拆分

形成两三个函数

这样的话 整个程序写起来

别人阅读和维护起来就更方便了

然后复合语句的书写格式要统一

要使用空行

你可以使用空行区分不同的代码段

然后除非特别必要

你不要在一行写很多条代码

那是不对的

别人不太容易理解

然后你的命名规范

你的标识符命名规范应该是一致的

还有最后一条最重要的

无论采用什么样的标准

你都一定要在这个标准确定下来之后

按照这个方式去执行

不要胡乱变

这是非常重要的

基于Linux的C++课程列表:

第一讲 C/C++基本语法元素

-1.1 提纲

--LinuxCPP0101

-1.2 程序设计的基本概念

--LinuxCPP0102

-1.3 简单C/C++程序介绍

--LinuxCPP0103

-1.4 程序设计的基本流程

--LinuxCPP0104

-1.5 基本语法元素

--LinuxCPP0105

-1.6 程序设计风格

--LinuxCPP0106

-1.7 编程实践

--LinuxCPP0107

-第一讲 C/C++基本语法元素--编程实践提交入口

第二讲 程序控制结构

-2.1 提纲

--LinuxCPP0201

-2.2 结构化程序设计基础

--LinuxCPP0202

-2.3 布尔数据

--LinuxCPP0203

-2.4 分支结构

--LinuxCPP0204

-2.5 break语句

--LinuxCPP0205

-2.6 循环结构

--LinuxCPP0206

-2.7 编程实践

--LinuxCPP0207

-第二讲 程序控制结构--编程实践提交入口

第三讲 函数

-3.1 提纲

--LinuxCPP0301

-3.2 函数声明、调用与定义

--LinuxCPP0302

-3.3 函数调用栈框架

--LinuxCPP0303

-3.4 编程实践

--LinuxCPP0304

-第三讲 函数--编程实践提交入口

第四讲 算法

-4.1 提纲

--LinuxCPP0401

-4.2 算法概念与特征

--LinuxCPP0402

-4.3 算法描述

--LinuxCPP0403

-4.4 算法设计与实现

--LinuxCPP0404

-4.5 递归算法(一)

--LinuxCPP0405

-4.6 递归算法(二)

--LinuxCPP0406

-4.7 容错与计算复杂度

--LinuxCPP0407

-4.8 编程实践

--LinuxCPP0408

-第四讲 算法--编程实践提交入口

第五讲 程序组织与开发方法

-5.1 提纲

--LinuxCPP0501

-5.2 库与接口

--LinuxCPP0502

-5.3 随机数库(一)

--LinuxCPP0503

-5.4 随机数库(二)

--LinuxCPP0504

-5.5 作用域与生存期

--LinuxCPP0505

-5.6 典型软件开发流程(一)

--LinuxCPP0506

-5.7 典型软件开发流程(二)

--LinuxCPP0507

-5.8 编程实践

--LinuxCPP0508

-第五讲 程序组织与开发方法--编程实践提交入口

第六讲 复合数据类型

-6.1 提纲

--LinuxCPP0601

-6.2 字符

--LinuxCPP0602

-6.3 数组(一)

--LinuxCPP0603

-6.4 数组(二)

--LinuxCPP0604

-6.5 结构体

--LinuxCPP0605

-6.6 编程实践

--LinuxCPP0606

-第六讲 复合数据类型--编程实践提交入口

第七讲 指针与引用

-7.1 提纲

--LinuxCPP0701

-7.2 指针基本概念

--LinuxCPP0702

-7.3 指针与函数

--LinuxCPP0703

-7.4 指针与复合数据类型(一)

--LinuxCPP0704

-7.5 指针与复合数据类型(二)

--LinuxCPP0705

-7.6 字符串

--LinuxCPP0706

-7.7 动态存储管理(一)

--LinuxCPP0707

-7.8 动态存储管理(二)

--LinuxCPP0708

-7.9 引用

--LinuxCPP0709

-7.10 编程实践

--LinuxCPP0710

-第七讲 指针与引用--编程实践提交入口

第八讲 链表与程序抽象

-8.1 提纲

--LinuxCPP0801

-8.2 数据抽象(一)

--LinuxCPP0802

-8.3 数据抽象(二)

--LinuxCPP0803

-8.4 链表(一)

--LinuxCPP0804

-8.5 链表(二)

--LinuxCPP0805

-8.6 链表(三)

--LinuxCPP0806

-8.7 链表(四)

--LinuxCPP0807

-8.8 函数指针(一)

--LinuxCPP0808

-8.9 函数指针(二)

--LinuxCPP0809

-8.10 抽象链表(一)

--LinuxCPP0810

-8.11 抽象链表(二)

--LinuxCPP0811

-8.12 编程实践

--LinuxCPP0812

-第八讲 链表与程序抽象--编程实践提交入口

第九讲 类与对象

-9.1 提纲

--LinuxCPP0901

-9.2 程序抽象与面向对象

--LinuxCPP0902

-9.3 类类型

--LinuxCPP0903

-9.4 对象(一)

--LinuxCPP0904

-9.5 对象(二)

--LinuxCPP0905

-9.6 类与对象的成员(一)

--LinuxCPP0906

-9.7 类与对象的成员(二)

--LinuxCPP0907

-9.8 类与对象的成员(三)

--LinuxCPP0908

-9.9 继承(一)

--LinuxCPP0909

-9.10 继承(二)

--LinuxCPP0910

-9.11 继承(三)

--LinuxCPP0911

-9.12 多态(一)

--LinuxCPP0912

-9.13 多态(二)

--LinuxCPP0913

-9.14 编程实践

--LinuxCPP0914

-第九讲 类与对象--编程实践提交入口

第十讲 操作符重载

-10.1 提纲

--LinuxCPP1001

-10.2 四则运算符重载(一)

--LinuxCPP1002

-10.3 四则运算符重载(二)

--LinuxCPP1003

-10.4 关系与下标操作符重载

--LinuxCPP1004

-10.5 赋值操作符重载(一)

--LinuxCPP1005

-10.6 赋值操作符重载(二)

--LinuxCPP1006

-10.7 赋值操作符重载(三)

--LinuxCPP1007

-10.8 赋值操作符重载(四)

--LinuxCPP1008

-10.9 赋值操作符重载(五)

--LinuxCPP1009

-10.10 流操作符重载(一)

--LinuxCPP1010

-10.11 流操作符重载(二)

--LinuxCPP1011

-10.12 流操作符重载(三)

--LinuxCPP1012

-10.13 操作符重载总结

--LinuxCPP1013

-10.14 编程实践

--LinuxCPP1014

-第十讲 操作符重载--编程实践提交入口

第十一讲 泛型编程

-11.1 提纲

--LinuxCPP1101

-11.2 泛型编程概览

--LinuxCPP1102

-11.3 异常处理机制(一)

--LinuxCPP1103

-11.4 异常处理机制(二)

--LinuxCPP1104

-11.5 运行期型式信息(一)

--LinuxCPP1105

-11.6 运行期型式信息(二)

--LinuxCPP1106

-11.7 模板与型式参数化

--LinuxCPP1107

-11.8 题外话:术语翻译

--LinuxCPP1108

-11.9 泛型编程实践(一)

--LinuxCPP1109

-11.10 泛型编程实践(二)

--LinuxCPP1110

-11.11 泛型编程实践(三)

--LinuxCPP1111

-11.12 泛型编程实践(四)

--LinuxCPP1112

-11.13 泛型编程实践(五)

--LinuxCPP1113

-11.14 泛型编程实践(六)

--LinuxCPP1114

-11.15 泛型编程实践(七)

--LinuxCPP1115

-11.16 泛型编程实践(八)

--LinuxCPP1116

-11.17 泛型编程实践(九)

--LinuxCPP1117

-11.18 泛型编程实践(十)

--LinuxCPP1118

-11.19 编程实践

--LinuxCPP1119

-第十一讲 泛型编程--编程实践提交入口

第十二讲 Linux系统编程基础

-12.1 提纲

--LinuxCPP1201

-12.2 程序执行环境(一)

--LinuxCPP1202

-12.3 程序执行环境(二)

--LinuxCPP1203

-12.4 程序执行环境(三)

--LinuxCPP1204

-12.5 程序执行环境(四)

--LinuxCPP1205

-12.6 输入输出(一)

--LinuxCPP1206

-12.7 输入输出(二)

--LinuxCPP1207

-12.8 文件系统

--LinuxCPP1208

-12.9 设备

--LinuxCPP1209

-12.10 库(一)

--LinuxCPP1210

-12.11 库(二)

--LinuxCPP1211

-12.12 makefile文件(一)

--LinuxCPP1212

-12.13 makefile文件(二)

--LinuxCPP1213

-12.14 makefile文件(三)

--LinuxCPP1214

-12.15 编程实践

--LinuxCPP1215

-第十二讲 Linux系统编程基础--编程实践提交入口

第十三讲 进程编程

-13.01 提纲

--LinuxCPP1301

-13.02 进程基本概念

--LinuxCPP1302

-13.03 信号

--LinuxCPP1303

-13.04 进程管理(一)

--LinuxCPP1304

-13.05 进程管理(二)

--LinuxCPP1305

-13.06 进程管理(三)

--LinuxCPP1306

-13.07 进程间通信(一)

--LinuxCPP1307

-13.08 进程间通信(二)

--LinuxCPP1308

-13.09 进程间通信(三)

--LinuxCPP1309

-13.10 进程间通信(四)

--LinuxCPP1310

-13.11 进程池

--LinuxCPP1311

-13.12 编程实践

--LinuxCPP1312

-第十三讲 进程编程--编程实践提交入口

第十四讲 线程编程

-14.1 提纲

--LinuxCPP1401

-14.2 线程基本概念

--LinuxCPP1402

-14.3 线程管理(一)

--LinuxCPP1403

-14.4 线程管理(二)

--LinuxCPP1404

-14.5 线程管理(三)

--LinuxCPP1405

-14.6 线程管理(四)

--LinuxCPP1406

-14.7 线程同步机制(一)

--LinuxCPP1407

-14.8 线程同步机制(二)

--LinuxCPP1408

-14.9 C++11线程库(一)

--LinuxCPP1409

-14.10 C++11线程库(二)

--LinuxCPP1410

-14.11 C++11线程库(三)

--LinuxCPP1411

-14.12 C++11线程库(四)

--LinuxCPP1412

-14.13 C++11线程库(五)

--LinuxCPP1413

-14.14 编程实践

--LinuxCPP1414

-第十四讲 线程编程--编程实践提交入口

第十五讲 网络编程

-15.1 提纲

--LinuxCPP1501

-15.2 Internet网络协议

--LinuxCPP1502

-15.3 套接字(一)

--LinuxCPP1503

-15.4 套接字(二)

--LinuxCPP1504

-15.5 编程实践

--LinuxCPP1505

-第十五讲 网络编程--编程实践提交入口

课程文档

-课程PDF文件

LinuxCPP0106笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。