zoukankan      html  css  js  c++  java
  • 读书笔记:代码大全(第二版)


    # 第二部分
    ## 第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);
    }
    ```
        用给子程序命名的方法来展开后代码形同子程序的宏命名,以便在需要时可以用子程序来替换宏

    宏子程序在使用上的限制


  • 相关阅读:
    Calling a parent window function from an iframe
    JSON with Java
    Posting array of JSON objects to MVC3 action method via jQuery ajax
    What's the difference between jquery.js and jquery.min.js?
    jquery loop on Json data using $.each
    jquery ui tabs详解(中文)
    DataTables warning requested unknown parameter
    Datatables 1.10.x在命名上与1.9.x
    jQuery 1.x and 2.x , which is better?
    DataTabless Add rows
  • 原文地址:https://www.cnblogs.com/bog-box/p/14735965.html
Copyright © 2011-2022 走看看