Django設計哲學
這裡將介紹開發者在創造榛果(Django)之初所使用的基本哲學,目的是讓使用者解釋過去,指引未來,達到溫故知新、鑑往開來的目標。
整體的設計哲學
鬆耦合(Loose coupling)
設計榛果(Django)網頁框架的基本目標就是:鬆耦合(Loose coupling)和緊密的凝聚力(tight cohesion)。意思是說,當你在使用榛果(Django)網頁框架時,你不需要知道框架之中的每個區塊(除非你有絕對的需要),這是因為鬆耦合設計的緣故。
舉例來說,框架中的樣板(template)區塊無須知道web請求的處理,資料庫(modal)區塊也無須知道資料最後如何呈現成網頁,視圖(view)區塊無須知道設計師使用哪一個樣板。神奇的是,最後這些區塊可以完美地結合運作,這依靠的是最初緊密的凝聚力設計。
雖然榛果(Django)為了開發的方便性而提供一系列區塊,然而這些區塊之間在任何地方都是獨立的(互不耦合)設計。
較少的程式碼(Less code)
使用榛果(Django)所開發的網頁應用程式(web application)應該盡可能地減少程式碼的撰寫,並且缺少可供模仿的樣板文件(boilerplate)。榛果(Django)應該充分地使用並發揮Python語言的動態特性能力,像是內省(introspection)的能力。
快速開發(Quick development)
對於一個21世紀的網頁框架而言,它應該讓冗長繁瑣的網頁開發更加快速,榛果(Django)的設計哲學將允許令人難以置信的快速開發。
"乾燥"原則(Don’t repeat yourself, DRY)
呵呵,是「DRY原則」!每一個獨特的概念,和(或)一段資料,這些東西都應該存放於一個,且只有唯一的地方。冗餘(Redundancy)是壞的,統一規格化(Normalization)是好的。
明確勝於隱含(Explicit is better than implicit)
關於這一點設計哲學,也是Python程式語言的核心哲學(The Zen of Python),意旨:榛果(Django)的設計不應該施太多的"魔法"(這裡的魔法是指一些隱含的程式語法)。
魔法不應該發生,除非有一個很好的理由。只有當其他的方式都難以達到時,而且實現這項魔法具有極大的便利性,我們才應該考慮將魔法加入榛果(Django)的設計之中,所施展的魔法也不應該混淆正在學習該項特色的開發者。
一致性(Consistency)
榛果(Django)在框架中不同的層次都應具有一致性,從低層次的Python程式撰寫風格,到高層次的框架使用經驗,其應用方式都要具有相同的風格。