软件工程(C编码实践篇)----高质量程序员的起跑线

By:成运畅+ 原创作品转载请注明出处 + 《软件工程(C编码实践篇)》MOOC课程http://mooc.study.163.com/course/USTC-1000002006


1.课程背景

  软件工程(C编码实践篇)时候本人作为研究生一年级的核心课程高级软件工程课程学习的重要的一部分。该课程是在网易云课堂上开设的一门程序员基础课程,整个学习过程是在线上完成的。而恰好该课程的网易云课堂制作人孟宁老师也是我们高级软件工程的代课老师,这也使得我们有更多的机会能够跟老师面对面交流课程问题和心得,尽管本科阶段已经有了四年的软件工程学习历程,但这门课对我的帮助不可谓不大。

2.学习体会

  课程初期,作为程序员基础课程的该课程并没有引起已经有四年软工学习历程的我过多的注意,但是越随着课程的深入开展,我越是发现自己所欠缺的东西实在很多。本课程从最简单的最细致程序员注意事项开始学起,通过一个小小的C语言项目的不断演化,体现了许多工程化的思想和方法,从而让我们更加深刻的理解软件工程理论的内涵。通过跟随模仿孟宁老师的代码实现,从无设计代码,模块化设计的代码,到可复用的代码和回调函数等接口设计,提高了我们工程化代码的编写能力,让我们能够严格遵守代码风格规范来编写代码。总之,这门线上课程重视实践,可以使我们对软件工程有一个直观感性的认识。从编码规范到项目设计和开发的准则,这些东西是我之前学习过程中从没有重视和注意的,随着对软件工程学习和理解的不断深入,越是发现这些准则和习惯的重要性,以及它们对合作开发的帮助和对学习效率的提高。该课程对于入门程序员帮助尤为明显,从学习初期就养成规范标准的开发习惯将对整个学习工作生涯受益匪浅。所以该课程可谓高质量程序员入门必学的起跑线课程。

3.学习总结

  该课程并没有什么代码量,老师在讲授过程当中更加注重的是将软件工程的思想表达出来,工欲善其事必先利其器,确立明确的设计和开发标准往往在软件开发中占据着十分重要的地位。本课程介绍了代码书写的规范,介绍了一些模块的设计准则,通过对其总结,大概明确了项目开发的基本步骤:

1)对所要完成的任务进行抽象,设计基本的数据结构;

2)进行模块化设计,一个模块只完成一类相似的任务,并且要具有可重用性;

3)对模块的接口进行改进,使其达到高内聚低耦合;

4)对模块进行封装,信息隐藏。

这些模式跟语言无关,无论你的发展方向如何,这些都是基本而且必要的。本人之前是做Java开发方向的,仍然受益匪浅。当然实际应用过程中还是需要多多实践,在自己的开发过程中真切的注意到这些方面,才能深入消化和理解所学。

4.课程实验

实验报告目录:

实验一:写一个hello world小程序

  主要是熟悉实验楼环境,初步了解代码规范,熟悉linux基本命令,包括cd、ls、mkdir等命令,vim基本命令,包括vi使用,一般模式、编辑模式、命令模式等模式切换,markdown的书写,包括标题、插入链接、插入图片、两次enter等。


实验二:命令行菜单小程序V1.0

实现了命令行的小程序,最主要的学习到很多代码规范,包括:

缩进4个空格

变量命名采用lowCamel风格

类型/类/函数名用Pascal风格

类型/类/变量名用名词或名词组合

函数名用动词或动宾短语

括号清楚地表示逻辑优先级

所有{和}独占一行,且成对对齐

不要把多个语句和多个变量定义放在同一行

注释、文件名、路径等用英文ASCII字符,不要用中文和特殊字符


实验三:内部模块化的命令行菜单小程序V2.0

将程序内部进行模块化,设置接口,使程序更加逻辑清楚

KISS(keep it simple and stupid)一个函数或者方法只做一件事

Using design to frame the code 设计与实现保持一致

Including pseuducode

不要和没陌生人说话

合理运用Control Structure和Data Structure简化代码

一定要有错误处理 goto 语句的用法用数据结构简化代码


实验四:用可重用的链表模块来实现命令行菜单小程序V2.5

将数据结构抽出来独立成一个通用模块的技巧,linktable模块与具体的数据类型无关,是一个通用的链表模块,我们要用到模块时,再具体定义数据类型。这样就可以在C语言没有泛型的情况下尽最大可能复用数据结构的代码,这是非常厉害的技巧

用可重用的链表模块来实现命令行菜单小程序,执行某个命令时调用一个特定的函数作为执行动作

链表模块的接口设计要足够通用,命令行菜单小程序的功能保持不变

可以将通用的Linktable模块集成到我们的menu程序中

接口规范


实验五:用callback增强链表模块来实现命令行菜单小程序V2.8

学习利用callback函数参数使Linktable的查询接口更加通用。

当我们向用户提供接口的时候,要学会注意接口信息的隐藏,只提供给对方必要的信息,而不能完全暴露自己的信息,以免被别人攻击,修改自己内部信息而造成不可预估的后果。


实验六:函数的可重入性(reentrant)及线程安全(本次实验内容无报告)


实验七:将menu设计为可重用的子系统

将menu设计为可以重用的子系统,利用命令行参数argc/argv来处理命令参数,由于menu函数是提供给用户使用的,它只需要向外提供一个执行命令的方法和一个初始化方法。

Makefile,这个我是新学到的,真的很好用,程序更加有套路,编译程序更方便,相信以后会越来越多的用到,。

大概了解了函数getopt的用法,虽然基本实现了复杂命令参数,但是getopt函数里的定义的几个全局变我并不太清楚其功能,在后续的编码中,应该继续完善

5.课程小遗憾

  该课程作为程序员基础课程难度足够,但个人觉得对有一定基础和开发经验的程序员来说,更希望有一些项目实战,希望老师能够制作适合这一类程序员的进阶版的软件工程,十分期待。对老师幽默的教学风格十分喜爱~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352

推荐阅读更多精彩内容