[英]What's the best way to set 'deep' configuration options?
假設有一個功能需要將配置設置作為輸入,但是從頂層“ main”功能開始,該功能被稱為多個層次。
就最佳編程實踐而言,將此設置傳遞給函數的最佳方法是什么?
一種方法是僅使用全局變量並將其設置在頂級函數中,然后在目標函數中讀取它,但是我認為這被認為是不好的編程習慣。
另一種方法是將設置作為參數從頂部一直傳遞到幾個中間函數,一直傳遞到最終目標函數。 盡管這看起來非常乏味,而且可能容易出錯。
還有其他方法嗎?
您可以使用選擇的語言來回答問題,但是僅供參考,我使用的是C / C ++,Perl和Matlab。
我喜歡單例對象進行配置。 它是一個共享資源,只能有一個實例。 當您嘗試創建一個新對象時,您將獲得現有對象。 您不必擔心全局變量,子例程或方法參數。 只需獲取一個新的配置對象並在需要時使用它即可。
C ++的“四人幫”中有一個示例。
留下深層調用堆棧的過程編程風格將使答案變得平庸。
重塑您的程序以利用現代的面向對象的優勢。 Perl角色構成平坦的層次結構。 這樣,配置只是一個屬性。
在matlab中,我總是有一個腳本allParam.m,在其中設置所有參數。
如果一個函數需要這些參數之一,則只需調用腳本並進行設置即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.