回答
約定優於配置(也稱爲編碼慣例)是一種軟件設計範例,旨在減少開發人員需要做出的決策數量,獲得簡單性,但不一定會喪失靈活性。
該短語實質上意味着開發人員只需要指定應用程序的非傳統方面。例如,如果模型中有Sale類,則數據庫中的相應表格默認稱爲銷售。只有當人們偏離這個慣例時,例如調用表「products_sold」,才需要編寫關於這些名稱的代碼。
當您使用的工具實現的慣例符合您所期望的行爲時,您將享受無需編寫配置文件的好處。當你期望的行爲偏離實施的慣例時,你就可以配置你想要的行爲。
很多約定在這裏:
- 如何命名HTML元素,以便他們從HTTP請求參數方便;
- 如何將對象屬性與數據庫中的表名和列名關聯起來;
- 如何將項目安排到目錄/包中;
這就是當你發現自己解決特定風格的常見問題時你所做的。您注意到相似之處並將它們編入一些自動化方案。
這意味着如果您堅持使用您所使用的任何基於約定的框架所定義的某些編碼約定,則可免費獲得許多功能。換句話說,如果您根據框架的期望構建應用程序,可以節省大量工作。
按照慣例查找編碼的優缺點將是一個好主意。
你的答案太抽象了,沒有例子。它只是重申別人所說的話。 – 2015-06-25 20:06:46
在Grails的上下文中,「按照約定編碼」意味着很多(繁瑣和重複的)顯式代碼和/或配置被簡單的命名和目錄結構約定取代。例如:
- 任何類,它的名字在grails-app/controllers目錄用的控制器端自動爲一個Spring控制器和封鎖在其將被綁定到的網址定義 - 你不必在此配置XML文件,就像你在使用純粹的Spring時所必須的一樣。
- 對於taglibs(grails-app/taglib目錄)也是如此 - 不再需要繁瑣的TLD文件!
- grails-app/domain中的域類可能具有最多的「慣例魔術」,自動映射到自動生成的數據庫模式 - 數據庫表和列名稱通常與域屬性名稱相同。
編碼按照慣例VS編碼的配置: 您擁有的東西一定配售或命名約定,所以你不必明確地告訴節目裏的東西還是什麼這就是所謂的想法。
例如,在ASP.Net MVC中,存儲視圖的位置以及調用方式的約定。這意味着當您的代碼指示服務器返回視圖時,運行時將在特定文件夾中查找具有特定命名結構的視圖。爲了更加清楚,請參見this pdf中的第20頁。
另一個例子是命名方法的約定。例如,在事件驅動的語言中,您可以選擇顯式聲明哪個方法處理哪些事件,或者您可以依賴命名約定 - 比如..._ OnOpen或... OnClick,然後依賴運行時找出調用給定事件的正確方法。
請參閱Convention over Configuration。這是設計工具或框架以將最常見的配置選項作爲默認配置的概念,因此絕大多數用戶不需要配置。
今天的維基百科文章並不是一個很好的例子。這裏應該考慮其他答案。 – GaTechThomas 2015-01-15 23:54:43
- 1. 什麼是較好的編碼習慣?
- 2. 什麼是慣用代碼?
- 3. 按照慣例映射所有實體
- 4. 如果條件最好的編碼習慣是什麼?
- 5. 什麼是用serde_json編碼迭代器的慣用方法?
- 6. JavaScript和PHP文件名編碼慣例
- 7. 註冊按照慣例和攔截導致ResolutionFailedException
- 8. 在映射按照慣例映射組件NHibernate 3.3
- 9. 按照慣例,「安裝」會更新它安裝的目標嗎?
- 10. 爲什麼Object.hashCode()不遵循Java代碼慣例
- 11. 這是不好的編碼習慣嗎?
- 12. 什麼是輸入驗證的Rails慣例?
- 13. NuGet:Windows Phone 7.1的文件夾慣例是什麼?
- 14. Grails項目中Java單元測試的慣例是什麼?
- 15. 什麼是反映實例方法的慣用Groovy方法?
- 16. truevision3d中的歐拉旋轉慣例是什麼?
- 17. 這是什麼編碼?
- 18. 它是什麼編碼?
- 19. 這是什麼編碼?
- 20. initWithContentsOfURL什麼是編碼?
- 21. 什麼是字符編碼?
- 22. 這是什麼編碼?
- 23. 什麼是base32編碼?
- 24. 什麼是更好的編碼習慣,使用工具或方法
- 25. C#中的良好編程習慣是什麼使代碼更易於理解?
- 26. .htaccess代碼,這個例子很好的編碼習慣嗎?
- 27. 學習編寫慣用c#的最佳資源是什麼?
- 28. 什麼是模擬進化類的最佳編程習慣?
- 29. 良好的編碼習慣
- 30. 是否有「嘗試」慣例?
今天的維基百科文章並不是一個很好的例子。這裏應該考慮其他答案。 – GaTechThomas 2015-01-15 23:54:03