還記得剛開始寫程序的時候,那時候用的是PHP,沒有使用任何框架,所有文件幾乎堆在一兩個文件夾中,雜亂不堪,一旦項目變大,光找找對應的文件都得花費一大堆時間,嚴重影響效率,而且可擴展性為零,更別說讓別人看你的代碼了,只怕你自己都會看暈掉。
所以,擁有一個結構清晰的文檔結構對一個軟件項目來說至關重要,清晰的文檔結構使得我們的源碼可擴展性高,容易理解和閱讀,也能提高我們寫代碼的效率。
例如,我們使用的各種框架都擁有良好的文檔結構,各個模塊各司其職,將相應的代碼文件放入對應模塊的文件夾中,有條有理,當然,在框架的基礎上還需要我們根據實際情況來擴展定制我們自己的文檔結構。
程序設計的時候有一種叫“MVC”的模式,對應的文檔結構也會遵循這種模式來進行設計,下面就介紹基于“MVC”的一種通用軟件項目結構設計。
結構圖如下:
入口文件
單一入口模式的入口文件,會對請求進行路由,轉發到對應的控制器方法,go里面的一般是 main.go ,php中的就是 index.php 了。
conf
配置文件夾,存放系統配置相關參數,比如redis地址配置、數據庫地址配置、日志結構配置、rpc配置等
controller
控制器,MVC中的C,參數輸入輸出的入口,入口文件將路由解析到具體的控制器方法進行處理,控制器再去調用相關服務獲取結果,輸出到前端
data
存放一些數據文件,比如產生的日志文件,上傳文件緩存區等
helpers
可以將全局使用到的函數放在這里,即輔助函數
model
模型,MVC中的M,應用程序中用于處理應用程序數據邏輯的部分,通常模型對象負責在數據庫中存取數據,但在細分出一層專門處理邏輯的service層之后,model一般只設置表數據結構,整合一些通用數據庫操作函數
service
服務層,專門用來處理邏輯的一層,它的直接上級是controller,輸入數據來自controller,輸出數據返回給controller
public
公共層,或者叫 common,一般用來存放靜態文件,比如js、css、圖片等
views
視圖,MVC中的V,存放html,xml等前端文件
test
測試用例,日常編寫測試用例是一個好習慣