`
glutinit
  • 浏览: 46340 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

代码大全读后杂记-02 为啥创建子程序(方法,函数)

 
阅读更多
人类是世界上最勤快的物种,人类也是世界上最懒的物种;当然,人类大多数的勤快的创造是为了让自己有机会懒。

为了耕种的方便,少留两滴汗多长两斤肉,发明了先进的机器;为了通讯的方便,少跑两里路,少死两只鸽子,发明了电报电话手机;为了节省程序员的脑细胞,发明了子程序!

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

    工作杂记-YUV的dump和read

    fortran90读书杂记

    - 内部过程(Internal Procedures)和模块过程(Module Procedures)简化接口,方便将外部子程序转换为模块过程。 - 使用`=>`指定过程,如`FUNCTION f(x) RESULT(y) => y`。 10. 作用域: - 声明的名称在其声明...

    Vue开发资源:vue相关的开发杂记-前端开发

    Vue开发资源,vue相关的开发杂记,前端开发,供学习参考。

    网络问题:收集平时遇到的问题

    作者:hazer,时间:2019-6-28杂记-47-杂记-46-杂记-45-杂记-44-杂记-35- 内置简介:github readme自动生成工具作者:hazer,时间:2019-6-27杂记-33-杂记-32-杂记-31-杂记-30-杂记-29- 杂记-28- 杂记-27-杂记-26-...

    mynane#web-problem#杂记-18.获取运行环境1

    // 获取userAgent// 是否是ie// 是否是IE9// 是否是edge浏览器// 是否是android浏览器// 是否是ios// 是否是谷歌浏览器

    mynane#web-problem#杂记-45.Golang 在 Mac、Linux、Windows 下如何交叉编译1

    Mac 下编译 Linux 和 Windows 64位可执行程序Linux 下编译 Mac 和 Windows 64位可执行程序Windows 下编译 Mac

    CPP杂记——移动构造函数中需要注意的问题

    首先提一下为什么要使用移动构造函数: 在多次使用传值做参数的方法时,不可避免的会产生临时对象从而调用拷贝构造函数。 . 默认的浅拷贝构造函数在临时变量被析构时还会释放其中的动态元素内存,这时便会对其他部分...

    C#多线程C#线程及访问杂记

    可以使用构造函数传入一个委托作为线程的入口点,或者通过Start方法传递一个委托。 - **ThreadPool**:线程池是一种优化资源管理的方式,它可以重用已创建的线程,避免频繁创建和销毁线程的开销。使用ThreadPool....

    oracle杂记.doc

    oracle杂记.doc 这是我个人的总结。 主要是oracle的编程以及体系结构的理解。

    编程学习杂记-序

    序: 编程10年了,感觉有些空虚。不敢称大牛,只能说是一个老鸟。有时候查资料也感觉比较麻烦。想想如果自己能写一些东西,然后查找起来应该会很快,这样对自己也是一个帮助,也希望能帮助到其他人。...

    VC 和程序杂记

    包括 VC技术内幕第五版.chm VC知识库五.chm VC知识库六.chm VC知识库七.chm希望大家从中受益,相互交流,学问最重要的是交流,而不是相互抵斥团结起来我们的程序员兄弟们 世俗烦恼处,要耐的下 世事纷扰处,要闲的下...

    Android平台搭建杂记

    然后,你可以在Java代码中通过System.loadLibrary加载.so库,实现本地方法调用。 总结,搭建Android开发环境需要安装Eclipse、JDK、SDK和NDK,配置相应的环境变量,安装ADT插件,并在Eclipse中创建Android项目。...

    InstallshieldX安装制作杂记

    《InstallshieldX安装制作杂记——自定义对话框的实现》 在软件开发过程中,安装程序的制作是一项不可或缺的工作。InstallshieldX作为一款强大的安装包制作工具,提供了丰富的功能,其中包括自定义对话框的创建,这...

    51单片机C语言学习杂记.doc

    总的来说,这篇学习杂记为初学者提供了一个清晰的51单片机C语言学习路径,从选择开发工具到编写第一个程序,每个步骤都有详细的指导。通过这样的实践,读者能够逐步掌握51单片机的编程技巧,为后续的单片机开发打下...

    InstallshieldX安装制作杂记(实例之自定义对话框)

    3. 执行程序:同样,如果你想在安装完成后立即运行程序,也可以在脚本中添加相应的代码。例如,`System.Execute`函数可以用来启动程序。 四、注意事项与最佳实践 1. 测试与优化:确保在多种环境下测试自定义对话框...

    InstallshieldX安装制作杂记.rar

    Installshield是一款强大的安装制作工具,广泛应用于Windows平台,它可以帮助开发者创建专业级别的安装程序,使得用户能够方便地安装和卸载应用程序。 在安装包制作过程中,首先要了解的是Installshield的基本概念...

    C/C++杂记 虚函数的实现的基本原理(图文)

    - 编译器负责创建虚函数表。对于类D,它会包含来自基类B的虚函数,以及自己定义的虚函数。这个过程在编译时完成,且虚函数的替换也是在编译时决定的。 3. **虚函数调用过程** - 当通过基类指针调用虚函数,如`pb-...

    \51单片机C语言学习杂记.

    在学习51单片机时,C语言作为编程语言被广泛使用,因为相比汇编语言,C语言更易读、易写,且移植性好。本篇将深入探讨51单片机C语言学习中的关键知识点。 1. **基础知识**:首先,理解单片机的基本结构,包括CPU、...

    asp.net知识库

    将 ASP.NET 2.0 应用程序服务配置为使用 SQL Server 2000 或 SQL Server 2005 ASP.NET 2.0 中的数据源控件 使用 ASP.NET 2.0 ObjectDataSource 控件 ASP.NET 2.0 的内部变化 使用SQL Cache Dependency 代替 ...

    51单片机P89V51学习杂记.rar

    《51单片机P89V51学习杂记》是针对电子工程初学者以及对51单片机有兴趣的开发者提供的一份宝贵资源。这份压缩包包含了关于51单片机及其应用的深入学习材料,特别是侧重于P89V51型号的单片机。下面将对其中的主要知识...

Global site tag (gtag.js) - Google Analytics