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. 用给子程序命名的方法来给展开后代码形同子程序的宏命名,以便在需要时可以使用子程序来替换宏
    道虽迩,不行不至;事虽小,不为不成。
  • 相关阅读:
    LeetCode 32. 最长有效括号(Longest Valid Parentheses)
    LeetCode 141. 环形链表(Linked List Cycle)
    LeetCode 160. 相交链表(Intersection of Two Linked Lists)
    LeetCode 112. 路径总和(Path Sum)
    LeetCode 124. 二叉树中的最大路径和(Binary Tree Maximum Path Sum)
    LightGBM新特性总结
    sql service 事务与锁
    C#泛型实例详解
    C# 中的委托和事件(详解)
    C# DateTime日期格式化
  • 原文地址:https://www.cnblogs.com/rock-cc/p/10534878.html
Copyright © 2011-2022 走看看