文章來自維基百科
約定優(yōu)于配置(convention over configuration),也稱作按約定編程,是一種軟件設(shè)計(jì)范式,旨在減少軟件開發(fā)人員需做決定的數(shù)量,獲得簡單的好處,而又不失靈活性。
本質(zhì)是說,開發(fā)人員僅需規(guī)定應(yīng)用中不符約定的部分。例如,如果模型中有個(gè)名為Sale的類,那么數(shù)據(jù)庫中對(duì)應(yīng)的表就會(huì)默認(rèn)命名為sales。只有在偏離這一約定時(shí),例如將該表命名為”products_sold”,才需寫有關(guān)這個(gè)名字的配置。
如果您所用工具的約定與你的期待相符,便可省去配置;反之,你可以配置來達(dá)到你所期待的方式。
設(shè)計(jì)不好的框架通常需要多個(gè)配置文件,每一個(gè)都有許多設(shè)置。這些配置文件為每一個(gè)項(xiàng)目提供信息說明從URL到將類映射到數(shù)據(jù)庫表的各種信息。大量包含太多參數(shù)的配置文件通常是過度復(fù)雜的應(yīng)用設(shè)計(jì)的指標(biāo)(代碼壞味道)。
例如,在知名的Java對(duì)象關(guān)系映射框架Hibernate的早期版本中,將類及其屬性映射到數(shù)據(jù)庫上需要是在XML文件中的描述,其中大部分信息都應(yīng)能夠按照約定得到,如將類映射到同名的數(shù)據(jù)庫表,將屬性分別映射到表上的字段。后續(xù)的版本拋棄了XML配置文件,而是使用這些恰當(dāng)?shù)募s定,對(duì)于不符合這些約定的情形,可以使用Java 標(biāo)注來說明(參見下面提供的JavaBeans規(guī)范)。
許多新的框架使用了約定優(yōu)于配置的方法,包括:Spring,Ruby on Rails,Kohana PHP,Grails,Grok,Zend Framework,CakePHP,symfony,Maven,ASP.NET MVC,Web2py(MVC),Apache Wicket。
這是一個(gè)古老的概念, 甚至在Java類庫中也可以找出這一概念的蹤跡。例如,JavaBean規(guī)范非常多的依賴這一概念。下面摘錄JavaBeans 1.1版規(guī)范的一段:
按照一般的規(guī)則,我們不希望造出一個(gè)奇怪的java.beans.everything類,其他類需要從該類派生。而是希望在運(yùn)行時(shí)JavaBeans為一般的對(duì)象提供缺省的行為特征,但是允許對(duì)象通過繼承特定的java.beans.something接口來覆蓋缺省的行為特征的一部分。
Maven約定的項(xiàng)目結(jié)構(gòu)如下圖:
聯(lián)系客服