• 读书笔记:代码大全(第二版)



    # 第二部分
    ## 第7章 高质量的子程序
        输入变量的值不应该被改变
        慎用全局变量
        子程序的作用应该单一而明确
        注意防范错误的输入数据
        不应该直接使用意义不明的数值
        子程序参数不应太多,最好不要超过7个
        子程序的参数应按照规律顺序排布
        子程序的有效注释要充分
        子程序的命名要能概括其作用

    ### 7.1 创建子程序的正当理由
        降低复杂度
        引入中间、易懂的抽象
        避免代码重复
        支持子类化
        隐藏顺序
        隐藏指针操作
        提高可移植性
        简化复杂的布尔判断
        改善性能
        确保所有子程序都很小
        隔离复杂度
        隐藏实现细节
        限制变化所带来的的影响
        隐藏全局数据
        行程中央控制点
        促成可重用的代码
        达到特定的重构目的

    ## 7.2 在子程序层上设计
    内聚性,子程序中各种操作之间联系的紧密程度

        功能的内聚性
        顺序上的内聚性
        通讯上的内聚性
        临时的内聚性
        过程上的内聚性
        逻辑上的内聚性
        巧合上的内聚性

    ## 7.3 好的子程序名字
        描述子程序所做的所有事情
        避免使用无意义的、模糊或表述不清的动词
        不要仅通过数字来行程不同的子程序名字
        根据需要确定子程序名字的长度
        给函数命名时要对返回值有所描述
        给过程起名时使用预期强烈的动词加宾语的形式
        准确使用对仗词
        为常用操作确立命名规则

    ## 7.4 子程序可以写多长
    最好在200行之内

    ## 7.5 如何使用子程序参数
        按照输入-修改-输出的顺序排列参数
        考虑自己创建in和out关键字,C++中的const来定义输入参数更为适宜
        如果几个子程序都用了类似的一些参数,应该让这些参数的排列顺序保持一致
        使用所有的参数
        把状态或出错变量放在最后
        不要把子程序的参数用作工作变量
        在接口中对参数的假定加以说明,合理使用断言
        把子程序的参数个数限制在大约7个以内
        考虑对参数采用某种表示输入、修改、输出的命名规则
        为子程序传递用以维持其接口抽象的变量或对象
        使用具名参数
        确保实际参数与形式参数相匹配

    ## 7.6 使用函数时要特别考虑的问题
    ## 7.7 宏子程序和内联子程序
        把宏表达式整个包含在括号内
        把含有多条语句的宏用大括号括起来
    ```
    #define LookupEntry(key,index){
        index = (key - 10)/5;
        index = min(index,MAX_INDEX);
        index = max(index,MIN_INDEX);
    }
    ```
        用给子程序命名的方法来展开后代码形同子程序的宏命名,以便在需要时可以用子程序来替换宏

    宏子程序在使用上的限制


  • 相关阅读:
    python之路_django入门项目(老师表)
    python之路_django入门项目(学生表)
    python之路_初识django框架
    python之路_前端基础之Bootstrap JS
    python之路_前端基础之Bootstrap 组件
    python之路_前端基础之Bootstrap CSS
    python之路_登录验证及表格增删改作业
    Spring Boot CLI安装
    Spring Boot 所提供的配置优先级顺序
    Intellij IDEA 14.x 中的Facets和Artifacts的区别
  • 原文地址:https://www.cnblogs.com/bog-box/p/14735965.html
Copyright © 2020-2023  润新知