只在必要的情况下才使用特殊的编译选项, 因为你不能保证其他人也同样正确的设置。
代码风格不能妨碍沟通, 混合的风格等于没有风格。所以还是根据项目来确定自己的代码风格。
代码风格的选择, 考虑的范围包括:易维护, 高效, 清晰, 简洁, 重要性递减。
goto 也并不是毒瘤, 当深陷于 for 迭代的矩阵中, goto 可能是你杀出重围的利器, 反而有助于写出更为清晰的代码。
而另一种 goto 适用的方面就是, 当有巨多种情况的时候, 或者说一个 switch 有着巨多个 case 的时候, 与其使用一个 flag, 有时并不如使用 goto。
再一个, goto 的效率确实高, 如果你把执行速度的优先级定为最高, 那么搭配良好的注释, goto 还是可以用的。
但在使用 goto 时, 还需要注意, 每个模块(函数、过程、方法、子程序)最多使用一个 goto 标号。 且, goto 的语句一定要出现在对应的标号之前, 即只能向下跳转。
assert() 只能用于检查程序的运行状态, 而不能用于对程序状态有影响的任何操作性语句, 因为在 Release 版中, assert() 将使该操作化为乌有。
类的构造函数需要对传入的参数进行有效性检查。
因为构造函数没有返回值, 所以解决构造函数资源分配失败的方法有两种,一种是不在构造函数中分匹配资源, 而是使用 Initialize() 和 Uninitialize() 函数负责资源的分配和释放。另一种方式则是使用异常处理机制, 当构造函数中发生了资源分配错误的问题后, 立刻抛出异常。
不要把类的属性与其方法的参数混为一谈。