zoukankan      html  css  js  c++  java
  • 《代码大全》阅读笔记-19-一般控制问题

    布尔

    除了最简单、要求语句按照顺序执行的控制结构之外,所有的控制结构都依赖于布尔表达式的求值

    嵌套

    减少嵌套层次的技术列表:

    • 重复判断一部分条件
    • 转换成if-then-else
    • 转换成case语句
    • 把深层嵌套的代码提取城单独的子程序
    • 使用对象和多态派分
    • 用状态变量重写代码
    • 用防卫子句来退出程序,从而使得代码的主要路径更为清晰
    • 使用异常
    • 完全重新设计深层嵌套的代码

    结构化编程

    结构化编程的核心思想:一个应用程序应该单一入口、单一出口。
    其中涉及到的关键词有:break,continue、throw、catch、return
    结构化编程的三个组成部分:顺序、选择、迭代

    复杂度

    核对表(控制结构相关事宜)

    • 表达式中用的时true和false而不是1、0吗?
    • 布尔值和true以及false作比较是隐式进行的吗?
    • 对数值作比较是显示进行的吗?
    • 有没有通过增加新的布尔变量、使用布尔函数和决策表来简化表达式?
    • 布尔表达式是肯定形式表达的吗?
    • 括号匹配吗?
    • 在需要用括号来明确的地方都是用了括号了吗?
    • 把逻辑表达式全括起来了吗?
    • 判断是按照数轴顺序编写的吗?
    • 如果适当的话。Java中的判断用的时a.equals(b)方式,而不是用a==b方式?
    • 空语句表述的明显吗?
    • 用重新判断部分条件、转换成if-then-else或case语句、或把嵌套代码独立成单独子程序、换用一种更面向对象的设计或者其他改进方法来简化嵌套语句?
    • 如果一个子程序的决策点超过10个,那么能提出不重新设计的理由吗?

    要点

    • 使布尔表达式简单可读,将非常有助于提高你的代码质量
    • 深层次的嵌套使得子程序变得难以理解。所幸的时,你可以相对容易的避免这么做
    • 结构化编程是一种简单并且仍然适用的思想:你可以通过把顺序、选择和循环三者组合起来而开发任何程序
    • 将复杂度降低到最低水平是编写高质量代码的关键
  • 相关阅读:
    关于SVM数学细节逻辑的个人理解(二):从基本形式转化为对偶问题
    关于SVM数学细节逻辑的个人理解(三) :SMO算法理解
    [2017BUAA软工]第0次个人作业
    关于SVM数学细节逻辑的个人理解(一) :得到最大间隔分类器的基本形式
    个人作业Week 1
    [2017BUAA软工]第一次个人项目 数独的生成与求解
    windows下安装webgoat
    .net 的StringComparison
    飞信登录过程的协议分析 (TCP直连方式)
    C#的String.Split方法
  • 原文地址:https://www.cnblogs.com/taceywong/p/8723393.html
Copyright © 2011-2022 走看看