ScarShow

< IS >

良好的專案檔案編排

在看過各種語言以及各種專案之後,對於專案資料夾結構的編排有了一些想法,可能對於一些人來說覺得意義不大,將檔案整齊排放是個好習慣。

良好的結構讓檔案一目了然有助於開發,你可能會說習慣成自然,專案通常不會只有一個人開發也會有交接的問題,養成好習慣把結構整理乾淨。

一般框架或工具的官方文件,亦或者是使用 CLI 工具所產生出來的專案,通常都會有既定的結構存在,通常我在開發時不會照單全收,通常還會再進一步修改。

編排

基本上資料夾的結構編排,通常是遵循一個大方向將檔案擺放整齊,以一般網站開發的專案來說通常會有以下幾種類型的檔案:

  1. 原始碼
    • 專案本身的程式碼
  2. 說明文件
    • 程式碼說明、應用程式接口或是第三方套件的說明文件
  3. 測試文件
    • 程式碼本身的測試
  4. 第三方套件與設定
    • 可能來自 npmbowercomposer 或是 gem 的設定文件以及安裝目標的資料夾
  5. CI/CD 設定
    • 持續整合、交付或是部署的設定檔
  6. Module Bundler
    • 像是 webpack 或是 bowserify 之類的工具
  7. Task Runner
    • 輔助開發的行程工具例如 gulpgrunt
  8. 輸出檔
    • 編譯好的檔案,或是可用作部署的檔案
  9. 暫存檔
    • 一些開發過程中會產生的暫時性檔案
  10. 其它
    • 根據開發不同可能會用到的其它檔案

檔案

大致上的編排方法是將 第三方套件設定CI/CD 設定Module BundlerTask Runner,這類的檔案放置在專案的根目錄中,主要原因為:

  1. 這類的檔案通常關乎到專案本身的設定
  2. 輔助開發的工具通常是將設定放置於此

資料夾

接下來是將 原始碼說明文件測試程文件輸出檔暫存檔 分別獨立出一個資料夾個別存放該檔案。

這幾類的檔案占了專案大部分,每種類型的檔案用途都非常明確,所以獨立存放會是個好選擇也方便管理。

命名

上面說到了擺放的原則,那接下來資料夾的命名也是很重要,除了放置在專案根目錄有既有名稱之外的資料夾基本上都是自由命名,但就跟寫程式一樣參數及函式的命名一樣要淺顯易懂。

所以通常我會這樣命名:

  1. 原始碼
    • 通常會使用 src 或是 source,我使用前者居多。如果是程式碼本身結構所使用的資料夾,一般參考框架本身的建議
  2. 說明文件
    • 一般使用 docs 要寫 manual 也行,內部名稱結構依據閱讀方式自行規劃
  3. 測試文件
    • 就使用 tests 了,內部資料夾一樣也是根據工具的規範
  4. 輸出檔
    • 這邊可以是 releasedist 或是 output,如果最後編出的是指令的話可以使用 bin
  5. 暫存檔
    • tmp 或是 temp

好處

對於個人或是團隊的助益有以下幾點:

  1. 降低閱讀門檻
  2. 利用開發
  3. 易於管理
  4. 潔癖覺得舒服
  5. 也是重構的其中一環