一:前言
無規矩不成方圓,乙個規範化的目錄結構,能夠讓程式就有更高的可讀性。如果是乙個生產專案的話,良好的**風格和目錄結
構,能夠極大提高專案的可維護性(畢竟乙個專案不是用一次就不用了)。總而言之,我們設計乙個層次清晰的目錄結構,就是
為了達到下面的兩個目的
可讀性高:不熟悉這個專案的人,一眼就能看懂目錄結構,知道程式的啟動指令碼是哪個,測試目錄是哪個,配置檔案在**,從而更加快速的了解這個專案
可維護性高:定義好規則後,維護者能夠明確知道,新增的檔案和**應該放在什麼目錄下,隨著時間的推移,**/配置的規模越來越大,專案結構不會混亂,仍然能夠組織良好
二:目錄組織方式
常見的目錄組織形式,假設你要建立乙個名為foo的專案
foo/
|-- bin/
| |-- foo
||-- foo/
| |-- tests/
| | |--init.py
| | |-- test_main.py
| || |--init.py
| |-- main.py
||-- docs/
| |-- conf.py
| |-- abc.rst
||-- setup.py
|-- requirements.txt
|-- readme
2.1 目錄解釋
1.bin/: 存放專案的一些可執行檔案,當然你可以起名script/之類的也行
2.2 readme中的內容2.foo/: 存放專案的所有源**。(1) 源**中的所有模組、包都應該放在此目錄。不要置於頂層目錄。(2) 其子目錄tests/存放單元測試**; (3) 程式的入口最好命名為main.py。
3.docs/: 存放一些文件。
4.setup.py: 安裝、部署、打包的指令碼
5.requirements.txt: 存放軟體依賴的外部python包列表。
6.readme: 專案說明檔案。
軟體定位,軟體的基本功能。
執行**的方法: 安裝環境、啟動命令等。
簡要的使用說明。
**目錄結構說明,更詳細點可以說明軟體的基本原理。
常見問題說明
2.3 setup.py說明
乙個專案要有乙個安裝部署工具,讓**盡快跑起來,實現"複雜的東西自動化,能自動化的東西一定要自動化」的想法
setup.py可以把安裝依賴等各種事情自動化起來,提高效率,減少出錯的概率。
當然寫乙個安裝指令碼(deploy.sh)替代setup.py也是很好的做法
2.4 requirements.txt說明
存在的目的下面兩點:
方便開發者維護軟體的包依賴。將開發過程中新增的包新增進這個列表中,避免在setup.py安裝依賴時漏掉軟體包。
方便讀者明確專案使用了哪些python包。
這個檔案的格式是每一行包含乙個包依賴的說明,通常是flask>=0.10這種格式,要求是這個格式能被pip識別,這樣就可以簡單的通過 pip install -r requirements.txt來把所有python包依賴都裝好了
2.5 關於配置檔案的說明
上面的目錄介紹中:沒有將conf.py放在原始碼目錄下,而是放在docs/目錄下
常用專案使用方法:
配置檔案寫在乙個或多個python檔案中,比如此處的conf.py。
專案中哪個模組用到這個配置檔案就直接通過import conf這種形式來在**中使用配置。
更好的方案
模組的配置都是可以靈活配置的,不受外部配置檔案的影響。
程式的配置也是可以靈活控制的
證明:nginx、mysql這些程式都可以自由的指定使用者配置。
通過給main.py啟動引數指定配置路徑的方式來讓程式讀取配置內容。當然,這裡的conf.py你可以換個類似的名字,比如
settings.py。或者你也可以使用其他格式的內容來編寫配置檔案,比如settings.yaml之類的。
三:總結
好的目錄結構給人心曠神怡的感覺,成為大佬的必經之路。以後慢慢學,持續總結更新。
軟體目錄結構規範
金角大王 為什麼要設計好目錄結構?設計專案目錄結構 就和 編碼風格 一樣,屬於個人風格問題。對於這種風格上的規範,一直都存在兩種態度 一類同學認為,這種個人風格問題 無關緊要 理由是能讓程式work就好,風格問題根本不是問題。另一類同學認為,規範化能更好的控制程式結構,讓程式具有更高的可讀性。我是比...
軟體目錄結構規範
專案目錄結構 是屬於 可讀性和可維護性 的範疇,我們設計乙個層次清晰的目錄結構,就是為了達到以下兩點 所以,保持乙個層次清晰的目錄結構是有必要的。更何況組織乙個良好的工程目錄,其實是一件很簡單的事兒。關於如何組織乙個較好的python工程目錄結構,已經有一些得到了共識的目錄結構。在stackover...
軟體目錄結構規範
學習 python 目錄 專案目錄結構 是屬於 可讀性和可維護性 的範疇,我們設計乙個層次清晰的目錄結構,就是為了達到以下兩點 所以,保持乙個層次清晰的目錄結構是有必要的。更何況組織乙個良好的工程目錄,其實是一件很簡單的事兒。關於如何組織乙個較好的python工程目錄結構,已經有一些得到了共識的目錄...