代码大全学习笔记(四):第7章--设计高质量的子程序

1. 子程序是为实现特定目的而编写的一个可被调用的方法(method)或过程(procedure),例如c++中的函数、java中的方法

子程序避免代码段重复,提高代码可读性,同时方便代码改动

2. 好的子程序名字

(1)   避免使用无意义、模糊不清的动词,例如processInput()

(2)   根据需要确定子程序名字的长度,以清晰易懂为标准

(3)   子程序名称一般为 动词加宾语的形式

(4)   准确使用对仗词提供完整接口

3. 子程序的最佳长度

理论上最佳长度为50-150行,一定不要超过200行

4. 使用子程序参数的原则

(1)   按照 输入-修改-输出的顺序排列参数

暗含子程序内部的操作顺序:输入参数、修改数据、输出结果

(2)   把状态变量放在最后

(3)   不要把子程序的参数当作工作变量,应该使用局部变量

c++可以将输入参数声明为const,防止子程序修改这个参数

(4)   确保形式参数和实际参数的类型相匹配,并留意编译器给出的参数不匹配警告

5. 使用函数时需要考虑的问题

(1)   函数是指有返回值的子程序,过程是指没有返回值的子程序

(2)   设置函数的返回值

检查所有可能的返回路径,使用一个默认值来初始化返回值

禁止返回指向局部变量的指针或引用

6. 宏函数和內联函数

(1)   尽可能少用宏函数,使用宏函数时,宏的每个参数和整个函数体都必须用括号加以保护,防止二义性

(2)   c++提供了大量替代宏的解决方案:

(3)   内联函数避免了函数调用开销

內联函数必须定义在头文件中,c++在类内定义的函数默认为inline函数

时间: 2024-12-25 03:19:24

代码大全学习笔记(四):第7章--设计高质量的子程序的相关文章

代码大全学习笔记(什么是构建)

  构建有时也被认为是"coding"或者"programing".编码算不上是最贴切的词,因为它有一种"把已经存在的设计机械化的翻译成计算机语言"的意味,而构建并不是机械化的,需要可观的创造力和判断力,人们常常用编程代替构建.   构建的步骤: 1.验证前面的工作已经完成(如定义问题,需求分析). 2.确定如何去测试所写的代码. 3.设计并编写类或者子程序. 4.创建并命名变量和具名常量. 5.选择控制结构,组织语句块. 6.对你的代码进行单元

代码大全学习笔记(二):第4-5章

1. 主要的构建实践 2. 软件构建中的设计是一个确定取舍和调整顺序的过程,处处都有tradeoff 3. 软件的首要技术使命就是 管理复杂度 将整个系统分解为多个子系统,子系统高内聚.低耦合,尽量减少在特定时间段所面临的复杂度,从而减少脑力负担 4. 高质量设计的具体特征: (1)   最小的复杂度:简洁.易于理解 (2)   易于维护:编程规范:命名.注释等 (3)   松散耦合 高内聚:类接口合理抽象.封装.信息隐藏 低耦合:减少各组成部分之间的关联 (4)   可扩展性 (5)   可重

代码大全学习笔记(一):第1-3章

1. 本书全面阐述 软件构建活动的方方面面 2. 软件开发过程中的各种活动: (1)   定义问题 (2)   需求分析 (3)   规划构建 (4)   软件架构 (5)   详细设计 (6)   编码与调试 (7)   单元测试 (8)   集成测试 (9)   集成 (10)  系统测试 (11)  保障维护 3. 发现错误的时间要尽可能接近引入该错误的时间 4. 软件开发两种方式: (1)迭代式开发:需求不稳定或理解暂时不透彻,变动较多 (2)序列式开发:需求比较稳定,长期可预测性 5.

代码管理工具 --- git的学习笔记四《重新整理git(1)》

1.创建版本库 mkdir  创建目录 cd  地址,到该地址下 pwd 显示当前目录 1.创建目录 $ mkdir startGit $ cd startGit $ pwd 显示当前目录 或者cd到桌面,然后再创建目录 2.初始化版本库 $ git init 初始化仓库 提示信息:Initialized empty Git repository in /Users/xingzai/Desktop/startGit/.git/ 建立一个空的git仓库在/Users/xingzai/Desktop

小猪的数据结构学习笔记(四)

小猪的数据结构学习笔记(四) 线性表之静态链表 --转载请注明出处:coder-pig 本章引言: 在二,三中中我们分别学习了顺序表中的线性表与单链表,线性表有点类似于 我们前面所学的数组,而单链表使用的最多的是指针,这里问个简单的问题, 如果是在以前没有指针的话,前辈先人们怎么实现单链表呢?大家思考下! 没有指针,那么用什么来代替呢?前辈先人们非常机智,想出了使用下标+游标的方式 来实现单链表的效果!也就是今天要讲的--静态链表! 当然你也可以直接跳过本章,因为有了单链表就没有必要用静态链表了

Swift学习笔记四:数组和字典

最近一个月都在专心做unity3d的斗地主游戏,从早到晚,最后总算是搞出来了,其中的心酸只有自己知道.最近才有功夫闲下来,还是学习学习之前的老本行--asp.net,现在用.net做项目流行MVC,而不是之前的三层,既然技术在更新,只能不断学习,以适应新的技术潮流! 创建MVC工程 1.打开Visual studio2012,新建MVC4工程 2.选择工程属性,创建MVC工程 3.生成工程的目录 App_Start:启动文件的配置信息,包括很重要的RouteConfig路由注册信息 Conten

《深入Java虚拟机学习笔记》- 第4章 网络移动性

Java虚拟机学习笔记(四)网络移动性 <深入Java虚拟机学习笔记>- 第4章 网络移动性,布布扣,bubuko.com

《深入Java虚拟机学习笔记》- 第7章 类型的生命周期

一.类型生命周期的开始 如图所示 初始化时机 所有Java虚拟机实现必须在每个类或接口首次主动使用时初始化: 以下几种情形符合主动使用的要求: 当创建某个类的新实例时(或者通过在字节码中执行new指令,或者通过不明确的创建.反射.克隆和反序列化): 当调用某个类的静态方法时(即在字节码中执行invokestatic指令): 当使用某个类或接口的静态字段,或者对该字段赋值时(用final修饰的静态字段除外,它被初始化为一个编译时常量表达式): 当调用Java API中的某些反射方法: 当初始化某个

WEB前端学习笔记 四

接上一篇,web学习笔记 四,在此感谢您对此篇笔记的认可,但转发时请注明文章出自网知博学. 2.0  html的语法格式 html的标签要写在尖括号中 :<> 在在英文输入法状态下,按住shift键然后再按它左侧的尖括号就可了, 先学习一个简单的h1标签,是个标题标签,在html中这样写: <h1>我在h1标签中,我就是标题</h1> 那么h1标签中所包裹的文字,就标记成标题了.通过浏览器的解析后在页面上显示出来的效果就是字体加粗,加黑,和word中的标题性质一样! 大