leptjson 01学习笔记

项目学习Github地址:json-tutorial

两种开发模式

一般我们会采用自动的测试方式,例如单元测试(unit testing)。单元测试也能确保其他人修改代码后,原来的功能维持正确(这称为回归测试/regression testing)。

测试驱动开发(test-driven development, TDD),它的主要循环步骤是:

  1. 加入一个测试。

  1. 运行所有测试,新的测试应该会失败。

  1. 编写实现代码。

  1. 运行所有测试,若有测试失败回到3。

  1. 重构代码。

  1. 回到 1。

TDD 是先写测试,再实现功能。好处是实现只会刚好满足测试,而不会写了一些不需要的代码,或是没有被测试的代码。

常用的单元测试框架有 xUnit 系列,如 C++ 的 Google Test、C# 的 NUnit。

宏的编写知识

反斜线代表该行未结束,会串接下一行。

__FILE__指文件名

__LINE__指被使用位置的行号

__func__指被哪个函数调用的函数名

#line 200指示下一行的行号为200

__DATE__ 编译的日期(格式"Mmm dd yyyy")

__TIME__ 编译的时间(格式"hh:mm:ss")

C语言中的__FILE__、__LINE__和#line

如果宏里有多过一个语句(statement),就需要用 do { /*...*/ } while(0) 包裹成单个语句

do while(0)的作用

断言

C 语言的标准库含有 assert() 这个宏(需 #include ),提供断言功能。

当程序以 release 配置编译时(定义了 NDEBUG 宏),assert() 不会做检测;

而当在 debug 配置时(没定义 NDEBUG 宏),则会在运行时检测 assert(cond) 中的条件是否为真(非 0),断言失败会直接令程序崩溃。

何时使用断言

初学者可能会难于分辨何时使用断言,何时处理运行时错误(如返回错误值或在 C++ 中抛出异常)。简单的答案是,如果那个错误是由于程序员错误编码所造成的(例如传入不合法的参数),那么应用断言;如果那个错误是程序员无法避免,而是由运行时的环境所造成的,就要处理运行时错误(例如开启文件失败)。

你可能感兴趣的:(#,leptjson,c++)