每一個小人物的心中都有一個成爲大人物的夢想,配置文件也不例外。
當咱們仍是編程新手的時候,常常會有一些前輩告訴咱們:軟件開發中要將一些可能變更的參數放到配置文件中,這樣就能夠在不改變代碼且無需從新部署程序的狀況下改變程序行爲。html
正如前輩告誡咱們的那樣,『將一些可能變更的參數放到配置文件中』,可使得程序更加靈活,適應多種業務場景。因而咱們謹遵他們的教誨,在平常的開發過程當中,將數據庫鏈接參數,日誌路徑等線上環境相關的易變值加入配置文件。的確好用,當咱們的DB想要擴容,當咱們的日誌存儲想要變動,僅需修改配置文件便可。如此好用,某一天咱們可能也會將軟件中的某一個功能特性開關移步到配置文件中。不止於此,咱們開始將更多的可變參數寫在配置文件中,已達到更高的靈活度,更有甚者將一些業務邏輯操做從代碼中挪到配置文件中。因而,某一天咱們忽然發現本身大部分的時間並非在寫代碼,而是寫配置文件。數據庫
每一個工具都想發展成爲一個平臺,無獨有偶,每個配置文件都想成爲一個DSL(Domain Specific Language,領域專用語言)。編程
正如第一部分描述的那樣,起初配置文件中只是一些與代碼執行環境有關的參數配置(供系統管理員使用),到最後,隨着一些『業務行爲』也被加入到配置文件中,它則慢慢地進化成爲了一種DSL。但並非每個軟件系統都須要一套本身的DSL,也不是每個DSL都會被設計地那麼易懂與易用。有些僅僅是增長了複雜度。數據結構
有人發明了『配置文件複雜讀時鐘』的概念來描述配置文件這樣的一個發展過程,十分貼切。
編程語言
因而,軟件開發人員從面向代碼編程變成了面向配置文件編程。其實,這個時期,配置文件儼然已變成了一種編程語言。工具
那麼回過頭來想想,在業務發展過程當中,衍生出了一門配置編程語言,這有必要嘛?學習
配置文件有時候的確很好用,能夠幫助軟件開發人員快速應對一些變化。可是若是過分依賴配置文件,卻不得不提它帶來的缺陷:編碼
本質上:配置文件與代碼表明瞭兩種編程範式:聲明式(Declarative programming)與命令式(Imperative programming)。spa
當前,幾乎全部計算機的硬件工做都是命令式的,也幾乎全部計算機的硬件都是設計來運行機器代碼,使用命令式的風格來寫的。從這點來說,大部分場景使用代碼實現業務邏輯要優於配置文件。設計
要回答這個問題,須要對配置文件的目的做出一個定義。
對於大部分的軟件系統而言,配置文件是爲軟件系統的管理員而準備的,方便他們正確而高效地使用軟件系統。這樣的場景下,應強於代碼而弱於配置文件。
這裏總結了一些tips,僅供參考:
凡事終有例外。如這樣的一個場景:應用程序須要容許用戶(使用者)動態地配置複雜的規則(郵件用戶想要定義複雜的郵件過濾規則),另一些成熟的商業規則系統中也經常使用配置文件(做爲DSL)解決一些特定領域的問題。
https://stackoverflow.com/que...
https://zh.wikipedia.org/wiki...
https://zh.wikipedia.org/wiki...
https://blog.urth.org/2011/01...
http://mikehadlow.blogspot.co...
https://hackernoon.com/config...
http://taint.org/2011/02/18/0...