C++嘛,emmm......我觉得挺难学的,以前在学校的时候,老师布置的作业,能运行出正确的结果就行,其他的,管他呢,能交差就行,而这也给自己埋下了隐患,工作中被打脸(emmm....自己打自己脸)。
嘻嘻,话不多说,赶快写总结吧,我是一个初学者,求大佬们指正┭┮﹏┭┮~
1、如前文所说,项目中,能够用正确的数据运行出正确的结果,那只说明了程序已经完成了一小部分,后面要做的事情多着呢,一个项目,你得考虑你的用户是哪些人,如果用户不小心给你一个错误的数据,那程序大部分都会崩的,这可不太好,你得对这些数据做处理,抛出异常或提示信息让用户知道。
2、effective C++上写了一句话挺好:C++的难学,不仅在其广博的语法,以及语法背后的语义,以及语义背后的深层思维,以及深层思维背后的对象模型;C++的难学还在于它提供了四种不同而又相辅相成的编程泛型。作为一个C++菜鸡程序员,emmm....现在的我比较菜,只能每写一句去思考一下这句话可能会引发什么错误,可能给我的程序埋下什么隐患。
3、相信你自己以及越简单越好。这个真的very very very important~可能你想做一个线程池或者内存池的demo?然后你google了一下,你发现,好多啊,emmm....这个不错,那个不错...emm..看花了眼。其实你完全可以根据自己的需求,自己设计。google上的都很全面,但是阅读起来其实也要花时间去理解,但是吧,越简单越好,嘻嘻,用最简单的方式去工作。
4、养成良好的习惯。成员变量的命名可以参考google编程规范(当然啦,以公司要求为准嘛)。
5、小菜鸡知道有命名空间这个东西,却很少用到。其实这个东东用处很大的~把你的函数暴露在全局中可不是一个很好的行为,这时候用命名空间封装一下,会很好,把类的声明放在命名空间内,这会是一个很好的行为,这个以后再解释。。像C++ prime书,我是通读一遍,然后根据每章的内容做一个demo,加深理解,建议阅读的时候思考下:我使用这个特性会给我的程序带来什么优化或者危害,我在什么情况下应该使用哪种特性?等等。。。
6、尤其要避免未定义的行为。声明变量的时候,为它赋初值,这将是一个很好的行为。
7、C++ prime、effective C++、more effective C++这三本书强推。
8、把你当成编译器。比如说:你为一个函数传了一个引用,那么编译器做了哪些工作,传值,编译器做了什么工作,以及返回引用,返回值;移动赋值与拷贝赋值的选择;编译器执行到这里,会不会抛异常等等。
9、const这个用的机会蛮多的....,看C++ prime吧,多看几遍,很重要很重要。
10、还是相信你自己。github上好多优秀的开源代码,很多代码也都有官方文档帮助你使用。但是,那些文档仅仅是帮助你使用,如果代码量不大的话,想要使用这个代码工具的时候,建议阅读代码(是建议哦~~),一般开源代码的接口都是易于理解的,程序员毕竟是和代码交流的嘛,找到接口,看参数,返回值,以及用到的函数可能会抛什么异常,对自己代码编写有帮助哒。
11、delete一个指针后,再把该指针赋值为nullptr。如:int a = x; int *p = &a; delete p; p = nullptr。
12、谨防内存泄漏,这个好多。。。。以后再说。
13、智能指针少用赋值符号,可以用std::move。这个是指的是在恰当的时候使用,赋值符号容易错嘛,当然这个赋值和移动是两种不同的操作,具体,可以用程序实现下。
14、多看标准库文档,https://en.cppreference.com/w/cpp。