[爆卦]mvc架構是什麼?優點缺點精華區懶人包

為什麼這篇mvc架構鄉民發文收入到精華區:因為在mvc架構這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者pppty (無)看板Soft_Job標題[請益] 菜鳥請益MVC架構問題時間Fri Feb 1...


小弟是一個剛轉職的LV1菜鳥 到職一兩個月
剛開始只是讓我先看看專案 熟悉一下內容
比較上手之後 前輩開始丟一些功能讓我自己下去實作
功能其實很簡單 程式碼也不多
只是因為以前在學習的時候 老師是教用MVC(?)的架構
自己上網看過一些相關介紹跟討論
老師教的似乎是所謂Model 2(?)的概念
新手一枚 不敢妄下定論
自己的理解是
V(頁面呈現) --> C(流程控制、任務分派) --> M(業務邏輯、資料存取)
M會包含Bean、DAO、Service等

因為前輩當時沒特別要求 所以就照著之前練習的方式
試著用自己所理解的MVC概念實作
前輩在看完我的程式碼之後 跟我說何必要多開一個Service
程式碼也沒有幾行 直接搬到Controller
原本是在Service下呼叫DAO再回傳 改成直接從Controller呼叫
(實際上Controller的method可能只有3、4行,Service也只有10來行這樣)
當然是照著前輩的要求去修改

只是現在有點搞不太懂所謂的MVC是該怎樣來設計跟實作 或者比較
符合MVC的精神(?) 很怕自己以前理解的方向是錯誤的 想趁概念不對時趕緊改正
希望能有前輩們幫忙解惑 非常感謝

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.240.211.55
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1487338687.A.91A.html
sam22213228: 個人淺見,C負責你頁面對應的View.而M則該對應你的D 02/17 22:11
sam22213228: B. 02/17 22:11
abc0922001: M不是定義資料型態而已嗎? 02/17 22:21
knives: 那你可以不用把前輩說的話丟了,架構、紀律本身就該遵守, 02/17 22:24
knives: 不可以因為貪圖方便而取巧,除非有啥不可抗力 02/17 22:24
pppty: 所以應該是將邏輯部分放在C比較正確囉? 02/17 22:24
pppty: k大 不好意思 有點看不太懂您的意思@@a 02/17 22:25
vi000246: 等以後專案程式碼越寫越多 又懶得重構時 02/17 22:26
vi000246: 你就會知道為什麼要這麼麻煩了 02/17 22:27
a47135: k的意思就是該按照規則拆的就拆乾淨,不要因為少就省事 02/17 22:27
a47135: 萬一以後要擴充還是做什麼還要拆回去嗎 02/17 22:27
knives: 不過前人怎麼說,你就怎麼做,就像南部人常常把紅綠燈當 02/17 22:27
knives: 參考用,你會糾正他們嗎 02/17 22:27
a47135: 還滿酸的wwwww 02/17 22:28
pppty: 因為還是新手 我只是怕以前自己理解是不對的@@ 02/17 22:30
angusyu: 趁現在學了MVP去嗆前輩 02/17 22:30
u5431269: 推同是剛轉職的新人 02/17 22:39
sunsamy: 這個前輩的程度蠻糟的,話說很多公司的前輩程度都是醬,就 02/17 22:45
sunsamy: 只是工匠的程度,還不到Architecter的程度,見樹不見林 02/17 22:49
chatnoir: controller可以寫邏輯,但有點違背MVC的概念 02/17 22:54
chatnoir: 偷懶你就寫controller,個人覺得掛在Model,甚至另外寫 02/17 22:55
chatnoir: BI層可能會比較好一點 02/17 22:55
foolstack: 你前輩的code可想而知 不要妥協 02/17 22:57
GoalBased: 公司架構這種東西,不是網友怎麼說你就該聽的 02/17 23:04
GoalBased: 你有MVC的觀念,那這次這樣做,你把他記在心裡以後用 02/17 23:04
GoalBased: 心去體會即可,一個專案不會說你把邏輯寫在c裡面就 02/17 23:05
GoalBased: 不能用的 02/17 23:05
pppty: 其實小弟不是來戰前輩的@@a 只是希望自己能學到正確的觀念 02/17 23:13
pppty: 如果以前的理解沒錯 我還是會照前輩要求去處理 但是自己會 02/17 23:14
pppty: 再照理解方式做一遍 只是擔心以前理解的是一場誤會而已 02/17 23:15
GoalBased: 理解大致上是沒錯的。 想做就做唄,也剛好可以比一下 02/17 23:20
GoalBased: 哪一個維護成本比較低 02/17 23:20
ku72: 說句實話 過度設計比不會設計更可怕 02/17 23:21
Ekmund: 按照公司習慣+1 有些東西有演化歷史 往往不會是純正解 02/17 23:51
smalldra: 真的只有三五行就不用太多設計 這東西真的是看需求 02/17 23:53
yyc1217: 就算只有一行我還是會搬到service 因為你無法預測之後的 02/18 00:31
yyc1217: 需求 02/18 00:32
yyc1217: 開發時也許會覺得做很多白工 但後續要維護時就能體會到了 02/18 00:32
yyc1217: 請替三個月後的自己著想 02/18 00:40
sunsamy: 講也沒用,看看有多少人認為幾行而已不用這麼麻煩,就知道 02/18 01:01
sunsamy: 有多少藍領碼農,工匠在身邊 02/18 01:02
dnabossking: ㄏㄏ,現在不拆,慢慢的越積越多,最後就....ㄏㄏ 02/18 01:14
Masakiad: 根本跟行數無關,是各類別責任劃分的問題 02/18 01:15
brucetu: 換公司 我認真的,前輩都這樣寫代表專案都不大 你練一年 02/18 02:03
brucetu: 不如去有點規模的案子練一個月 02/18 02:03
brucetu: 不要一兩年後想換工作,才發現自己都在碰邏輯直接放contr 02/18 02:05
brucetu: oller也沒問題的小系統,面試講起來都心虛 02/18 02:05
brucetu: 邏輯全寫在controller就是偷懶而已 但能這樣偷代表產品非 02/18 02:08
brucetu: 常小 02/18 02:08
brucetu: 比如你的api for app 跟api for backend都要用到一樣的co 02/18 02:13
brucetu: re,全放controller難道要兩個project各貼一份一樣的邏 02/18 02:13
brucetu: 輯?,最後還不是得把core包裝好,controller通常只是寫 02/18 02:13
brucetu: 個呼叫接口做些apikey/token之類的驗證而已 02/18 02:13
Dnight: 然後core要改的時候因為各貼一份所以要一次改兩邊XD 02/18 10:35
akira01: v要笨c要輕m要重,抽到service裡是比較好的做法,但如果所 02/18 22:48
akira01: 在的team認為不妥還是依現行團隊要求設計吧,也許你的前 02/18 22:48
akira01: 輩不想code一直跳著看 02/18 22:48
sing10407: mvc不合胃口就換公司? 別誤導新人了 02/19 12:13
Masakiad: M、V、C都要又輕又有彈性才對,重了就要重構 02/19 12:44
laikyo: 不要偷懶挖洞給自己跳 02/20 09:40

你可能也想看看

搜尋相關網站