複製鏈接
請複製以下鏈接發送給好友

約定優於配置

鎖定
約定優於配置(convention over configuration),也稱作按約定編程,是一種軟件設計範式,旨在減少軟件開發人員需做決定的數量,獲得簡單的好處,而又不失靈活性。
中文名
約定優於配置
外文名
convention over configuration
又    稱
按約定編程
性    質
一種軟件設計範式

目錄

約定優於配置簡介

本質是説,開發人員僅需規定應用中不符約定的部分。例如,如果模型中有個名為Sale的類,那麼數據庫中對應的表就會默認命名為sales。只有在偏離這一約定時,例如將該表命名為"products_sold",才需寫有關這個名字的配置。
如果您所用工具的約定與你的期待相符,便可省去配置;反之,你可以配置來達到你所期待的方式。 [1] 

約定優於配置動機

設計不好的框架通常需要多個配置文件,每一個都有許多設置。這些配置文件為每一個項目提供信息説明從URL到將類映射到數據庫表的各種信息。大量包含太多參數的配置文件通常是過度複雜的應用設計的指標(代碼壞味道)
例如,在知名的Java對象關係映射框架Hibernate的早期版本中,將類及其屬性映射到數據庫上需要是在XML文件中的描述,其中大部分信息都應能夠按照約定得到,如將類映射到同名的數據庫表,將屬性分別映射到表上的字段。後續的版本拋棄了XML配置文件,而是使用這些恰當的約定,對於不符合這些約定的情形,可以使用Java 標註來説明(參見下面提供的JavaBeans規範)。 [2] 

約定優於配置使用

許多新的框架使用了約定優於配置的方法,包括:SpringRuby on Rails,Kohana PHP,GrailsGrokZend FrameworkCakePHPsymfonyMavenASP.NET MVCWeb2py(MVC),Apache Wicket
這是一個古老的概念, 甚至在Java類庫中也可以找出這一概念的蹤跡。例如,JavaBean規範非常多的依賴這一概念。下面摘錄JavaBeans 1.1版規範的一段:
按照一般的規則,我們不希望造出一個奇怪的java.beans.everything類,其他類需要從該類派生。而是希望在運行時JavaBeans為一般的對象提供缺省的行為特徵,但是允許對象通過繼承特定的java.beans.something接口來覆蓋缺省的行為特徵的一部分。 [2] 

約定優於配置Java註解

Java註解又稱Java標註,是Java語言5.0版本開始支持加入源代碼的特殊語法元數據
Java語言中的類、方法、變量、參數和包等都可以被標註。和Javadoc不同,Java標註可以通過反射獲取標註內容。在編譯器生成類文件時,標註可以被嵌入到字節碼中。Java虛擬機可以保留標註內容,在運行時可以獲取到標註內容。 當然它也支持自定義Java標註。 [2] 
參考資料
  • 1.    a description of configuration with the goal of convention http://grails.org/Unified+Configuration, and relationship to bean referencing from spring
  • 2.    C2 Wiki (2009-09-01). Too Many Parameters. C2 Wiki, 1 September 2009.