這兩天開始新project了,這次不是唱獨腳戲了,而是與數人合作,亦因此有分工問題。我們三個programmer將會使用PHP JS HTML等等技術來開發一個網站,而程式架構將會是MVC的,問題就是我們的工作時間不一,有人可以早上做,有人晚上做,如果一人負責一部份(M、V、C),那很可能會做成C要等V完成才可以繼續寫,而且每次開始之前亦要先回顧V做過的東西,做不到同步開發,那麼便失去了分工的意義。更恐怖的是C要等V做完才可以測試,或者要另外寫tester來測試,浪費十分多的時間。

因此,我們研究了另一個開發模式,是橫分MVC,以模組為單位,如登入是一個功能模組,搜尋是一個功能模組,每個模組的MVC都由同一人開發,而每個模組之間亦保持高度分離。如果模組間要溝通(例如搜尋模組可分為搜尋框和結果列表),就會使用observer pattern來連接,即建立一個全局的事件處理機制,當搜尋完結時便fire一個event,讓結果列表(observer)更新自己的資料。

另外,為減少回顧別人寫的code 的時間,我們亦設計了一個新的程式碼架構,架構是把Controller的action分開成不同file,並且把JS、PHTML(template檔)分開成多個file,要使用時才載入,以避免測試時會受到別人的syntax error影響。唯一美中不足的是,PHP的物件機制不夠動態,Model很難做到分開數個檔案並動態載入,所以只能夠把Model的method寫在同一檔案。

Skeleton - 這是我們的開發模式骨架。