TopLanguage上,一个关于“boost的理念和工程实用价值”的讨论(http://groups.google.com/group/pongba/browse_thread/thread/7501f6ff39b7ff0)吸引了很多人。我这里谈谈我的看法。
无疑,boost是很优秀的库(确切的说,是库的集合)。但是我在介绍我的StdExt库的来由时,曾经毫不客气的说,boost 走错了方向。这其中的原因,归结于我对什么才是C++良好代码风格的看法。
其一,简单是美。如果一件事情可以用简单的方法去完成,就不要仅仅为了方便花十分的力气去制造语法糖。boost中属于这方面的例子很多,如:boost::lambda, boost::shared_ptr, BOOST_FOREACH等。对于boost::lambda,BOOST_FOREACH,我倾向于在语言层面去引入相关的机制。在没有语言的机制下,多写几行代码完全不是什么难事(boost::lambda完全可以写一个仿函数类来搞定,而且调试方便,用lambda虽然代码少,但是失去了调试的便捷,其实是得不偿失;BOOST_FOREACH则完全可以用标准的for(it = cont.begin(); it != cont.end(); ++it) 搞定)。至于boost::shared_ptr算不算是一种语法糖,还是一种有效的内