軟件工程(C語言實踐篇)學(xué)習(xí)心得總結(jié)

馬超群 +《軟件工程(C編碼實踐篇)》MOOC課程http://mooc.study.163.com/course/USTC-1000002006

一、C編碼實踐篇實驗報告

https://www.shiyanlou.com/courses/reports/1290335?【實驗一:寫一個hello world小程序】

https://www.shiyanlou.com/courses/reports/1291937【實驗二:命令行菜單小程序V1.0】

https://www.shiyanlou.com/courses/reports/1293526【實驗三:內(nèi)部模塊化的命令行菜單小程序V2.0】

https://www.shiyanlou.com/courses/reports/1296292【實驗四:用可重用的鏈表模塊來實現(xiàn)命令行菜單小程序V2.5】

https://www.shiyanlou.com/courses/reports/1299144【實驗五:用callback增強鏈表模塊來實現(xiàn)命令行菜單小程序V2.8】

https://www.shiyanlou.com/courses/reports/1302694【實驗七:將menu設(shè)計為可重用的子系統(tǒng)】

二、概述:

? ? ? 上了孟寧老師的課,收獲最大的就是動手寫代碼,動手做實踐,不管是線上還是線下都是如此。下面是我整理的有關(guān)于這門課的我的一些收獲。

課程學(xué)習(xí)心得

1、熟悉Linux編程環(huán)境

? ?? 專業(yè)的程序員應(yīng)該了解unix類的操作系統(tǒng)。因為大多數(shù)服務(wù)器用Linux系統(tǒng)。Linux環(huán)境下做開發(fā)可以徹底掌控設(shè)計。

2、代碼風(fēng)格規(guī)范

????在代碼的規(guī)范上,需要項目組統(tǒng)一格式,注意代碼風(fēng)格的原則:簡明、易讀、無二義性縮進、命名、注釋等代碼編排的風(fēng)格規(guī)范。

3、基本的模塊化設(shè)計

????在設(shè)計規(guī)范上,要保證代碼是高內(nèi)聚,例如一個函數(shù)只做一件事,一個模塊只做一類事的,實現(xiàn)功能盡量用庫函數(shù);還有要遵循“不和陌生人說話”的原則,以保證除了類提供的接口,別人無法訪問類的其他內(nèi)容。同時要合理使用數(shù)據(jù)結(jié)構(gòu)、控制結(jié)構(gòu)等來簡化代碼。

4、可重用模塊的接口設(shè)計

????在模塊化的思想中,講究高內(nèi)聚低耦合,接口要規(guī)范,代碼要注意通用性,注意以下原則,Purpose Preconditions(assumptions),Protocols,Postconditions(visible effects),Quality Attributes。

5、callback函數(shù)

????用callback函數(shù)設(shè)計接口能夠方便地實現(xiàn)多態(tài),使接口更加通用而避免考慮許多情況,用戶使用起來也更簡潔。但callback的做法是把某些實現(xiàn)丟給了用戶,也算造成了一些不必要的麻煩,應(yīng)該盡量少用callback。

????這里還提到了信息隱藏,一般地說,定義和實現(xiàn)需要隱藏,而聲明和接口暴露給用戶。

6、函數(shù)的可重入性(reentrant)及線程安全淺析

????在處理多線程問題中,需要關(guān)注函數(shù)是否是可重入的,使用互斥鎖,讀寫鎖以保證多線程安全。同時了解了函數(shù)的可重入性與線程安全之間的關(guān)系,可重入的函數(shù)不一定是線程安全的;可重入的函數(shù)在多個線程中并發(fā)使用時是線程安全的,但不同的可重入函數(shù)(共享全局變量及靜態(tài)變量)在多個線程中并發(fā)使用時會有線程安全問題(可能是線程安全的也可能不是線程安全的);不可重入的函數(shù)一定不是線程安全的。

7、子系統(tǒng)的可重用設(shè)計

????盡管已經(jīng)為鏈表設(shè)計好接口,但要避免錯誤:手里有把錘子,看哪里都是釘子。menu子系統(tǒng)比較特殊,與鏈表等常用模塊不同,接口不需要太通用,但為了可用于不同的項目,也不能太具體(夠用就好)。同時為了方便工程編譯,應(yīng)該寫Makefile文件,可以用automake或autoconf。

????為了讓menu子系統(tǒng)功能更強大,可用strtok和getopt等函數(shù)使其支持帶參數(shù)命令。

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

????我最大的收獲是從頭到尾重新溫習(xí)了一遍軟件工程,以及鍛煉了我的編碼能力,不管是線上的實驗,還是線下的實驗,都讓我學(xué)習(xí)到了不少東西,只要你認真對待,去上這門課還是挺有意義的。

????我最大的遺憾是這門課老師沒有要求我們組隊去完成一個項目,希望以后再開這門課的時候,老師可以給個實際的項目讓同學(xué)們以3到5人的小組模式去合作完成,因為這樣的團隊項目開發(fā)才能讓我們更真切的體驗到軟件工程的整個過程。

? ? 孟寧老師的課程讓我收獲非常大,孟老師作為科大的老師,非常認真負責(zé),對待學(xué)生也像朋友一樣,教學(xué)水平也非常高,上課生動有趣,在課堂之內(nèi),也講了很多課堂外的知識,讓還未邁入社會的我們受益匪淺。現(xiàn)在想想,這學(xué)期孟老師的課程我全部都選了,明智之舉啊~

? ? 最后,再次感謝老師能讓我學(xué)習(xí)到如此有用的知識,相信對我以后找工作很有作用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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