打印

【转】系统程序员成长计划-走近专业程序员

[复制链接]
3408|39
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
elecintop|  楼主 | 2014-5-30 15:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用C语言编写一个双向链表。如果你有一定的C语言编程经验,这自然是小菜一碟。有的读者可能连一个小程序都没有写过,那也不用害怕,可以参考任何一本《数据结构》和C语言的书籍。先弄明白基本概念,把书上的代码看明白,再把代码抄到电脑里,保证编译过去,调试它到正常运行。反复这个过程,直到你能独立完成它为止。写第一行代码是很痛苦的,我培训过好几个同事,他们不是计算机系毕业的,开始在电脑前坐一整天,一行代码都敲不出来,我最早写程序时的情况也好不了多少,不过没有关系,迈出这一步就好了。
沙发
elecintop|  楼主 | 2014-5-30 15:09 | 只看该作者
花1-3天时间,完成这个任务后,再继续往下阅读。

使用特权

评论回复
板凳
elecintop|  楼主 | 2014-5-30 15:09 | 只看该作者
当你读到这里的时候,相信你已经独立写出了一个双向链表。恭喜你!迈出这一步可是值得庆祝的,现在你已经走在通往程序员的光明大道上了。不过你还是个业余程序员,那当然了,你才写出第一个程序呢!什么时候才能成为一个专业程序员呢?三年还是五年工作经验?其实不用的,你马上就可以了,我没有骗你,因为专业程序员与业余程序员之分主要在于一种态度,如果缺乏这种态度,拥有十年工作经验也还是业余的。

使用特权

评论回复
地板
elecintop|  楼主 | 2014-5-30 15:10 | 只看该作者
什么态度?专业态度!也就是星爷常说的专业精神。专业态度有多种表现形式,以后我们会一一介绍的。这里先介绍一下有关形象的态度,专业的程序员是很注重自己的形象的,当然程序员的形象不是表现在衣着和言谈上,而是表现在代码风格上,代码就是程序员的社交工具,代码风格可是攸关形象的大事。

使用特权

评论回复
5
elecintop|  楼主 | 2014-5-30 15:10 | 只看该作者
有人说过,傻瓜都可以写出机器能读懂的代码,但只有专业程序员才能写出人能读懂的代码。作为专业程序员,每当写下一行代码时,要记得程序首先是给人读的,其次才是给机器读的。你要从一个业余程序员转向专业程序员,就要先从代码风格开始,并从此养成一种严谨的工作态度,生活上的不拘小节可不能带到编程中来。

使用特权

评论回复
6
elecintop|  楼主 | 2014-5-30 15:11 | 只看该作者
代码风格有很多种,Windows 和Linux都有自己主流的代码风格,每个团队,每个公司也可能有自己的代码风格,争论哪种风格好那种风格坏没有什么意义。只要有助于其他程序员理解的代码风格都是可以接受的,因为遵循特定代码风格的目的就是为了便于交流。

使用特权

评论回复
7
elecintop|  楼主 | 2014-5-30 15:11 | 只看该作者
这里介绍一下作者本人喜欢的代码风格,这种代码风格也在作者所在团队中使用。这里的命名风格与GTK+代码相近,排版风格Linux内核代码相近。

使用特权

评论回复
8
elecintop|  楼主 | 2014-5-30 15:12 | 只看该作者
命名要展示对象的功能。
文件名:单词小写,多个单词用下划线分隔。
如: dlist.c (这里d代表double,是通用的缩写方法)

使用特权

评论回复
9
elecintop|  楼主 | 2014-5-30 15:12 | 只看该作者
注意: 文件名一定要能传达文件的内容信息,别人一看到文件名就是知道文件中放的是什么内容。只把一个类或者一类的代码放在一起是好的习惯,这样就很容易给文件取一个直观的名字。业余爱好者常常把很多没关系的代码糅到一个文件中,结果造成代码杂乱无章,也很难给它取一个恰当的名字。

使用特权

评论回复
10
elecintop|  楼主 | 2014-5-30 15:12 | 只看该作者
函数名:单词小写,多个单词用下划线分隔。
如:find_node

使用特权

评论回复
11
elecintop|  楼主 | 2014-5-30 15:13 | 只看该作者
注意:同样,一个函数只完成单一功能,不要用代码的长度来衡量是不是要把一段代码独立成一个函数。即使只有几行代码,只要它完成的是一项独立的功能,都应该提为一个单独的函数,而函数名可以直观的反应出它的功能。如果在给函数起名时遇到了困难,通常是函数设计不合理,应该仔细思考一下。

使用特权

评论回复
12
elecintop|  楼主 | 2014-5-30 15:13 | 只看该作者
结构/枚举/联合名:首字母大写,多个单词连写。
如:struct _DListNode;

使用特权

评论回复
13
elecintop|  楼主 | 2014-5-30 15:15 | 只看该作者
宏名:单词大写,多个单词下划线分隔
如:#define MAX_PATH 260

使用特权

评论回复
14
elecintop|  楼主 | 2014-5-30 15:16 | 只看该作者
变量名:单词小写,多个单词下划线分隔。
如:DListNode* node = NULL;

使用特权

评论回复
15
elecintop|  楼主 | 2014-5-30 15:16 | 只看该作者
面向对象的命名方式:

1.以对象为中心,采用主语(对象)+谓语(动作),取代传统的谓语(动作)+宾语(目标)。
如:dlist_append

使用特权

评论回复
16
elecintop|  楼主 | 2014-5-30 15:16 | 只看该作者
2.第一个参数为对象,并用thiz命名。
如:dlist_append(DList* thiz, void* value);

使用特权

评论回复
17
elecintop|  楼主 | 2014-5-30 15:17 | 只看该作者
3.对象有自己的生命周期,都有create和destroy函数

使用特权

评论回复
18
elecintop|  楼主 | 2014-5-30 15:17 | 只看该作者
排版布局要美观大方。

使用特权

评论回复
19
elecintop|  楼主 | 2014-5-30 15:17 | 只看该作者
合理使用空行:
1.函数体之间用空行分隔。

使用特权

评论回复
20
elecintop|  楼主 | 2014-5-30 15:18 | 只看该作者
2.结构/联合/枚举声明空行分隔

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

176

主题

1329

帖子

3

粉丝