C++设计小经验

来源:互联网 发布:淘宝卖家花呗怎么开通 编辑:程序博客网 时间:2024/04/28 09:34

1、派生和组合

 (1)若在逻辑上B 是A 的“一种”(a kind of ),则允许B 继承A 的功能。如男人(Man)是人(Human)的一种,男孩(Boy)是男人的一种。那么类Man 可以从类Human 派生,类Boy 可以从类Man 派生。

 (2)若在逻辑上A 是B 的“一部分”(a part of),则不允许B 继承A 的功能,而是要用A和其它东西组合出B。例如眼(Eye)、鼻(Nose)、口(Mouth)、耳(Ear)是头(Head)的一部分,所以类Head 应该由类Eye、Nose、Mouth、Ear 组合而成,不是派生而成。

 

2、虚函数和多态

     结合“抽象基类”和“多态”有如下突出优点:

 (1)应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。这一
招叫“以不变应万变”,可以大大提高程序的可复用性(这是接口设计的复用,而不是代码实现的复用)。

 (2)派生类的功能可以被基类指针引用,这叫向后兼容,可以提高程序的可扩充性和可维护性。以前写的程序可以被将来写的程序调用不足为奇,但是将来写的程序可以被以前写的程序调用那可了不起。

   

3、new和delete

     预防“野指针”,“野指针”是指向“垃圾”内存的指针,主要成因有两种:

  (1)指针没有初始化。
  (2)指针指向已经释放的内存,这种情况最让人防不胜防,以释放内存的指针最好指向NULL,这是好的编程风格。

4、用好const

   (1)在定义一个常量时,const 比#define 更加灵活。用const 定义的常量含有数据类型,该常量可以参与逻辑运算,有类型检查等好处。      

     (2)强制保护函数的参数值不发生变化

    对于一个函数而言,如果其‘&’或‘*’类型的参数只作输入用,不作输出用,那么应当在该参数前加上const,以确保函数的代码不会改变该参数的值(如果改变了该参数的值,编译器会出现错误警告)。

  (3)强制保护类的成员函数不改变任何数据成员的值

5、使用匈牙利命名法

6、其他建议

   (1)不要编写一条过分复杂的语句,紧凑的C++/C 代码并不见到能得到高效率的机器代码,却会降低程序的可理解性,程序出错误的几率也会提高。
  (2)不要编写集多种功能于一身的函数,在函数的返回值中,不要将正常值和错误标志混在一起。
  (3)不要将BOOL 值TRUE 和FALSE 对应于1 和0 进行编程。大多数编程语言将FALSE定义为0,任何非0 值都是TRUE。Visual C++将TRUE 定义为1,而Visual Basic 则将TRUE定义为-1。

  (4)小心不要将“= =”写成“=”,编译器不会自动发现这种错误。

  (5)不要将123 写成0123,后者是八进制的数值。

  (6)将自己经常犯的编程错误记录下来,制成表格贴在计算机旁边。

详细可参考:http://pcedu.pconline.com.cn/empolder/gj/c/0504/609482_5.html

 

原创粉丝点击