高級軟件工程(C編碼實踐篇)學(xué)習(xí)心得

蔡子恒 + 原創(chuàng)作品轉(zhuǎn)載請注明出處 + 《軟件工程(C編碼實踐篇)》MOOC課程http://mooc.study.163.com/course/USTC-1000002006

實驗報告鏈接

實驗一:寫一個hello world小程序

實驗二:命令行菜單小程序V1.0

實驗三:內(nèi)部模塊化的命令行菜單小程序V2.0

實驗四:用可重用的鏈表模塊來實現(xiàn)命令行菜單小程序V2.5

實驗五:用callback增強鏈表模塊來實現(xiàn)命令行菜單小程序V2.8

實驗七:將menu設(shè)計為可重用的子系統(tǒng)

課程學(xué)習(xí)總結(jié)

課程一

開通代碼倉庫音念,熟悉實驗樓環(huán)境草描,初步了解代碼規(guī)范唯咬,回顧linux基本命令从绘,cd疾渣、ls施戴、mkdir敷待,vim橄唬,模式切換,復(fù)制耙厚,markdown的書寫强挫,包括標題、插入鏈接薛躬、插入圖片俯渤、插入代碼,完成實驗報告型宝。

課程二

代碼規(guī)范:縮進4個空格八匠,變量命名采用lowCamel風(fēng)格絮爷,類型/類/函數(shù)名用Pascal風(fēng)格,類型/類/變量名用名詞或名詞組合梨树,函數(shù)名用動詞或動賓短語坑夯,括號清楚地表示邏輯優(yōu)先級,所有{和}獨占一行抡四,且成對對齊柜蜈,不要把多個語句和多個變量定義放在同一行,注釋指巡、文件名跨释、路徑等用英文ASCII字符,不要用中文和特殊字符厌处,不要解釋程序如何工作(How)鳖谈,要解釋程序做什么(What),為什么這么做(Why)阔涉。

課程三

將程序內(nèi)部進行模塊化缆娃,設(shè)置接口,使程序更加邏輯清楚瑰排;KISS(keep it simple and stupid):一個函數(shù)或一個方法贯要,只做一件事。擴展開來椭住,在設(shè)計上崇渗,一個系統(tǒng)、一個子系統(tǒng)京郑、一個模塊宅广、一個類等也只做一件事;Using design to frame the code 設(shè)計與實現(xiàn)保持一致些举;不要和陌生人說話(Law of Demeter):一個對象應(yīng)當(dāng)對其他對象有盡可能少的了解跟狱;運用Control Structure和Data Structure簡化代碼;一定要有錯誤處理户魏。

課程四

可重用模塊的接口設(shè)計(天王蓋地虎驶臊,寶塔鎮(zhèn)河妖),簡單地說就是造輪子叼丑,要求達到高內(nèi)聚低耦合的設(shè)計目標关翎,方便重復(fù)使用;常見接口設(shè)計規(guī)范有:參數(shù)化上下文鸠信,生死相依原則纵寝,移除前置條件,簡化后置條件等症副,還需編寫開發(fā)者指南店雅,供用戶閱讀使用政基;關(guān)于接口通用贞铣,并不是越通用越好闹啦,因為過于通用需要考慮很多情況,導(dǎo)致模塊臃腫辕坝、效率低下窍奋,因此應(yīng)該not too specific, not too general。

課程五

用callback函數(shù)實現(xiàn)linktable酱畅,設(shè)計接口能夠方便地實現(xiàn)多態(tài)琳袄,使接口更加通用而避免考慮許多情況,用戶使用起來也更簡潔纺酸。但callback的做法是把某些實現(xiàn)丟給了用戶窖逗,也算造成了一些不必要的麻煩,應(yīng)該盡量少用餐蔬。注意信息隱藏碎紊,一般地說,定義和實現(xiàn)需要隱藏樊诺,而聲明和接口暴露給用戶仗考。

課程六

可重入函數(shù):可以由多于一個任務(wù)并發(fā)使用,而不必擔(dān)心數(shù)據(jù)錯誤词爬。相反秃嗜,不可重入(non-reentrant)函數(shù)不能由超過一個任務(wù)所共享,除非能確保函數(shù)的互斥(或者使用信號量顿膨,或者在代碼的關(guān)鍵部分禁用中斷)锅锨。可重入函數(shù)可以在任意時刻被中斷恋沃,稍后再繼續(xù)運行橡类,不會丟失數(shù)據(jù)⊙看剑可重入函數(shù)要么使用本地變量顾画,要么在使用全局變量時保護自己的數(shù)據(jù)。

線程安全:在代碼中使用一個互斥量實現(xiàn)線程安全匆笤。注意:可重入的函數(shù)不一定是線程安全的研侣;不可重入的函數(shù)一定不是線程安全的。

課程七

將menu設(shè)計為可以重用的子系統(tǒng)炮捧,利用命令行參數(shù)argc/argv來處理命令參數(shù)庶诡,由于menu函數(shù)是提供給用戶使用的,它只需要向外提供一個執(zhí)行命令的方法和一個初始化方法咆课。通過將其中的兩個功能變成函數(shù)放在menu.c中末誓,然后在test.c中使用函數(shù)添加節(jié)點扯俱,很好的實現(xiàn)了可重用。

makefile:非常好用喇澡,直接make即可迅栅,不用gcc。不過要注意里面不能用空格晴玖,需要用tab鍵读存。

go語言一些特性

組成:包聲明,引入包呕屎,函數(shù)让簿,變量,語句 & 表達式秀睛,注釋尔当。第一行代碼package main定義了包名,下一行import "fmt"告訴 Go 編譯器這個程序需要使用 fmt 包等等蹂安;文件名以.go結(jié)尾椭迎,不需要gcc編譯,直接go run即可運行藤抡;沒有.h頭文件侠碧,也沒有makefile文件,在將c語言代碼轉(zhuǎn)化為go語言代碼時要注意這些缠黍。

學(xué)習(xí)心得總結(jié)

最大收獲

這半學(xué)期弄兜,跟隨孟寧老師的MOOC高級軟件工程課程,學(xué)習(xí)到了許多的軟件工程方面的知識瓷式。從最初的hello world小程序來熟悉實驗環(huán)境與過程替饿,到最后實現(xiàn)一個可重用的menu小程序,一步一步跟隨孟寧老師的講解進行代碼書寫實際操作贸典,不僅學(xué)習(xí)了代碼書寫的規(guī)范视卢,還了解到了許多代碼書寫的原則,這些對我之后的學(xué)習(xí)和實踐都有著深刻的指導(dǎo)意義廊驼。

線下的實驗是進行g(shù)o語言代碼的書寫据过,將線上實驗的功能進行g(shù)o語言的轉(zhuǎn)換。這又相當(dāng)于重新學(xué)習(xí)了一門新的語言妒挎。所以為了完成實驗绳锅,自己在網(wǎng)上找教程,搭環(huán)境酝掩,了解go語言的基本特性鳞芙,語法,一步一步實現(xiàn)想要的功能。雖然開始起步很艱難原朝,但是完成代碼跑通時還是很有成就感的驯嘱。

線下的課程,老師從一篇谷歌的文章入手喳坠,從中找出很多現(xiàn)在流行的知識點鞠评,例如代碼審查,代碼倉庫丙笋,調(diào)試谢澈,rup等等煌贴,通過同學(xué)分享的形式御板,真的從中學(xué)習(xí)到了許多,拓展了我的知識面牛郑。雖然很遺憾沒有搶到知識點進行分享怠肋,但是自己也做了關(guān)于rup的ppt,學(xué)習(xí)了rup的基本知識淹朋。

學(xué)習(xí)完這門課后笙各,我對軟件開發(fā)有了更深刻的理解。一個好的程序不僅要代碼規(guī)范础芍,可讀性強杈抢,還有就是要可重用。在動手寫一個程序之前仑性,我們要先進行設(shè)計惶楼,重點考慮怎樣可以讓這個程序既實現(xiàn)功能,又美觀诊杆,可讀性強歼捐,同時功能發(fā)生變化時可以進行最少量的代碼更改。我現(xiàn)在意識到晨汹,軟件高于程序豹储,這使我受益匪淺。

最大遺憾

對我來說淘这,最大的遺憾就是課時太短剥扣,沒有進行更深入的了解。課程結(jié)束后我會進行更深入的學(xué)習(xí)铝穷。

最后钠怯,感謝孟寧老師線上線下的課程帶給我的巨大收獲,感謝助教檢查實驗以及給我的建議與指導(dǎo)氧骤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末呻疹,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌刽锤,老刑警劉巖镊尺,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異并思,居然都是意外死亡庐氮,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門宋彼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來弄砍,“玉大人,你說我怎么就攤上這事输涕∫羯簦” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵莱坎,是天一觀的道長衣式。 經(jīng)常有香客問我,道長檐什,這世上最難降的妖魔是什么碴卧? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮乃正,結(jié)果婚禮上住册,老公的妹妹穿的比我還像新娘。我一直安慰自己瓮具,他們只是感情好荧飞,可當(dāng)我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著搭综,像睡著了一般垢箕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上兑巾,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天条获,我揣著相機與錄音,去河邊找鬼蒋歌。 笑死帅掘,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的堂油。 我是一名探鬼主播修档,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼府框!你這毒婦竟也來了吱窝?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎院峡,沒想到半個月后兴使,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡照激,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年发魄,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片俩垃。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡励幼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出口柳,到底是詐尸還是另有隱情苹粟,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布啄清,位于F島的核電站六水,受9級特大地震影響俺孙,放射性物質(zhì)發(fā)生泄漏辣卒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一睛榄、第九天 我趴在偏房一處隱蔽的房頂上張望荣茫。 院中可真熱鬧,春花似錦场靴、人聲如沸啡莉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咧欣。三九已至,卻和暖如春轨帜,著一層夾襖步出監(jiān)牢的瞬間魄咕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工蚌父, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留哮兰,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓苟弛,卻偏偏與公主長得像喝滞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子膏秫,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容