zoukankan      html  css  js  c++  java
  • 14使用函数时要特别考虑的问题

    一. 使用函数时要特别考虑的问题

    ​ 现代的编程语言,如C++、Java、Visual Basic等,都同时支持函数和过程。函数是指由返回值的子程序;过程是指没有返回值的子程序。在C++中,通常把所有的子程序都称为函数;然而,那些返回值类型为void的函数在语义上其实就是过程。

    1. 什么时候使用函数,什么时候使用过程

    ​ 语言纯化论者认为,一个函数应该只有一个返回值,就像数学函数一样。这意味着函数值能接受仅用于输入的参数,并只通过函数本身返回一项结果。函数用于应该以它返回的值来命名,就像 sin()、CustomerID()、ScreenHeight()、一样。在另一方面,过程则可以根据所需,接受任意数量的输入、修改和输出参数。

    ​ 一种常用的编程实践是让函数像过程一样执行并返回状态值。逻辑上,这种东西的工作方式和过程一样,但是由于具有返回值,它又确实是一个函数。

    outputStatus = report.FormatOutput(formattedReport)
    if(outputStatus == Success)
    {   
    }
    

    ​ 简而言之,如果一个子程序的主要用途就是返回由其名字所指明的返回值,那么就应该使用函数,否则就应该使用过程。

    2. 设置函数的返回值

    ​ 使用函数时总存在返回不正确的返回值的风险。当函数内有多条可能执行路径,而其中一条执行路径没有设置返回值时,这一错误就出现了。为了减少这一风险,请按照下面给出的建议来做。

    (1) 检查所有可能的返回值

    ​ 在编写函数时,请在脑海里执行每一条执行路径,确保在所有可能的情况下该函数都会有返回值。在函数开头用一个默认值来初始化返回值是个很好的做法——这种方法能够在未正确地设置返回值时提供一张保险网。

    (2)不要返回指向局部数据的引用或指针

    ​ 一旦子程序执行结束,其局部数据就都出了作用域,那么任何指向局部数据的引用或指针也随之失效。如果一个对象需要返回有关其内部数据的信息,那就应该把这些信息保存为类的数据成员。然后,它还应该提供可以返回这些数据成员的访问器子程序,而不是返回对局部数据的引用或者指针。

    二. 宏子程序和内联子程序

    1. 把宏表达式整个包含在括号内
    2. 把含有多条语句的宏用大括号括起来
    3. 用给子程序命名的方法来给展开后代码形同子程序的宏命名,以便在需要时可以使用子程序来替换宏
    道虽迩,不行不至;事虽小,不为不成。
  • 相关阅读:
    Microjs: 超棒的迷你框架和迷你类库搜罗工具
    本周推荐7款CSS3实现的动态特效
    Bootstrap3.1开发的响应式个人简历模板
    10分钟,利用canvas画一个小的loading界面
    四款超棒的jQuery数字化签名插件
    搜索引擎优化网页设计:最佳实践
    推荐超实用的8款jQuery插件
    9款HTML5实现的超酷特效
    想成为程序猿?28个在线学习网站让你变身齐天大圣!
    推荐7款超棒的单页面网站设计模板。关键是!免费!!
  • 原文地址:https://www.cnblogs.com/rock-cc/p/10534878.html
Copyright © 2011-2022 走看看