zoukankan      html  css  js  c++  java
  • 《Code Complete》ch.7 高质量的子程序

    WHAT?

      子程序(routines)是为实现一个特定目的而编写的可被调用的方法或过程。在C++中是函数(function),在Java中是方法(method),在VB中是函数过程(function procedure)或子过程(sub procedure)。

    WHY?

    • 降低复杂度
    • 引入中间、易懂的抽象
    • 避免代码重复
    • 支持继承、重写
    • 隐藏实现细节
    • 提高可移植性
    • 改善性能(对明确的子程序进行优化)

    HOW?

    • 内聚性(cohesion):是指子程序中各种操作之间联系的紧密程度
    • 编程的目标是让每一个子程序只完成一件事情
    • 内聚性的几个层次,由高到低排列
      • 功能内聚(functional cohesion):最强、最好的内聚,只完成一件事情
      • 顺序内聚(sequential cohesion):子程序做了至少两件事情,且这两件事情有分先后顺序
      • 通信内聚(communicational cohesion):子程序做了至少两件事情,它们使用了同样的数据
      • 临时内聚(temporal cohesion):将一系列操作放到一起执行,如startUp()、shutDown(),应该由这些程序去调动其它子程序,而不是把实现都写在这些程序中
      • bad:过程内聚(procedural cohesion):子程序中操作必须按照特定顺序进行
      • bad:逻辑内聚(logical cohesion):依靠输入参数的标识位来决定执行哪一段逻辑
      • bad:巧合内聚(coincidental cohesion):子程序中各个操作没有关联,一团乱麻
    • 好的子程序名字
      • 描述子程序所做的所有事情
      • 避免使用无意义的、含混不清的动词
        • bad:handleCalculation
      • 不要仅通过数字形成不同的子程序名字
        • bad:test1、test2
      • 函数命名:对返回值有所描述
      • 过程命名:动宾短语
      • 如果子程序的名字很糟糕,但却正确滴描述了子程序的功能——到了考虑修改子程序的时候了
    • 子程序不要超过200行
    • 参数排列
      • (输入、修改、输出),把状态或者出错变量放在最后
      • 多个相似的子程序,使用相同的参数顺序
      • 不要把参数用作工作变量
      • 参数个数在7个以内
      • 想清楚子程序需要的参数是一整个对象,还是仅仅为对象中几个独立的field
  • 相关阅读:
    Winform 异步更新listbox
    Object-C
    易学易懂
    C# login with cookie and fiddler2
    开源 侧滑 和 Tab滑动翻页 控件
    Mysql Java type mapping
    jQuery滑动导航菜单
    js判断是移动端还是pc端
    设为主页和加入收藏
    原生javascript效果:无缝滚动
  • 原文地址:https://www.cnblogs.com/maozhige/p/3784578.html
Copyright © 2011-2022 走看看