`
glutinit
  • 浏览: 46298 次
  • 性别: 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杂记——移动构造函数中需要注意的问题

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

    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单片机的编程技巧,为后续的单片机开发打下...

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

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

    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 代替 ...

    第14章 Pythonic与Python杂记.mp4

    第14章 Pythonic与Python杂记.mp4

    计算机杂记

    这是一个关于计算机基础知识的汇总 你可以从这里学习到关于计算机的一些基础的知识

    李特伍德 一个数学家的杂记.pdf

    李特伍德 一个数学家的杂记.pdf

    installshield安装制作杂记

    installshield安装制作杂记 installshield x

Global site tag (gtag.js) - Google Analytics