造轮子还是重复轮子?
就其本身而言,C++是一个非常低级的语言,唯有利用库,才能写出高层次的程序。初学者还不能构建自己的库,所以他们要么利用STL,要么自己去写低层次的程序。的确有不少程序应该使用低层次去构造,但对于初学者来说却不那么合适。
先学习库的使用还是语言的细节?
库优先于语言细节。第一,学生们不必费力包装低层次的细节,从而更容易掌握整体语言的全局观念,了解到其威力。首先掌握使用库,那么就很容易理解类的概念,学会如何构造类的技术。首先去学习语言细节,就很难理解类的概念及其功能,这种理解上的缺陷, 是他们很难自己设计和构造类。第二,首先学习程序库,培养了学生良好习惯,就是复用库代码,而不是凡事自己动手。
OOP还是模板?
所谓OOP,就是使用继承和动态绑定机制。一个应该使用这两个技术的程序,就应该至少有两个或两个以上的类型,至少有一个共同的操作,也至少有一个不同的操作。否则就不需要继承。此外,程序还必须有一个场景,需要在运行时从这些类型中挑选出一个,否则就不需要动态绑定机制。C++的模板,解决了其他一些语言用动态类型才能解决的问题。
最后的建议
- 用类来表示概念
- 避免重复,如果发现重复,就抽象为子过程
- 避免使用指针
- 提倡使用程序库
Reference
C陷阱与缺陷