跳至主要內容
BODY · MIND · LIFE2026年9月24日星期四
HSIAO NEWS
科技 新聞健康解讀

App 架構從 MVC 演進到 MVI 的一篇長文又被人翻出來:先看懂它在講什麼,再照顧一下 refactor 到半夜的你

從掘金一篇「App 架構演進 MVC 到 MVI」的技術長文回顧出發,聊聊 refactor 到半夜的工程師在眼睛、肩頸手腕與作息上可以怎麼照顧自己。

HSIAO NEWS 編輯部 閱讀約 6 分鐘

這篇文章的原文發表於 2026 年 9 月 12 日,作者是掘金上的「潮族大Z」,標題是《App 架構演進:MVC → MVP → MVVM → MVI,一篇看懂》。最近這篇又被工程師社羣重新轉起來,我們就用回顧的角度,先把它在講什麼用白話說清楚,然後聊聊讀這種長文、改這種架構的你,身體上有哪些可以順手照顧的地方。

這篇技術文到底在講什麼

文章的核心例子很生活化:做一個待辦清單 App。作者用同一個例子,從最古老的 MVC 一路走到現代的 MVI,讓你看見每一代架構在解決什麼問題。

先解釋幾個名詞。MVC 是「Model-View-Controller」的縮寫,中文常翻成模型、視圖、控制器:Model 管資料,View 管畫面,Controller 管中間的邏輯。聽起來分工清楚,但作者點出一個很真實的狀況:在 Android 早期,Google 官方文件把 Activity(Android 裡負責一個畫面的元件)同時當成 View 和 Controller 用,結果 Controller 形同虛設,Activity 什麼都做,撈資料、改畫面、處理按鈕,一路膨脹到上千行程式碼。

這不是抽象的抱怨。一段什麼都做的程式碼,最直接的代價是沒辦法測試。你想驗證一段商業邏輯對不對,得真的啟動一臺手機或模擬器才行。而且多人協作時,大家都要改同一個檔案,衝突不斷。

於是有了 MVP,把邏輯抽到一個叫 Presenter 的類別裡,Activity 只實作一個 View 介面。再後來是 MVVM,資料改成用觀察的方式自動反映到畫面。最新一代是 MVI,強調單一資料來源與單向資料流,狀態的變化可以被完整追蹤。

作者也提醒了一個常見誤解:很多人以為架構演進只是「換名字」,把 Controller 改叫 ViewModel 而已。他認為真正的重點在於責任邊界畫得清不清楚,以及可不可以測試。這個觀點在工程圈不算少數派,屬於實務上累積出來的主流看法,但每一代架構各有取捨,沒有哪個是銀彈。

為什麼這種文章總讓人想熬夜讀完

看懂了內容,我們換個角度。這類長文有一個特點:它會讓你邊看邊對照自己的專案。「我們公司那個 Activity 是不是也兩千行了」「這個 interface 抽得對不對」,然後不知不覺,你已經打開自己的程式碼,開始畫架構圖,抬頭一看凌晨一點半。

這種狀態其實和半夜被 call 起來修 App 閃退的工程師面對的是同一件事:工作內容本身有趣或有壓力,讓你忘記了時間。差別在於修 bug 是被迫的,refactor 是自願的,而自願的熬夜常常更難察覺。

幾個可以留意的訊號:你發現自己反覆讀同一段程式碼卻讀不進去;眼睛對著螢幕覺得乾、癢,眨眼次數明顯變少;脖子往前傾的角度越來越大,肩膀開始僵硬。這些都是身體在提醒你,該停一下了。下一步很簡單:站起來,離開螢幕十分鐘,去倒杯水,讓眼睛看看遠方。不需要等到「做告一段落」,因為 refactor 永遠沒有真正的告一段落。

讀長技術文時的眼睛與姿勢照顧

這種五千字上下的技術長文,加上大量程式碼區塊,閱讀時間很容易超過半小時。幾個具體做法給你參考。

螢幕距離維持在大約一個手臂遠,字級調到你不用瞇眼就能舒服讀的大小。技術文裡的程式碼常用小字呈現,別勉強自己盯著看,放大它不丟臉。每看二十分鐘,讓視線移開螢幕二十秒,看向六公尺外的東西,這個原則在眼科衛教裡很常見,做起來成本極低。

姿勢方面,筆電用戶最容易出現的問題是螢幕太低、脖子下壓。如果你常在咖啡廳或沙發上讀這種文章,找個東西把筆電墊高一些,外接鍵盤更好。手腕的部分,如果你看完文章真的動手改架構,打字量會暴增,手腕保持自然、不要翹著敲鍵盤,中途多甩甩手、轉轉手腕。

這些建議層級屬於一般性的衛教常識,不是針對特定傷害的治療。如果你已經出現持續的手麻、半夜痛醒的肩頸僵硬,或是視力突然模糊,那就值得掛個復健科或眼科讓醫師看看,不要自己硬撐。

架構演進的焦慮,也是一種職業心情

這篇文章還有一個沒明說的面向。看到 MVC、MVP、MVVM、MVI 一路排下來,有些人讀完的反應不是收穫感,而是慌:「我們公司還在用十年前的寫法,是不是我很落後。」

這種感覺和被 AI 時代放下的職業焦慮是同一家族的情緒。技術文章本身沒有要嚇你,作者甚至明講了每一代架構都有真實缺陷,MVC 到今天仍有它適合的小型場景。架構演進是為了解決實際問題,不是流行服飾,不需要每一季換新。

如果你發現自己因為追不上技術名詞而出現失眠、反覆刷技術社羣停不下來,可以給自己設一個具體的界線:比如晚上十一點後不再看技術動態,把想學的東西寫進隔天的待辦清單,而不是當場開另一個分頁。把「落後的恐慌」轉成「明天的具體一小步」,通常比在深夜多讀三篇文章更有用。

給讀完想動手的你

這篇長文值得讀,作者的例子完整、觀點務實。讀完之後,如果你想在自己的專案上動手重構,記得這件事的本質:重構是漸進的,中間每一版都應該可以正常運作,這也是原文反覆強調的精神,責任邊界一步一步畫清楚。

身體也是同樣的道理。你不需要一夕之間改掉所有壞習慣,就像你不需要一夜之間把 MVC 重寫成 MVI。今晚早半小時睡,明天工作時記得抬頭看遠方,這些小步重構累積起來,就是你這套「身體架構」最穩的演進路線。