人类是世界上最勤快的物种,人类也是世界上最懒的物种;当然,人类大多数的勤快的创造是为了让自己有机会懒。
为了耕种的方便,少留两滴汗多长两斤肉,发明了先进的机器;为了通讯的方便,少跑两里路,少死两只鸽子,发明了电报电话手机;为了节省程序员的脑细胞,发明了子程序!
PS:代码大全中的子程序(routine)就是C++中的函数(function),Java中的方法(method)~
Steve(此S非彼S,代码大全的作者哦)认为:抛开计算机本身,子程序也算得上是计算机科学中一项最伟大的发明了。
我们首先来看看创建子程序的正当理由吧~
降低复杂度
可以将一些你容易忘记的细节隐藏起来,这样,一旦你写好某个子程序,在其他地方就只需要了解其功能而加以调用即可,毕竟,我们的脑袋存储空间有限;
引入中间、易懂的抽象
很重要的一点,子程序的名字要起得好,否则这点的功能就要大打折扣了。将一些难懂晦涩的代码放置在子程序中,一方面便于阅读了解,另一方面也更加容易维护和修改;
比如下面两块代码:
if(a>b)
return a;
else return b;
和 int maxNum=getMaxNum(a,b)
比起来,显然第二个更加清楚,通常情况下子程序里的代码会更加复杂,你懂的
避免代码重复
这也是我们上学时,老师在介绍C函数的时候常提到的子程序的功用,对于功能一致或类似的代码,最好是将它们提取到一个子程序里面。当然,对于具体的实现方法,你可以将这些重复的方法中相同的部分放到基类里面,而不同的放到子类里面;也可以让相同的代码放到一个新的子程序里面,在让其余的代码来调用之...
支持子类化
当你的子程序简单明了的时候,覆盖该方法的子类也会更加容易而不至于犯错~
隐藏顺序
将一些顺序执行的代码放置在子程序里面,因为这种顺序在大多数情况下没必要向外界公开
隐藏指针操作
指针操作通常容易让人犯难,所以,将它们放到子程序里面吧。另外,如果你想出不用指针的方法,那么直接修改该子程序即可,幸好java没有指针的困扰了...
提高可移植性
将不可移植的部分和可移植的部分分开,会在将来真的需要移植时让你倍感轻松...
简化复杂的布尔判断
和第二条有点类似,就是某写复杂难懂的布尔判断最好也放置在命名清晰的子程序中
改善性能
为了便于优化代码,请将你觉得写得一团糟的代码放到一起,这样以便以后重构方便,这也是经验活啊
确保所有的子程序都很小
当然,这点并不一定,关于子程序的长度把握,这也是一个经验活...好吧,这点当白说~
分享到:
相关推荐
工作杂记-YUV的dump和read
本资源包中的"Vue-dev-note-master1"可能包含了关于Vue开发的笔记、教程、示例代码等资料,对于想要深入理解和学习Vue.js的开发者来说,是一份宝贵的资源。 1. **Vue核心概念**: - **虚拟DOM**:Vue通过虚拟DOM...
- 内部过程(Internal Procedures)和模块过程(Module Procedures)简化接口,方便将外部子程序转换为模块过程。 - 使用`=>`指定过程,如`FUNCTION f(x) RESULT(y) => y`。 10. 作用域: - 声明的名称在其声明...
- **turbo 环境下的外部函数使用方法**:描述了如何在 turbo 环境下使用外部函数的过程,包括创建项目文件、编译、连接等步骤。 - **include**:用于在 C/C++ 语言中引入其他文件的关键字。 - **sample 和 demo**:...
作者:hazer,时间:2019-6-28杂记-47-杂记-46-杂记-45-杂记-44-杂记-35- 内置简介:github readme自动生成工具作者:hazer,时间:2019-6-27杂记-33-杂记-32-杂记-31-杂记-30-杂记-29- 杂记-28- 杂记-27-杂记-26-...
// 获取userAgent// 是否是ie// 是否是IE9// 是否是edge浏览器// 是否是android浏览器// 是否是ios// 是否是谷歌浏览器
Mac 下编译 Linux 和 Windows 64位可执行程序Linux 下编译 Mac 和 Windows 64位可执行程序Windows 下编译 Mac
Oracle 9i的PL/SQL支持块结构,可以创建嵌套的PL/SQL块,这使得代码组织更加清晰。同时,PL/SQL提供了丰富的内置函数,如数学函数、字符串函数、日期时间函数等,极大地方便了开发者。 在实际应用中,PL/SQL的优势...
- 高阶函数:接受一个或多个函数作为参数,并/或返回一个函数的函数。 2. **装饰器**: - 一种特殊类型的函数,可以修改其他函数的行为。 #### 六、实战项目 1. **Pythonic与Python杂记**: - Pythonic:遵循...
- **资源转移**:在移动构造函数中,完成资源转移后,需要确保原始对象不再持有资源,通常通过将其指针设为`nullptr`来实现,如示例中的`obj.m_pData = nullptr;`。 - **避免二次拷贝**:在声明移动构造函数时,...
可以使用构造函数传入一个委托作为线程的入口点,或者通过Start方法传递一个委托。 - **ThreadPool**:线程池是一种优化资源管理的方式,它可以重用已创建的线程,避免频繁创建和销毁线程的开销。使用ThreadPool....
oracle杂记.doc 这是我个人的总结。 主要是oracle的编程以及体系结构的理解。
- 数据类型的转换方法 ### 第4章 Python中表示“组”的概念与定义 - **课程目标**:讲解如何使用序列类型来组织数据。 - **核心知识点**: - 序列类型:列表、元组、字典 - 列表的操作:增删改查 - 字典的操作...
创建项目后,你可以开始编写程序。如果尚未有现成的程序,可以点击新建文件按钮,或者通过File->New或Ctrl+N快捷键创建新的C程序文件。编写程序时,可以从简单的示例开始,比如经典的初始化串口和定时器的代码: ``...
### 单片机C语言学习杂记 #### 一、单片机与C语言简介 在电子技术领域,单片机是一种集成了微处理器、存储器以及多种输入输出接口的微型计算机系统。51单片机是基于MCS-51架构的一种广泛使用的单片机型。由于其...
序: 编程10年了,感觉有些空虚。不敢称大牛,只能说是一个老鸟。有时候查资料也感觉比较麻烦。想想如果自己能写一些东西,然后查找起来应该会很快,这样对自己也是一个帮助,也希望能帮助到其他人。...
《InstallshieldX安装制作杂记——自定义对话框的实现》 在软件开发过程中,安装程序的制作是一项不可或缺的工作。InstallshieldX作为一款强大的安装包制作工具,提供了丰富的功能,其中包括自定义对话框的创建,这...
一种常见的方法是使用微信小程序提供的API,如`wx.createSelectorQuery()`和`wx.createCameraContext()`等,配合特定的3D模型转换工具,将3D模型转化为小程序能够识别的格式,如glTF或者FBX。这些转换后的模型文件...
包括 VC技术内幕第五版.chm VC知识库五.chm VC知识库六.chm VC知识库七.chm希望大家从中受益,相互交流,学问最重要的是交流,而不是相互抵斥团结起来我们的程序员兄弟们 世俗烦恼处,要耐的下 世事纷扰处,要闲的下...