由于第三章主要介绍一些工具,我直接跳过某些章节,从调试开始。

tip18:调试--没有人能够写出完美的软件,所以调试要占用我们大量的时间。在我们开始调试之前,选择适当的思维方式非常重要,
调试的第一准则是不要恐慌。
调试时要小心近视,要抵制只修正我们所看到的bug的急切愿望,事实上那个bug的源头可能还在远处,还影响了其它我们还未发现的模块,我们应该设法找到问题的根源,再去进行解决,而不仅仅只是问题的特定表现。记住,在我们看到了马蹄印,要想到马,而不是斑马。

tip21:按合约设计(DBC)-- 软件系统中的每一个函数和方法都会做某件事情,此时会有一些期望和陈述:
1.前条件(precondition):为了调用函数,必须为真的条件,即参数必须有效,这个是调用者的责任。
2.后条件(postcondition):函数保证会做的事情,函数完成时的状态,保证会结束,不允许有无线循环。
3.类不变项(class invariant):类保证从调用者的角度来看,该条件总是为真。且在执行过程中,该不变项一定会保持,直到退出。

实现dbc,在设计时,简单的列举输入域的范围,边界条件是什么,这是向着更好的软件的一次飞跃,这是一种设计技术。在设计一个软件时,我们应该设计属于它的合约。

tip22:死程序不说谎--尽早检测问题的好处之一是我们可以尽早崩溃,这样我们可以获得错误信息,死程序带来的危害通常比有疾患的程序带来的危害要小得多。

tip23:断言式编程--用断言来确保不会发生的事情。不会把必须要执行的代码放在断言之中,也不能用断言来代替真正的错误处理。

tip24:何时使用异常--将异常用于异常的问题,出现错误是否还能运行可以做为是否使用异常处理的判断。

tip25:怎样配平资源--要有始有终,打开的资源要关闭。 有open就一定要有close操作,有malloc就一定要有free操作。

read the pragmatic programmer--chapter 4相关推荐

  1. read the pragmatic programmer -- chapter5

    第五章:弯曲或折断 tip26:解耦与得墨忒耳法则--把代码组织成最小的组织单位,即耦合减小至最小.对象间的横贯关系可能带来组合爆炸.我们可以利用得墨忒耳法则来设计我们的方法和函数.它总是设法阻止我们 ...

  2. read the pragmatic programmer -- chapter one

    前几天,项目组的老大找我谈话,给我推荐了the pragmatic programmer这本书,隔天就从网上买了一本,并开始进行这本书的阅读,在此同时,我打算将所学到的东西记录下来,虽然这本书所讲的只 ...

  3. read the pragmatic programmer ---chapter 2

    第二章: 注重实效的途径 tip7:重复的危害--简称DRY原则(don't repeat yourself),系统中的每一项必须具有单一的.无歧义.权威的表示,系统里面所谓的重复就是在两个或者多个地 ...

  4. 【插件】史上最强编辑器通用ctags插件OpenCTags使用指南v1.2--开发者必备

    Changes Log: v1.2.0 2011-12-4 支持Java编写的可以设置用户配置的编辑工具 增加当前文件类查找Tags功能 增加设置当前目录参数 完善多种主流轻量级编辑器的配置 v1.1 ...

  5. 动态语言的灵活性是把双刃剑 -- 以Python语言为例

    本文有些零碎,总题来说,包括两个问题: (1)可变对象(最常见的是list dict)被意外修改的问题, (2)对参数(parameter)的检查问题. 这两个问题,本质都是因为动态语言(动态类型语言 ...

  6. [转载]ESFramework 4.0 快速上手(15) -- 客户端登录验证

    ESFramework 4.0 快速上手(15) -- 客户端登录验证 在之前版本的Rapid引擎中,是没有提供客户端登陆验证的机制的,如果要验证用户的帐号密码信息,我们只有自己手动通过自定义信息来实 ...

  7. 构建插件式的应用程序框架(六)----通讯机制(ZT)

    前天发了构建插件式的应用程序框架(五)----管理插件这篇文章,有几个朋友在回复中希望了解插件之间是如何通讯的.这个系列的文章写到这里,也该谈谈这个问题了,毕竟已经有了插件管理.不知道大家有没有注意到 ...

  8. C#2.0实例程序STEP BY STEP--实例二:数据类型

    C#2.0实例程序STEP BY STEP--实例二:数据类型 与其他.NET语言一样,C#支持Common Type Sysem(CTS),其中的数据类型集合不仅包含我们熟悉的基本类型,例如int, ...

  9. 一、数据库设计与性能优化--概述

    前言 我1998年第一次接触SQL Server 6.5 for Windows NT 4.0,当时的感觉就认为SQL Server只是一个功能强大的Excel文件.现在回想起来,当年抱着这样一种态度 ...

最新文章

  1. 自定义C++异常处理
  2. 关掉占用 某端口的进程
  3. 【ES6(2015)】Object对象
  4. 跑步有利于缓解抑郁心情
  5. 计算机创新发展战略,计算机行业:《智能汽车创新发展战略》征求意见稿点评...
  6. python函数代码块以什么开头_Python初体验-开篇 代码全析
  7. 如何遍历删除一个数组中的对象
  8. Linux应用总结:自动删除n天前日志
  9. C#:导出json数据到Excel表格
  10. 单服务器高性能:PPC、TPC、epoll、Reactor、Proactor
  11. win10用计算机分区,win10 GPT磁盘各分区的功能分别是什么?
  12. (读书笔记)蔡康永的说话之道
  13. Scratch软件编程等级考试四级——20201219
  14. 各种友(e)善(xin)数论总集(未完待续),从入门到绝望
  15. 什么是软件维护?在软件已经交付使用后,为了改正错误或满足新需求而修改软件的过程。它有哪几种类型?
  16. Java实现项目电影购票系统(swing界面)
  17. Android 中的 AccountManager getAuthToken 问题
  18. Thinging in Java读后总结
  19. win10内存占用率过高怎么办_win10 软件推荐
  20. Visual Studio 2008 RTM 已经编译完毕,内部人员已可使用

热门文章

  1. 用python控制硬件_用Python控制硬件35-自制二三十元成本的信号测量采集控制系统...
  2. 山师2019计算机真题,2019年山财、山师综合评价面试真题
  3. 知一的 2021 年已读书单
  4. 海康摄像头web集成播放,ffmpeg+nginx方案
  5. MAC无法访问Nacos解决方法
  6. 【Python第4课】输入
  7. 文件系统,你有想过怎么访问磁盘上存储的数据吗
  8. MyBatis从入门到精通
  9. 2021年全球书籍纸收入大约75070百万美元,预计2028年达到89750百万美元
  10. 现代计算机是ei吗,现代计算机(专业版)杂志