第一次做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++还是不够面向对象。
13,有些地方,不写注释就担心别人看不懂,一般就意味着 这段代码写得很狗屎。
14, 用最新版本的vs。
不做这些工作,那就是用户体验不好。
16,做工具性质的管理软件,最重要的不是界面漂亮,而是清晰、整洁、规整、合理、易懂。
17,要考虑不同电脑上 屏幕分辨率不同 对界面的影响。
如果只是单纯的windows程序,不同分辨率界面会错乱。
如果是用界面库,则一定要用合适的界面布局。
个人需要提升的方向:
1,多线程。
2,通讯。
3,数据库。
4,其他各种基本功。
最重要的一是基本功,二是经验。
第一次做C++项目的一点小总结的更多相关文章
- 如何自学PHP做一个网站 PHP可以做什么项目?网站 小程序 公众号能用PHP开发吗?
很多想从事程序开发的人员,想自学一门语言,不知道从哪里下手学习,如何入门学习?今天我们就以PHP为例子,来讲述一下如何快速的学习一门开发语言,让你快速入门.PHP是一个什么语言?它能开发什么项目呢?下 ...
- 最近做的一个Spring Boot小项目,欢迎大家访问 http://39.97.115.152/
最近做的一个Spring Boot小项目,欢迎大家访问 http://39.97.115.152/,帮忙找找bug,网站里有源码地址 网站说明 甲壳虫社区(Beetle Community) 一个开源 ...
- BUI Webapp用于项目中的一点小心得
接触BUI也有一段时间,也用在了移动端的项目开发中,总的来说,该框架用起来也挺灵活的,控件可以自由定制,前提是自己能认真地学习该框架的api,因为api里面说的东西比较详细,如果没有仔细看的,可能有些 ...
- 迅雷创始人程浩:创业公司5招做好内部创新(组建小型敢死队:一共3个人,一个产品经理,两个研发;腾讯做不做这个项目是一个伪命题;让用户来验证,而不是相反 good)
欢迎关注“创事记”的微信订阅号:sinachuangshiji 文/程浩 编者按:本文首发于微信公众号“浩哥说”(ID:haogetalks),作者程浩,迅雷创始人.内容为作者在混沌AI成长营上的演讲 ...
- 关于win8开发的一点小总结
我今天做画面的时候,发现了一点小问题. 我在xmal文件里面加了一个CheckBox控件,设置IsChecked属性为True,并添加了Checked事件.Checked事件里面有对另外一个TextB ...
- 记录第一次在egret项目中使用Puremvc
这几天跟着另一个前端在做一个小游戏,使用的是egret引擎和puremvc框架,这对于我来说还是个比较大的突破吧,特此记录下. 因为在此项目中真是的用到了mvc及面向对象编程,值得学习 记录第一次在e ...
- 手把手教你做JavaWeb项目:登录模块
现如今,无论是客户端还是移动端,无论是游戏登陆还是社交平台登陆,无处不在的“登陆”.那么你知道怎么制作吗?今天就为你娓娓道来: 用户登录 在各大信息管理系统中,登录功能是必不可少的,他的作用就是验证用 ...
- 基于 Source Generators 做个 AOP 静态编织小实验
0. 前言 上接:用 Roslyn 做个 JIT 的 AOP 作为第二篇,我们基于Source Generators做个AOP静态编织小实验. 内容安排如下: source generators 是什 ...
- 【云开发】10分钟零基础学会做一个快递查询微信小程序,快速掌握微信小程序开发技能(轮播图、API请求)
大家好,我叫小秃僧 这次分享的是10分钟零基础学会做一个快递查询微信小程序,快速掌握开发微信小程序技能. 这篇文章偏基础,特别适合还没有开发过微信小程序的童鞋,一些概念和逻辑我会讲细一点,尽可能用图说 ...
随机推荐
- 【u229】独木桥
Time Limit: 1 second Memory Limit: 64 MB [问题描述] 战争已经进入到紧要时间.你是运输小队长,正在率领运输部队向前线运送物资.运输任务像做题一样的无聊.你希望 ...
- svn删除文件或文件夹后提交失败及解决
svn删除文件夹后提交显示Item 'XXXX' is out of date 有这么几种可能, 1.别人已经提交代码.恰好这个文件或文件夹有改动,这样的情况须要先回复再更新再删除再提交. 2.没有人 ...
- hibernate基本配置与简单增删改查
ORM(Object Relation Mapping)是对象关系映射,是一个思想,它的作用是在关系数据库与对象之间做一个自动映射,将数据库中的表格映射到一个类,也就是持久化类,数据表中每行映射为对象 ...
- 记录一次对接XX支付SDK过程中报错问题
我们支付平台以前我不做对接上游的,偶然间替别人做"对接了XX支付的相关接口的工作".在工作过程中发现SDK和对外提供服务过程中很容易出问题.在此做个记录,为了以后相关工作中作为自己 ...
- 小强的HTML5移动开发之路(22)—— Adobe DreamWeaver CS6安装与破解
首先说明一下,这里介绍Adobe DreamWeaver CS6的安装与破解是为了后面的jQuery Mobile框架使用做好准备. 一.首先去Adobe官网下载:http://www.adobe.c ...
- 探险 - 树型dp(背包)/多叉树转二叉树
题目大意: 国家探险队长 Jack 意外弄到了一份秦始皇的藏宝图,于是,探险队一行人便踏上寻宝之旅,去寻找传说中的宝藏. 藏宝点分布在森林的各处,每个点有一个值,表示藏宝的价值.它们之间由一些小路相连 ...
- java-synchronized原理
介绍 synchronized是一种独占式的重量级锁,在运行到同步方法或者同步代码块的时候,让程序的运行级别由用户态切换到内核态,把所有的线程挂起,通过操作系统的指令,去调度线程.这样会频繁出现程序运 ...
- Mina、Netty、Twisted一起学习(三):TCP前缀固定大小的消息(Header)
于以前的博文于,有介绍切割消息换行的方法. 但是有一个小问题,这样的方法,设消息中本身就包括换行符,那将会将这条消息切割成两条.结果就不正确了. 本文介绍第二种消息切割方式,即上一篇博文中讲的第2条: ...
- LoadFromStr的使用中出现错误“未结束的字符串常量”
最近遇到个奇怪的问题,就是关于js参数中待换行符时,出现了错误“为结束的字符串常量”. 解决方法是:不直接将该数据以参数形式传递,而是先将其赋值在一个隐藏的文本内,需要调用的函数里只需读取该文本里的内 ...
- 十分钟了解 spring cloud
1 为什么需要服务发现 简单来说,服务化的核心就是将传统的一站式应用根据业务拆分成一个一个的服务,而微服务在这个基础上要更彻底地去耦合(不再共享DB.KV,去掉重量级ESB),并且强调DevOps和快 ...