查看: 493|回复: 14
收起左侧

编程老手与高手的误区

[复制链接]

5

主题

30

帖子

84

积分

初级技术员

 楼主| 发表于 2017-5-31 20:10 | 显示全部楼层 |返回版面|阅读模式
自从计算机问世以来,程序设计就成了令人羡慕的职业,程序员在受人宠爱之后容易发展成为毛病特多却常能自我臭美的群体。
如今在Internet上流传的“真正”的程序员据说是这样的:
(1) 真正的程序员没有进度表,只有讨好领导的马屁精才有进度表,真正的程序员会让领导提心吊胆。
(2) 真正的程序员不写使用说明书,用户应当自己去猜想程序的功能。
(3) 真正的程序员几乎不写代码的注释,如果注释很难写,它理所当然也很难读。
(4) 真正的程序员不画流程图,原始人和文盲才会干这事。
(5) 真正的程序员不看参考手册,新手和胆小鬼才会看。
(6) 真正的程序员不写文档也不需要文档,只有看不懂程序的笨蛋才用文档。
(7) 真正的程序员认为自己比用户更明白用户需要什么。
(8) 真正的程序员不接受团队开发的理念,除非他自己是头头。
(9) 真正的程序员的程序不会在第一次就正确运行,但是他们愿意守着机器进行若干个30小时的调试改错。
(10) 真正的程序员不会在上午9:00到下午5:00之间工作,如果你看到他在上午9:00工作,这表明他从昨晚一直干到现在。

5

主题

30

帖子

84

积分

初级技术员

 楼主| 发表于 2017-5-31 20:13 | 显示全部楼层 |返回版面
每个C++/C程序通常分为两个文件。一个文件用于保存程序的声明(declaration),称为头文件。另一个文件用于保存程序的实现(implementation),称 为 定 义(definition)文件。

5

主题

30

帖子

84

积分

初级技术员

 楼主| 发表于 2017-5-31 20:34 | 显示全部楼层 |返回版面
头文件由三部分内容组成:
(1)头文件开头处的版权和版本声明(参见示例1-1)。
(2)预处理块。
(3)函数和类结构声明等。

29

主题

213

帖子

639

积分

高级技术员

发表于 2017-5-31 20:36 | 显示全部楼层 |返回版面
呃。。。这个很牛

5

主题

30

帖子

84

积分

初级技术员

 楼主| 发表于 2017-5-31 20:37 | 显示全部楼层 |返回版面
为了防止头文件被重复引用,应当用ifndef/define/endif 结构产生预处理块。
用  #include <filename.h> 格式来引用标准库的头文件(编译器将从标准库目录开始搜索)。
用  #include “filename.h” 格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索)。

36

主题

311

帖子

933

积分

高级技术员

发表于 2017-5-31 20:40 | 显示全部楼层 |返回版面
在C++ 语法中,类的成员函数可以在声明的同时被定义,并且自动成为内联函数。这虽然会带来书写上的方便,但却造成了风格不一致,弊大于利。建议将成员函数的定义与声明分开,不论该函数体有多么小。

29

主题

213

帖子

639

积分

高级技术员

发表于 2017-5-31 20:41 | 显示全部楼层 |返回版面
定义文件有三部分内容:
(1) 定义文件开头处的版权和版本声明。
(2) 对一些头文件的引用。
(3) 程序的实现体(包括数据和代码)。

2

主题

21

帖子

63

积分

初级技术员

发表于 2017-5-31 20:41 | 显示全部楼层 |返回版面
// 版权和版本声明见示例1-1,此处省略。
#include “graphics.h” // 引用头文件

// 全局函数的实现体
void Function1(…)
{

}
// 类成员函数的实现体
void Box::Draw(…)
{

}

36

主题

311

帖子

933

积分

高级技术员

发表于 2017-5-31 20:41 | 显示全部楼层 |返回版面
期的编程语言如Basic、Fortran没有头文件的概念,C++/C语言的初学者虽然会用使用头文件,但常常不明其理。

29

主题

213

帖子

639

积分

高级技术员

发表于 2017-5-31 20:42 | 显示全部楼层 |返回版面
通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码。

2

主题

21

帖子

63

积分

初级技术员

发表于 2017-5-31 20:42 | 显示全部楼层 |返回版面
头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担

74

主题

3890

帖子

1万

积分

资深工程师

发表于 2017-6-14 23:09 | 显示全部楼层 |返回版面
这个总结还是蛮笼统的,不过有些道理的。
     

4

主题

26

帖子

78

积分

初级技术员

发表于 2017-10-4 22:21 | 显示全部楼层 |返回版面
真正的程序员,除了有严谨的逻辑和对编译工具的熟练掌握,更需要对异常发生的原因有深刻的经验和预防。为了做好这些,减少BUG,1. 请先写好流程图,哪怕你1年后再看,也可以快速看懂,(主框架写1个流程图,核心关键复杂的应用也要写,其他没有参杂交互太多的应用任务 不需要写)。  2. 希望1L是为了要积分,而不是以讹传讹。  
ps:严谨的逻辑是在从无到有的过程中,提升和增加的。不是一蹴而就的。

25

主题

980

帖子

2950

积分

初级工程师

发表于 2017-10-8 22:12 | 显示全部楼层 |返回版面
这个基本上都不用说的,从开发程序的风格上都可以看出来的

78

主题

3565

帖子

1万

积分

资深工程师

发表于 2017-10-13 19:48 | 显示全部楼层 |返回版面
zya888 发表于 2017-5-31 20:42
通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库 ...

头文件的设计非常关键的。
您需要登录后才可以回帖 登录 | 注册 手机登录

本版积分规则

分享 快速回复 返回顶部 返回列表