首先,我100%支持公約和整個團隊遵守。不過,我正在研究框架(主要是各種PHP,但也包括Ruby on Rails和其他),這幾乎可以強制按照慣例進行編碼。表面上看起來這是一件好事,例如,網址直接轉換爲/controller/action
。模型以數據庫表命名,系統知道使用真正簡單的自動加載器確切地加載所有文件的位置。按慣例編碼是否會妨礙靈活性?
但是,我們運營的是白標籤平臺,對大多數客戶而言,它並不一定適用於其他客戶。有些可能需要特定的URL模式,所以我們需要自定義路由。有些人可能會要求頁面與其他客戶端具有完全不同的佈局,因此我們最終將使用一個自動加載器來始終檢查區域特定版本的文件是否首先存在,如果需要則會回退到默認值。這使得開發對我們來說真的很容易,因爲我們只是將一個適當命名的文件放到一個地方並離開它。但是由於這是少數情況下需要這些的情況,我們發現自動加載機花費過多的時間來檢查幾乎可以保證丟失的文件。
爲了提高一點,我正在考慮增加配置在約定的情況下,使從規範偏離區會找到必要的覆蓋在配置文件中和只會直奔正確的文件,刪除所有我收集的現有文件檢查效率不高(特別是當某些頁面需要數百個自動加載器調用時)。我想我們仍然會默認使用約定,但允許配置在必要時接管。
我有興趣瞭解這是否是一個實際的,甚至推薦的解決方案
緩存「編譯的」自動裝載器類/文件映射可以消除很多這些文件檢查;儘管它可能會對文件的「熱」更改產生影響 –
事實上。我們已經緩存了大量的信息,當更新某些東西時需要清除緩存,這可能會很痛苦。但自動加載器的覆蓋很少改變,所以這可能是有意義的 –
當然,在現場製作環境中,它們應該很少改變,這就是最需要性能優勢的地方:在開發中,您可以設置一個自動加載器來構建一個緩存,好 - 但它需要額外的步驟來檢查是否添加了新的覆蓋文件,但仍然可以使用緩存作爲回退 –