WHAT?

最简单的控制流:即按照先后顺序放置语句与语句块

WHY?

尽管组织直线型的代码是一个简单的任务,但代码结构上的一些微妙之处还是会对代码质量、正确性、可读性和可维护性带来影响

HOW?

必须有明确顺序的语句

  • 使依赖关系变得非常明显
  • 使子程序名能突显依赖关系
  • 利用子程序参数表明依赖关系
  • 用注释说明
  • 用断言/错误处理代码来检查依赖关系

顺序无关的语句

  • 使代码易于自上而下的阅读,将相关的代码组织到一起
// bad
MarketingData marketingData;
SalesData salesData;
TravelData travelData; travelData.computeQuarterly();
salesData.computeQuarterly();
marketingData.computeQuarterly(); salesData.computeAnnual();
marketingData.computeAnnual();
travelData.computeAnnual(); marketingData.print();
slaesData.print();
travelData.print(); // good
MarketingData marketingData;
marketingData.computeQuarterly();
marketingData.computeAnnual();
marketingData.print(); SalesData salesData;
salesData.computeQuarterly();
salesData.computeAnnual();
slaesData.print(); TravelData travelData;
travelData.computeQuarterly();
travelData.computeAnnual();
travelData.print();

《Code Complete》ch.14 组织直线型的代码的更多相关文章

  1. 重读 code complete 说说代码质量

    重读code complete 说说代码质量 2014年的第一篇文章本来计划写些过去一年的总结和新年展望,但是因为还有一些事情要过一阵才能完成,所以姑且不谈这个,说说最近重读code complete ...

  2. code complete part2

    基本数据类型: 1. 程序主体中仅能出现的数字就是0和1,除此之外,所有的数字都要用宏定义或者const类型,用清晰的变量名描述用途 2. 预防除零错误, assert(denominator!=0) ...

  3. code complete part1

    最近在看code complete,学习了一些东西,作为点滴,记录下来. 关于类: 类的接口抽象应该一致 类的接口要可编程,不要对类的使用者做过多的假设.不要出现类似于:A的输入量一定要大于多少小于多 ...

  4. Code Complete 读后总结和新的扩展阅读计划

    Code Complete 读后总结和新的扩展阅读计划 用了一年时间终于将代码大全读完了,在这里做一个简单的总结,并安排下一阶段的扩展阅读计划. 1.选择代码大全作为我程序员职业入门的第一本书,我认为 ...

  5. 27 Debugging Go Code with GDB 使用GDB调试go代码

    Debugging Go Code with GDB  使用GDB调试go代码 Introduction Common Operations Go Extensions Known Issues Tu ...

  6. 14条最佳JS代码编写技巧

    http://gaohaixian.blog.163.com/blog/static/123260105201142645458315/写任何编程代码,不同的开发者都会有不同的见解.但参考一下总是好的 ...

  7. ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)

    ASCII(American Standard Code for Information Interchange,美国标准信息交换代码) ASCII简介 ASCII(American Standard ...

  8. 《Code Complete》ch.26 代码调整技术

    WHAT? 提高代码运行速度的方法,减少代码的资源占用 WHY? 这里提出的都是“可以尝试的”方法,有的或许在你的环境根本不起作用,有的则能实实在在产生很好的效果 HOW? Logic - 逻辑 在知 ...

  9. 《Code Complete》ch.25 代码调整策略

    WHAT? 本章讨论程序性能调整问题.但是对用户来说,程序员按时交付软件,提供一个清爽的用户界面,避免系统经常死机常常比程序性能更加重要 WHY? 在程序设计这种文化中,编写出能够节省几微秒的代码可以 ...

随机推荐

  1. 用Filter解决乱码和jsp缓存问题

    1) 乱码Filter: 新建一个:CharSetFilter package com.my.filter; import java.io.*; import javax.servlet.*; imp ...

  2. ubuntu 安装 VISUAL STUDIO CODE

    1.下载VISUAL STUDIO CODE .DEB/.RPM 2. # For .deb sudo dpkg -i <file>.deb # For .rpm (Fedora and ...

  3. http://www.dayandeng.com/ 诈骗网站

    http://www.dayandeng.com/ 诈骗网站   http://www.dayandeng.com/userfiles/media/2018/awzosv16.html   骗取你的京 ...

  4. linux内存文件系统之指南

    内存文件系统使用及示例:ramdisk, ramfs, tmpfs 第一部分在Linux中可以将一部分内存mount为分区来使用,通常称之为RamDisk. RamDisk有三种实现方式: 第一种就是 ...

  5. MySQL类型转换

    mysql为我们提供了两个类型转换函数:CAST和CONVERT,现成的东西我们怎能放过? BINARY[(N)] CHAR[(N)] DATE DATETIME DECIMAL SIGNED [IN ...

  6. (WPF, MVVM) Textbox Binding

    参考:http://msdn.microsoft.com/en-us/library/system.windows.data.updatesourcetrigger(v=vs.110).aspx Te ...

  7. adb上使用cp/mv命令的替代方法(failed on '***' - Cross-device link解决方法)

    今天把玩手头的那部Android手机时碰到一个问题,即因为权限问题无法将文件复制到/system/和/data/分区中,经过一番折腾后,算是解决了,在此记录一笔.本方所涉及到的命令输入,均用斜体字表示 ...

  8. .Net下实现可扩展的编程方法简述

    IoC控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则用来解决系统耦合问题. 控制反转还有一个名字叫做依赖注入(DI:Dependency Inje ...

  9. [转][色彩 A] – 永远不要使用纯黑

    原文地址:http://www.cgjoy.com/forum.php?mod=viewthread&tid=110762&extra=page%3D1%26filter%3Dtype ...

  10. LinkedHashMap的实现原理(复习)

    1. LinkedHashMap概述: LinkedHashMap是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序.此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映 ...