Re: [請益] 為什麼要把所有功能寫在同一頁
[引言恕刪]
(我發現我還滿喜歡回這種文章 XD)
大體來說,是為了「維護」和「協作」的兩個目的。
以這種想法來提出的開發架構,就是你看到的,是不是MVC,我不清楚。
(我這個人一樣記不住名詞,我只要求自己會用就好。)
記得從一本書中看到一種想法,作者認為網站的開發應該分為四層。
1. 資料層: 負責和資料溝通,通常是對檔案或是資料庫的連結
2. 商用邏輯層: 主要是把取得資料整理成有意義的集合, 或是條件判斷
3. 介面邏輯層: 控制顯示介面的呈現
4. 介面層: 主要是 HTML 或是 CSS、JavaScript, 或是版型的範圍
關於每層的名詞,我不能保證是「絕對正確」不過想法是沒錯的。
個人滿認同這種想法,因為它在開發專案的時候,有許多的好處。
除了推文中提到的「程式碼重覆使用外」,它也是一個有彈性,可以協作模式。
網站技術其實滿多的,用到的每種語言不見得都精通。
像是資料庫專家,不見得可以作出好看(或能看)的使用者介面。
所以只要溝通好不同層的規則,不同領域專家就可以進行協同工作,彼此不用深
入了對方的工作內容。
另外,專案的需求可能會變動,可能因為某些原因,必須改變連結的資料庫種類,
如︰MySQL => MsSQL,如果上述 1, 2 兩層沒有拆開,那對原來的程式,是一場大
災難。需要不斷的除錯、測試,花費的時間可能比重頭開發還要多。
當然,資料庫改變並不是一個常見的例子,比較常見的例子,應該算是改版型吧!
不管是換版面配置,一直到支援使用者自選版型,都是有可能發生的事情。
如果今天邏輯、判斷程式是和 HTML 混在一起的,沒幾次就會開始感受到修改時候
那種痛苦,程式一直出錯的煩悶。
所以才會有人推出樣版工具,就是為了將兩者拆開,才能分開維護。
寫程式的人,似乎會給一般人一種「頭腦很好」的印象,但是就我工作到現在,我
還沒遇到一個「記憶力很好的工程師」。其實記憶能力再好,也沒有什麼用,不久
前我才為一個一年多前寫的程式增加一些功能,當初是怎麼寫的,早早就忘得一乾
二淨了。
所以,減少「需要看的程式碼」數量,是給未來的自己減少一點麻煩的重要方式。
達到這個目的手段,就是替程式分類,將同類型的程式碼集中,獨立在一起。
在除錯或是增加功能的時候,因為程式被分類,所以可以更快找到需要改的部分,
因為每個地方都引用,所以很清楚,改一個地方,所有相同的錯誤會被全部修正。
最後,當其它專案也用到相同的功能,就可以直接拿來使用,不用重寫一份。
每一種模式都需要思考過才來使用,才不會沒得到好處,先嘗到苦果。
分層架構是為了彈性、維護和擴充的需要發展出來的。
但是相對的要花額外的時間在規劃、實作分層。
在時間、功能及彈性之間,需要取得平衡。
像是上面提到的四層架構,如果真的照著作,某些專案可能要花上更多的時間才能
完成。像是,如果可以確定,不會改變資料庫,那麼1, 2層可以合在一起作。
如果今天很確定,專案只是簡單的頁面,不會有的擴充、未來維護的需要。
那麼把全部合在作,反而是最快的方式。
用什麼工具其實沒有太大的影響,程式只是文字的集合。
現在看到的這些開發原則是很多前輩們「痛」過來的經驗,
像是不要輕易把邏輯程式和HTML 語法混在一起,之後就會連自己都看得很辛苦。
不過,單單聽到觀念,還是需要配合實作,才能體會那種「感覺」,
這些經驗才能幫助你在遇到問題的時候,選擇適合的處理方式。
(會這麼說,是因為這些錯誤我大都曾經犯過,既使是已經聽到這些好的想法之後)
共勉之
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.92.131
推
01/23 23:28, , 1F
01/23 23:28, 1F
推
01/24 04:38, , 2F
01/24 04:38, 2F
→
01/24 04:39, , 3F
01/24 04:39, 3F
→
01/24 04:40, , 4F
01/24 04:40, 4F
→
01/24 04:41, , 5F
01/24 04:41, 5F
→
01/24 04:43, , 6F
01/24 04:43, 6F
→
01/24 04:43, , 7F
01/24 04:43, 7F
推
01/24 04:46, , 8F
01/24 04:46, 8F
→
01/24 07:21, , 9F
01/24 07:21, 9F
→
01/24 07:21, , 10F
01/24 07:21, 10F
→
01/24 07:22, , 11F
01/24 07:22, 11F
推
01/24 08:49, , 12F
01/24 08:49, 12F
→
01/24 08:50, , 13F
01/24 08:50, 13F
→
01/24 08:52, , 14F
01/24 08:52, 14F
→
01/24 08:53, , 15F
01/24 08:53, 15F
→
01/24 08:54, , 16F
01/24 08:54, 16F
推
01/24 09:30, , 17F
01/24 09:30, 17F
→
01/24 09:31, , 18F
01/24 09:31, 18F
→
01/24 09:31, , 19F
01/24 09:31, 19F
→
01/24 09:32, , 20F
01/24 09:32, 20F
推
01/24 09:37, , 21F
01/24 09:37, 21F
推
01/24 11:49, , 22F
01/24 11:49, 22F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 3 篇):
11
42
PHP 近期熱門文章
PTT數位生活區 即時熱門文章
0
16