天天看點

C編碼實踐篇學習總結

SA17225385 王振宇 原創作品轉載請注明出處

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

對軟體工程的了解及學習軟體工程(C編碼實踐篇)的心得:

通過和孟老師學習的這段時間,不僅僅是從編碼能力上有了提升,更重要的是對于軟體工程這個領域有了新的認識,在之前的學習中,自己一味的注重代碼的實作和功能的實作,沒有注意到從子產品化到接口還有很多的學問,也沒有了解到一個真正成熟友善維護和運用的程式應該是什麼樣的,接下來從孟老師的課裡,從淺入深的帶我學習了軟體工程的思想,其中包括子產品化代碼、可複用的代碼和回調函數等接口設計,以及可重入函數、線程安全等較深入的設計問題,另外,對于一個隻用過現成架構和習慣使用進階語言和編譯器的我也有這方面的提高,在c編碼實踐篇中,使用了一些簡單的linux指令還有vim這種上古神器,這對于今後的自學也是非常有幫助的,通過接觸這些簡單的linux指令,我打算過段時間抽出時間來仔細學習一下linux系統,在今後自己寫代碼時候,要注意孟老師提到的KISS、不要和陌生人說話、including pseuducode等原則。接下裡時這段時間課程的實驗報告

實驗樓:

1.實驗一-寫一個helloworld的小程式

通過這次試驗,通過這次實驗主要是使我了解到在linux下的一些基本操作,在linux下開發可以讓程式員徹底的掌控自己所要做的事情,之前看到linux與windows的對比就是說,在windows下開發者不知道怎麼去做,也不會對自己的控制負責,而使用linux可以讓你知道你在做什麼,而且自己會對自己的行為負責。除此之外還了解了github版本管理器,從此又多了一項技能。

2.實驗二:指令行菜單小程式1.0

代碼風格規範(簡約而不簡單),這次試驗實作了一個小的指令行菜單小程式,這次試驗的編碼不難,主要是要求掌握代碼風格的原則:簡明、易讀、無二義性,學習縮進、命名、注釋等代碼編排的風格規範,這些都是編碼最基礎的習慣,對今後的編碼很有幫助

3.實驗三:内部子產品化的指令行菜單小程式2.0

基本的子產品化設計(Separation of Concerns)注意代碼的業務邏輯和資料存儲之間的分離,即将系統抽象為兩個層級:菜單業務邏輯和菜單資料存儲,代碼的子產品化是軟體開發最基本的思想,開發人員需要把項目的各個子產品清楚的分開,子產品子產品之間的耦合度要盡量的小,對于維護和開發都是很好的幫助。此次實驗大大的加深了我對子產品化思想的了解。

實驗四:用可重用的連結清單子產品來實作指令行菜單小程式V2.5

本次實驗的主要目的是了解可重用接口的意義以及實作,将通用接口的設計注入到指令行的程式中,不僅實作通用接口的規範寫法,也要學會當一個特定程式是怎麼使用通用接口的,以及資料的定義是怎麼實作的

實驗五:用callback增強連結清單子產品來實作指令行菜單小程式V2.8:

可重用子產品的接口設計(callback函數)利用callback函數參數使Linktable的查詢接口更加通用,對使用者進行隐藏,注意接口資訊的隐藏

實驗七:将menu設計為可重用的子系統

子系統的可重用設計(夠用就好)為menu子系統設計接口,并寫使用者範例代碼來實作原來的功能并且使用make和make clean來編譯程式和清理自動生成的檔案,使menu子系統支援帶參數的複雜指令,并在使用者範例代碼中自定義一個帶參數的複雜指令;可以使用getopt函數擷取指令行參數。

課程總結

通過孟老師的軟體工程教學,從一個簡單的例子入手,慢慢完善我們的小程式,在這過程中體會到了一個軟體開發的标準和要求,如何高效的實作以及減少系統内部的邏輯耦合,用工程化方法建構和維護有效的、實用的和高品質的軟體,讓整個軟體系統“大而不亂”,一個優秀的程式員不僅僅是要簡簡單單的敲代碼,還要更深層次了解軟體開發的結構,讓我知道了優秀的程式員不隻要學習技術的實作,還要學習成熟的思想,這門課的收獲很大。

最後遺憾是時間比較短,隻有十周的時間,培養起來軟體工程的思想還是需要多多實踐,并且運用的實際的項目中去,希望自己可以通過今後其他課的學習中把進階軟體工程這門課融入到其他課去,慢慢了解它的好處。

最後感謝孟老師對我們的幫助和指導!

繼續閱讀