分享如何学好C++的一点想法及给初学者的建议
作者:网络转载 发布时间:[ 2014/12/31 15:13:55 ] 推荐标签:软件开发 C++ NET
3 如何学C++
C++是一门期很古老又充满生机的编程言语。如果您想成为真正的编程高手并以技术工程师为职业创
造财富,那选择C++是正确的。如果我们对以上断言达成共识之后,那请接着向下看。
下面的内容分为两大部分,分别讲述如何入门和如何提高。
1) 如何入门
轻松上阵:学习c++,并不需要特别的先导知识。我认为,只要能理解顺序,条件和重复,
那能学编程。有论证结论:任何复杂的程序,都是由顺序执行、条件判断和重复执行组成的。
学C++,不一定非要先学C。
入门选择正确门口:
C++是抽象名词,它不会单独存在。它会与以下名称共同存在:
a) 程序
b) 文件
c) 可执行文件
d) 代码
e) 源代码
f) 编译器
h) 链接器
i) 调式器
j) 集成开发环境(IDE,即把编译器,链接器,调试器合在一起的东西)
k) 命令行
另外,还有一大堆影响初学者其它的名词,如
VC, gcc, mfc, windows等等。
认为C++入门难,可能是没有理想上述名称的关系,其实也不要紧,了解上述术语也容易。
下面直接给出入门的方法建议(按顺序)。
建议1: 作好准备,建立好C++的开发环境,选择一个单纯的命令行开发环境。
较容易得到的有VC开发环境和linux下的gnu开发环境,也可以在windows下用cygwin,这
是一个让不熟悉linux开发环境的初学者也可以在windows下使用像linux一样的开发工具。不建
议直接使用Visual Studio 或eclips这样的集成开发环境。
IDE有很多优点,但是,对于初学者来说,它的缺少也很明显。大而全的集成开发环境会让
初学者面临更多的名称,从而更烦恼。
建议2: 先学会C++编程的过程,步骤可以列举如下
a) 理解编程的目标(需求)
b) 编写 make file文件
c) 编写程序
d) 编译,链接程序
e) 检查是否有编译、链接错误,如果有错转到c),直到没有错误
f) 调试程序,检查程序输出结果是否符合预期要求,如果有错,转到c),直到没有错误
无论是选择vc的编译器,还是linux(cygwin下)用g++编译器,上述过程都能通用。
入门C++编程,可以写编译一个简单的程序,演练上述过程。
建议3: 理解C++包括的学习内容
C++是一个内容并不多的编程语言,可以分为四大块内容
第一部分: C++基础部分,它包括C++的一些标识符,语句,函数,参数。
第二部分: C++面向对象部分,它包括用C++设计新的类型,通过面向象的思想来编写
程序。
第三部分: C++的泛型编程,它包括用C++设计一些模板,通过泛型或元编程的思想来
写程序。
第四部分: C++的第三方可复用的库。也包括开发人员自己写的库。学习如何使用第三
方或自己写的可复用的库。
作为初学者,可以先学第一,第二,第四部分。
2) 如何提高C++编程技能
建议4: 遵守规范和遵循“原则”
如: 编码规范和编码规范的原则;
编程规范和编程原则;
设计规范和设计原则。
举例来说,前阵子有网友探讨编码规范和样式,这是一个很好的现象。但遗憾的是没
给出编码规范的原则。我这里简单的引述一个较好的原则(注:原则也会不停的进化的)。
a) 简单原则,清晰易读。
b) 小混淆原则,代码样式一致
c) 小干扰原则,修改方便。
如果编码规范中的要求满足以上原则,那是好的规范。(注:匈牙利样式的风格与原则冲
突较大,所以它仅存于MFC中)
再举个编程原则:比如,设计函数尽量是的返回点; 函数尽量完成一个仅一个
完整的功能等。
设计原则:开闭原则,替换原则,依赖倒转原则等等。
建议5: 识别的代码和发臭的代码
的代码长什么样呢?我认为有下面的特性,以优先顺序列序
a) 易读易懂的
b) 正确且高效的
c) 易复用的
d) 易移植的
稍作说明:代码主要还是用来被阅读的,其实是写代码和让机器执行,如果代码很难
读懂,它的价值会打折扣;第二点不必说明,错误的代码什么价值也谈不上;易复用和
易移植是体现代码价值很重要的指标了。
发臭的代码又长什么样呢?这个可以参考“重构”相关的知识,也可以留作大家讨论。
建议6: 重视代码的价值--复用层次
代码的复用度越高,它的价值越大,代码作者更应该获得更多财富和尊敬。代
码复用的层次既是软件工程发展的过程,也是学习者学习的路线。
那代码复用有哪些层次呢?下面是我的规纳
第一层次:代码级复用:也是低层次代码复用,是源代码级的拷贝粘贴。初学者
也不学会的技术;
第二层次:函数级复用:子函数的出现,人们可以通过函数来复用代码,并发展成为
库函数。像c语言中的 printf(),scanf()这样的函数放在库中,可以被开发人员链
接到自己的程序中。有时候初学者还以为这些函数是C语言中的一部分呢。
第三层次:类库级复用:面向对象的思想曾经是被人们寄予了厚望,希望它能帮助人们
脱离软件工程危机(软件工程的危机中的程序员被比喻成陷入焦泥潭的猛兽,越挣扎陷是越
深)。大家熟悉的基础部分的MFC,boost都可以算作是基于类库的复用。我们也可以把COM,
模板算到这一层次。
第四层次:基于模式的复用:一个伟大的建筑工程师给软件开发人员提供了灵感,发现
建软件和修房子一样,离不开那些相同或相似的套路。于是,为了复用以前的成功案例,总
结出一些模式。模式还和面向对象技术结合起来了,专门研究具体的问题可以分到什么类别中,
并直接给出对象模型。设计模式已经应用了十多年了,可惜很多初学者还不重视它。
第五层次:基于模式的框架复用: 理想中的面向对象是想把对象当作可复用的库像积木一
样生成, 这样开发软件像搭积木一样快乐。但是,很快发现,让积木结合的胶水比积木
还更难控制,程序员要写大量的胶水代码,并且反复的重写。解决这个问题是应用框架。
框架的成功示例很多了。像ACE,MFC是成功的框架。
第六层次:中间件级的复用: 不同的应用领域以及不同的基础环境,却有着相同或相似的
中间层,图形表示是一个两头大中间小的沙漏形。中间件是研究“沙漏”腰。中间件是一个
很迷人的领域。
第七层次:面向服务的复用?基于模型的程序自动生成?认识会不断的提高,我想很快会有
更迷人的领域。
建议7: 重视C++的应用
C++不是孤离的,如果离开应用学C++会容易走偏。建议学习了C++基础之后,多学习以下内容
(可选,排名不会先后)
a) 操作系统(linux,windows),熟悉多线程,linux的体系,windows的内核对象
b) 数据库
c) 图形
d) 网络
e) 你的专业和兴趣的其它领域
建议8: 重视C++相关的工具
a) 调试器
b) 测试工具或框架,如cppunit
建议9: 重视团队
个人英雄时代过了,现在的项目离不开不同角色的开发人员协同工作。让专业的人做专业的事,
所以,选择一个自己感兴趣的点,深入研究,做到好。
建议10: 多读别人的代码并自我积累
不必说为什么。
4. 结束语
本文的观点不求全部被认同,欢迎来邮件与我交流心得,共同学习提高。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11