config、option、setting這三者在程序世界裡是什麼區別?

為什麼有的地方是config,有的地方是setting? options 可能容易區分一些。

或者,你們是如何管理項目中的配置文件的?


[201601270900-0800]修改了形參與實參。

[201601260810-0800]增加了形參與實參。

[201601251857-0800]增加了Argument和Preference。

[答案本體]

感謝輪子哥 @vczh 的成句:

Configure some options in the settings.

我來負責解釋。

程序所有的可變項叫做Settings。中文譯作設置。所有的設置都是「可選項」,Option(選項,不是期權),因為在程序世界裡沒有真的開放式問題只有選擇題(Option)。改變可選項的過程叫做Configure配置(動詞)。

附贈:

已確定的Configure結果叫做Configuration配置(名詞)。Configure和Configuration都經常縮寫為Config。一套既成的可遷移的實現特定目的的Configuration叫做Profile,例如手機里的靜音Profile、僅震動Profile。

Profile這個詞很不好翻,本意是指一系列對特定個體的不一定全面的描述,翻成輪廓更準確但顯然不符合習慣,所以常見翻譯是檔案。但是又顯然,說靜音檔案、僅震動檔案之類的也很不符合習慣,所以實際使用中Profile的翻譯跟著場景變化很大。例如藍牙的各種應用模式原文就是Profile,A2DP Profile什麼的,但翻譯成了模式。

Property屬性,意指實體Entity所具備的性質項目,包括但不限於Settings,還包括它的自然屬性。

Attribute也一般譯作屬性但我個人認為譯為特質可能更符合一點。這裡引用另一個成句:

Jeff Atwood has the attribute black for the property hair color.

(來源:meaning - What is the difference between "property" and "attribute"?)

也即是說,Property指例如身高、體重、三圍等屬性,而Attribute指身高180cm、體重180斤、三圍XXX等具體的實體的特質。

Parameter參數,函數的變數。

Argument同樣翻作參數,但更接近命令參數而非函數的參數。本意是指用來支撐觀點的論據,用在命令行語境下指命令的參數。

&中文中常用一套對應的術語形式參數(形參)和實際參數(實參)。很多人誤解認為Parameter和Argument各自為形參和實參,但這個認識是錯誤的,個人估計可能是老師亂教。形參與實參既可以是Parameter也可以是Argument,和上面的描述一樣取決於使用環境。區分點是形參是Formal Parameter/Argument,而實參是Actual Parameter/Argument。&

根據Java的官方說明,以上一段內容並不正確:

Parameters refers to the list of variables in a method declaration. Arguments are the actual values that are passed in when the method is invoked.

(來源:https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html)

也就是說,Parameters指方法定義時的參數(形參),而Arguments指實際傳遞給方法的參數(實參)。

個人不喜歡這種強行修改語源的定義,不過看來已經是官方確定的用法。據說其他語言也有類似的定義。

Preference偏pian1好hao4,Prefer的名詞(具體詞法上叫個什麼詞我不記得了),指設置中依賴於用戶喜好的部分,例如軟體的皮膚、快捷鍵等。

歡迎在評論中添加需要翻譯的此類術語。


Configure some options in the settings.


輪子兄造的句不錯。

從字面意義來說Config和Setting有點類似。

Config一般是配置,Setting一般是設置。

其實差不了多少。

但硬要區分的話,Config更容易聯想為給開發人員使用的,用來避免一些Hard Code的可參數化的設定。

Setting更偏向於使用者或者運維人員使用的設定。比如設置一個埠號,IP地址類似的。

而Option是選項的意思。比如我們設置Socket的時候可以選同步或者非同步的模式。

如何管理?

比如http://ASP.NET Core裡面的Sample就不錯。你可以指定多個Settings例如

appsetting.json, appsetting.Development.json

appsettings.Prodution.json。可以很好的解決版本庫的管理問題。

在使用上我喜歡定義一個config類。然後將配置文件在系統啟動的時候或者第一次使用它的時候載入到(反序列化)到這個類的對象。用起來就很方便啦。


you"ve got three options for this setting in the config (file)


參數、設定、選項、配置 在中文裡也沒多少區別


config 一般用於系統全局環境的設置

option 一般用於功能塊中不同值切換不同功能

setting 我比較少用! 用也是在一個模塊中,用來設置該模塊默認的設置!

ps: 我認為題主的這個問題很棒,許多人都潛移默化的用錯了這三個概念!雖然他們都可以理解為 設置 或者 配置! 但我認為他們還是有很大的使用差別! 命名正確能讓人省好多事!

還有 模塊命名 module model


config必選,option可選,setting可折騰


Config 和 Settings 比較好區分,現在很少用到Settings了,比較常見的搭配是Set Config, Get Config, Set Param, Get Param. Config 和 Param 一般情況下是通用的,但也有些微小的區別,Config 偏動態,Param 偏靜態。就醬。


configure和setting應該差不多,好像在界面上配置多用setting,配置文件configure和setting都見過。

option多指配置configure或setting中的某一項,命令行的參數有時候叫option,option還有選項的意思。


config到底就是一個人map, option一般是命令行參數,setting是啥?


A setting is a pair of simple name and value.

A set of settings is also called a configuration.

Program Options can be implemented With settings.

Sometimes property is found at higher level while attribute at lower level.

Profile is similar to configuration.


config和settings可以互換

注意是config單數和setting_s_複數!!!!

要是誰給我弄個OPTION常量那在我看來簡直就和用拼音寫類名變數名用111給文件起名一樣 完全不能忍


假若現在這兒有一台電腦,你想搭建一個wamp開發環境。

config是就是配置這個wamp開發環境中「配置」的意思;

setting就是「設置」你這個系統中一些系統功能的意思;

而option就是這個wamp開發環境裡面有一個軟體Apache,你要使用一些功能,那麼這時候就需要通過option了來進行操作了。


start, begin怎麼說


profile


設置, 選項, 個人設置, 偏好設置.....


對於我來說,他們代表的意思就是

單詞

單詞

單詞


隨意嘍


還是喜歡 profile,發音比較好聽,而且暗示了未來可能添加 --profile=xxx 選項,用來切換工況,顯得比較高端~

ps:

請不要用 config 這個詞,請使用 configuration,這是個品位問題。

ps2:

把 configuration 封裝成類並把每個屬性讀寫都定義成成員函數的,都屬於工作不飽和,時間多了閑的。誰有那麼多閑工夫去擴展你那個 configuration 類?就為了加個屬性?

就算不考慮便捷程度,這麼設計也是錯的。考慮到這裡可能使用單例模式,沒人會去繼承 configuration 類的,只要改配置格式,就要直接修改你這個類的源文件。這種修改理論上會影響所有模塊,你說測還是不測?


設置,配置,設定,參數,選項,Preference, Settings, Configuration, Parameters,Options,隨便用,大家開心就好。


沒什麼區別,的地得


推薦閱讀:

哈爾濱理工大學軟體工程專業怎麼樣?
你作為一名程序員,是如何提高英語的?
父母非得讓學電力專業,可我很想學軟體工程,怎麼辦?
二本學校的軟體工程學生出來拼得過北大青鳥嗎?
立志於軟體開發,選專業是軟體工程好,還是計算機科學與技術?

TAG:編程 | 軟體工程 |