第一次做C++项目的一点小总结

本人原本一菜鸟java程序员,但业余涉猎还算广泛,稍微了解些C++内容。主要之前曾爱好过汇编语言。所以对于C语言能从汇编层面加以理解,C++则是在此基础上又加了面向对象、stl等一类东西嘛。

这次做了C++项目,也算是机遇,当时公司恰好有个C++项目需要人手,那时又没有java的话,我就自告奋勇接过来了。

否则我一个java程序员是没机会实践C++的。

项目就是图形界面的windows桌面程序,是一个管理员软件,和某款生物识别设备有 一定交互。要管理用户、管理员的信息、指纹等内容。

接下来主要记一些反思项:

1,字符串方面我一开始用了许多,char数组,或char*,进行字符串操作不方便。C++中最好多用string。

2,少用memcpy这类直接操作内存的函数,因为这类函数是要写明读写多少字节的。如果某一个数组长度改写了,而memcpy函数长度忘了改,那么对内存的操作就会越界了。

      C语言也有更好的操作字符串的函数、strcpy,strcat。

3,这次项目我选择了mysql数据库,因为个人对mysql比较熟悉。

      但实际上做C++的桌面程序 和 java的b\s结构的项目思路有些差别,前者很多情况下简易、轻巧为妙,数据库适合选用SQLite这种内嵌的数据库,或者干脆存储本地文件。

      mysql这种数据库,首先要单独安装配置,最好也要弄个服务器,麻烦。

4,界面方面有个好的界面库,积累一套成熟的写法 真的很重要。

     很常见的需求有  点击列表项右键弹出菜单、动态添加控件、多选列表、显示图片、选择日期等等。

     我用的界面库有htmlayout,duilib。 都是基于基本的windows程序设计。暂时还不会mfc。一开始我是借鉴一个前辈的项目,他是只用htmlayout,我觉得这个库是真鸡巴垃        圾,自己又学习了duilib解决了不少问题。

5,数据结构方面我一开始都是用结构体数组,后来发现C++的stl库里list很好用,类似java的List。

     好的数据结构的库能让工作事半功倍。

6,C++内存管理是难点,堆内存都要自己清理,经常会在这方面出错,很难调试。

7,和设备交互,好的通讯库是基石,一开始用的是socket的库,后来改为hid。一开始这方面还是让我很头痛的尤其hid,对其机制并不是很理解,经常写错,后来公司前辈提供了很常熟的库,直接调用就好。

8,一些耗时很久的操作,如注册指纹、验证信息等,如果不写在线程里,界面会卡顿。

      这种时候多线程的用途就体现出来了。

9,最后代码觉得写的是真有点乱,那种自己改代码很轻松(就是复制黏贴比较多),但以后别人接手的话只能让上帝保佑他了。

10,数据库各方面技术真的很重要。这也是我早就意识到的。

11,用了好多全局变量,有些是有道理的,有些我觉得不太好看,主要是觉得自己的C++还是不够面向对象。
除了全局变量,界面之间、线程之间、不同的cpp之间该怎么交流,以后要好好思考下。
12,觉得以后应该多用namespace。
13,有些地方,不写注释就担心别人看不懂,一般就意味着 这段代码写得很狗屎。
14, 用最新版本的vs。

个人需要提升的方向:

1,多线程。

2,通讯。

3,数据库。

4,其他各种基本功。

最重要的一是基本功,二是经验。

猜你喜欢

转载自www.cnblogs.com/rixiang/p/9072038.html