1. 程式人生 > 實用技巧 >Python三個處理excel表格的庫

Python三個處理excel表格的庫

程式碼中的軟體工程

本篇文章主要基於孟寧老師上課的內容以及實驗程式碼完成。我在本科期間沒有系統學習過軟體工程這門課程,就算了解過也是一知半解,在上了孟老師這門高階軟體工程課後,我對軟體工程有了更深刻的認識和理解,故藉此機會總結這幾次上課內容。

本次總結首先對老師給的原始碼進行閱讀分析,並且結合程式碼分析其中的軟體工程方法、規範或軟體工程思想。

一、環境配置(win10)

第一步,vscode中安裝 C/C++擴充套件

第二步,安裝C/C++編譯器和偵錯程式
因為在vscode中c/c++擴充套件部分不包含C++編譯器偵錯程式,所以你需要安裝這些工具。為了在不同環境保持一致,我們選擇了MinGW,具體安裝連結是

MingGW下載

安裝好後新增環境變數,之後在cmd中執行gcc -v檢查是否安裝成功,若成功則會出現下圖提示

第三步,
在桌面建立新的專案資料夾advanceSE,並且在該資料夾內開啟powershell輸入code .來開啟VScode,此時VScode沒有任何檔案如下圖所示

在該空白專案中建立hello.cpp,並且輸入測試內容,如下圖所示

之後開啟Debug除錯,具體步驟如下

當點選第三步C++(GDB/LLDB)後會彈出下圖框,點選g++.exe即可

之後可以看到除錯過程中成功輸出“Hello,world”

而在專案目錄中,多出了.vscode資料夾,資料夾下多出launch.json

以及tasks.json兩個json檔案,如下圖所示

二、專案執行(linux)

在linux上安裝好gcc,安裝gcc命令為yum -y install gcc gcc-c++ kernel-devel,安裝好在從前面連結中下好的專案menu-mastermake編譯構建,如下圖所示,再輸入./test即可執行

三、專案程式碼分析

1、模組化設計

模組化(Modularity)是在軟體系統設計時保持系統內部各部分相對獨立,以便每一個部分都可以被獨立地進行設計和開發。模組化軟體設計的方法如果應用的比較好,最終每一個軟體模組都將只有一個單一的功能模組,並相對獨立於其他軟體模組,使得每一個軟體模組都容易理解容易開發。

在本次命令列選單專案中,將儲存命令的資料結構以及操作單獨放到linklist.h/linklist.c檔案中,而在linklist檔案內又對外開放介面,menu.c利用介面實現選單的業務邏輯功能,最後實現如下圖所示的模組化

2、可重用介面

在軟體開發中,由於不同的環境和功能要求,我們可以通過對以往成熟軟體系統的區域性修改和重組,保持整體穩定性,以適應新要求。這樣的軟體稱為可重用軟體。目的是節約軟體開發成本,真正有效地提高軟體生產效率。

重用分為消費者重用和生產者重用,消費者重用是指軟體開發者在專案中重用已有的一些軟體模組程式碼,以加快專案工作進度。生產者重用需要重點考慮設計通用的模組,通用的介面等因素。

此外,介面還包含了五大要素,分別是:1)介面的目的;2)介面使用所需滿足的前置條件或假定條件;3)使用介面的雙方遵守的協議規範;4)介面使用之後的效果,一般稱為後置條件;5)介面所隱含的質量屬性

下面是menu的一個介面例子

3、可重入函式與執行緒安全

可重入函式指可以被多個任務併發使用,而不必擔心資料發生錯誤。與之相反的不可重入函式則要求不能超過一個任務來共享,除非能保證函式的互斥。而執行緒安全又與可重入密切相關,為了保證執行緒安全,我們在必要時需要通過“上鎖”來保護臨界資源。

那麼對於我們的menu專案,有哪些是可重入函式、哪些不可重入呢?下面為這些函式一一分析
1)CreateLinkTable

上圖函式的主要功能是建立連結串列結構,不同執行緒之間建立連結串列結構、並且申請空間是相互不衝突的,所以該函式是可重入函式。
2)AddLinkTableNode

上圖函式的功能是在連結串列中新增新節點,我們可以看到該函式有一段加鎖pthread_mutex_lock和解鎖pthread_mutex_unlock的過程,該過程能保證在連結串列中新增節點時不會有其他也準備改變連結串列的執行緒干擾,其他執行緒會因為加鎖而被阻塞,由此可見
AddLinkTableNode是可以被多個執行緒訪問的,故為可重入函式。除該函式外,類似的還有DeleteLinkTableDelLinkTableNoded等對連結串列修改的函式都為可重入函式。
3)SearchLinkTableNode

該函式功能為從連結串列中查詢相應節點,只讀不寫,故該函式為可重入函式,類似的還有GetLinkTableHeadGetNextLinkTableNode

四、總結

以上是我通過閱讀menu專案原始碼得到的總結,在我們平常的程式碼編寫中合理的註釋、簡潔易讀的程式碼風格將有助於程式設計師們的閱讀和理解,同時能幫助我們溝通;模組化以及介面化可以讓我們的程式碼不會顯得冗餘、臃腫,它們能讓我們程式碼的各功能分工更明確、更容易排錯;可重入以及執行緒安全保證我們程式資料安全又能共享進行。總之這次課程收穫很大,不僅僅是程式碼規範、安全,更重要的是對於程式碼的理解和思維,在這裡再次感謝孟寧老師為我們精心準備的高軟課程。