热门问题
时间线
聊天
视角

約定優於配置

来自维基百科,自由的百科全书

Remove ads

約定優於配置convention over configuration[1],也稱作按約定編程[2],是一種軟體設計範式英語Design paradigm,旨在減少軟體開發人員需做決定的數量,獲得簡單的好處,而又不失靈活性。

本質是說,開發人員僅需規定應用中不符約定的部分。例如,如果模型中有個名為Sale的類,那麼資料庫中對應的表就會默認命名為sales。只有在偏離這一約定時,例如將該表命名為"products_sold",才需寫有關這個名字的配置。

如果所用工具的約定與期待相符,便可省去配置;反之,可以配置來達到所期待的方式。

動機

設計不好的框架通常需要多個配置文件,每一個都有許多設置。這些配置文件為每一個項目提供像是URL,或是將類映射到資料庫表的各種信息。大量包含太多參數的配置文件通常是過度複雜的應用設計(代碼壞味道)。[3]

例如,在知名的Java對象關係映射框架Hibernate的早期版本中,將類及其屬性映射到資料庫上需要是在XML文件中的描述,其中大部分信息都應能夠按照約定得到,如將類映射到同名的資料庫表,將屬性分別映射到表上的欄位。後續的版本拋棄了XML配置文件,而是使用這些恰當的約定,對於不符合這些約定的情形,可以使用Java 標註來說明(參見下面提供的JavaBeans規範)。

使用

Thumb
項目的目錄結構展示了Maven所約定了原始碼的位置,只需配置很少的信息就可以自動完成編譯,測試和打包等工作。

許多新的框架使用了約定優於配置的方法,包括:Spring[4]Ruby on Rails[5],Kohana PHP,Grails英語Grails (Framework)[6]GrokZend FrameworkCakePHP英語CakePHPsymfonyMavenASP.NET MVCWeb2py(MVC),Apache Wicket

這是一個古老的概念, 甚至在Java類庫中也可以找出這一概念的蹤跡。例如,JavaBean規範非常多的依賴這一概念。下面摘錄JavaBeans 1.1版規範的一段:[7]

一般來說,我們不希望造出一個碩大無朋的java.beans.everything類用來派生其他類,而是希望JavaBeans運行時為一般的對象提供預設的行為特徵,但是允許對象通過繼承特定的java.beans.something接口來覆蓋預設的行為特徵的一部分。[8]

Remove ads

參考文獻

外部連結

Loading content...

參見

Loading content...
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads