对C++的一点吐槽

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013859301/article/details/53739613

不得不说C++真是反人类啊。

同样一个函数,需要在头文件中声明,在源文件中实现。

具体到Qt实现的时候,对于一个小功能,需要在头文件中注册一个Slot,注册一个Signal,声明一个发送signal的函数,再在源文件中写出Slot的实现,再在初始化时将signal和slot链接到一起,最后还要实现函数emit Signal。

具体到ROS实现的时候,对于同一个话题,需要在源文件中声明话题名,订阅器,订阅函数;需要在源文件中将话题名声明成参数,将订阅者和订阅函数绑定到一起,最后再写出订阅函数的实现。

也就是说,即使只做一件非常简单的事情,需要改动程序的6个地方,而且这6个地方互不关联,分布也非常散。如果没有非常好的明明习惯和良好的代码风格很快就不可维护了。

另外,如果涉及到指针,还要操心指针什么时候释放,如何写可以提高效率,如何保证指针是线程安全的。。。

除此之外,写任何一个变量,函数,类的时候都要反复考虑这种写法是否高效,命名有没有问题,该不该加命名空间,一个地方没写好就等着迎接别人的吐槽吧。

即使上面写的都没问题,最终的程序还要写CMakeLists或者makefile来管理,这里又有很多学问。且中文资料极少,需要自己查阅大量的英文手册才能有初步了解从而看懂别人写的makefile或者CMake文件(曾几何时会写cmake一度让我很有优越感,直到这几天看一些开源库的CMake完全看不懂才发现自己真是图样)。这就造成工程里以后再有任何改动你都需要回来修改这两个文件。ROS还加了一个package.xml也需要手动修改,否则编译报错。一直很想吐槽既然你可以检查CMake和package是否一致那干嘛不把这俩合成一个或者用cmake自动生成package.xml啊!

所以,在科研中,除非思路已经非常清晰,否则不要直接上C++,最好是有成熟的Python或者MATLAB实现再一步步改写成C++。如果一边想一边写的话很快自己就乱套了。

珍爱生命,远离C++。

猜你喜欢

转载自blog.csdn.net/u013859301/article/details/53739613