iT邦幫忙

2026 iThome 鐵人賽

DAY 3
0
AI Engineering

AI 寫 Code 之後,我們還需要 Software Architecture 嗎?系列 第 3

Day 03:架構的本質——不是規範「怎麼寫」,是約束「能改到哪裡」

  • 分享至 

  • xImage
  •  

前言:architecture 不就是畫幾個框框、連幾條線嗎?

「架構圖不就是畫出幾個方塊、幾條連線,說明系統長什麼樣子?跟 AI 會不會寫錯程式碼有什麼關係?」

這個問題背後藏著一個常見誤解:把「架構」當成「畫出系統長什麼樣」的文件工作。但架構真正發揮作用的地方,從來不是那張圖本身,而是圖背後那條看不見的規則——當有人(或有 AI)要改一個東西的時候,這個改動被允許影響到哪裡、不被允許影響到哪裡。 架構的本質不是規範「這個功能該怎麼實作」,那是設計模式、coding style 的層次;架構規範的是「這個改動的影響範圍能收斂到哪裡」。

這件事對 AI 特別重要,重要到值得單獨用一整篇來講。

今日目標

  • 分清楚「架構」跟「怎麼寫程式碼」是兩個不同層次的問題
  • 理解為什麼「改動邊界」對 AI 比對人類工程師更關鍵
  • 看一組具體對照,感受「有邊界」跟「沒邊界」的改動實際差在哪裡
  • 建立判斷「這是不是一個架構問題」的簡單提問方式

兩個不同層次的問題:怎麼寫 vs 能改到哪裡

先把兩件常被混在一起講的事情分開。

第一件事是「這個功能該怎麼實作」——用什麼設計模式、變數怎麼命名、要不要抽一個 helper function。這個層次的決定,即使做錯了,影響範圍通常侷限在這個函式、這個類別本身,改壞了頂多是這一小塊程式碼難讀、難維護,不會波及到看起來毫不相干的地方。

第二件事才是架構真正在管的:「當我改了這裡,還有哪裡會被牽動?」——這個資料庫連線只能被哪一層呼叫、這個介面背後允許有哪些實作、這個模組能不能被另一個模組直接 import。這個層次的決定如果做錯,代價往往不是「這段程式碼比較亂」,而是「一個看起來局部的改動,實際上牽動了系統另一端你完全沒想到的地方」。

架構的價值,不在於它規定了「正確的寫法」,而在於它先幫你劃好了『如果寫錯了,代價會被限制在多大範圍』這條線。 好的架構不保證每一行程式碼都寫對,但保證寫錯的時候,錯誤不會無限擴散。

為什麼這件事對 AI 特別關鍵

人類工程師改程式碼時,即使系統沒有明確的架構邊界,通常也會靠著對系統的長期記憶,本能地避開一些「感覺會出事」的改法——這種直覺是長期泡在同一個系統裡累積出來的,帶著隱性的風險評估。

AI 沒有這種長期浸泡的直覺。它面對的是一段被截取出來的程式碼,能看到的範圍取決於這次任務給它多少 context。如果系統本身沒有明確的架構邊界,AI 只能靠「這樣改看起來邏輯合理」來判斷安全性,而『看起來合理』跟『實際安全』之間的落差,正是這整個系列反覆討論的核心問題。

架構邊界替 AI 把這個判斷題,從「你自己想清楚這樣改會不會有問題」,換成一個更小、更客觀的問題:「這個改動有沒有越界」。第一個問題需要對整個系統的全面理解,第二個問題只需要知道「這裡是不是允許被改的範圍」。

用一組對照來看這個差異:

❌ 沒有清楚邊界的系統:
「這個函式看起來只是查一下使用者資料,
 直接在這裡加一段快取邏輯應該沒問題。」
→ AI 的判斷依據是「看起來合理」,
  但這個函式可能被十幾個不同情境呼叫,
  加的快取邏輯會不會在某個情境下讀到過期資料,
  AI 完全沒有機制知道

✅ 有清楚邊界的系統:
「快取邏輯不屬於這一層的職責,
 這一層的邊界只允許處理『查詢並回傳結果』,
 快取要嘛不做,要嘛要先確認這是不是
 上一層或下一層該負責的事。」
→ AI 的判斷依據變成「這個改動有沒有越界」,
  邊界本身已經替它排除了一整類危險的改法

第二個版本裡,AI 甚至不需要完全理解這個函式被誰在什麼情境下呼叫,光是「這不屬於這一層的職責」這條邊界規則,就足以擋下一個原本可能造成問題的改動。

判斷「這是不是架構問題」的簡單提問

不是所有技術決定都值得升級成架構問題來討論。一個實用的判斷方式是問自己:「如果這裡改錯了,錯誤會不會擴散到我原本沒打算碰的地方?」 如果答案是「不會,頂多這個函式本身邏輯要修」,那通常只是實作細節的問題;如果答案是「會,而且擴散的路徑我一時說不清楚」,那就是架構邊界該介入的地方。

這個提問方式也可以直接拿來檢視現有系統:挑一段程式碼,問「如果 AI 現在要改這裡,它能不能光靠讀這段程式碼本身,就判斷出改動不會波及其他地方?」如果答案是否定的,代表這裡缺乏清楚的架構邊界,值得優先補強。

今日思考題

回想你手上系統裡一段你會「小心翼翼」去改的程式碼:讓你小心的原因,是這段邏輯本身複雜難懂,還是因為你說不清楚改了它會不會影響到其他地方?如果是後者,這其實是一個架構邊界不清楚的訊號,而不是這段程式碼寫得不好。

今日重點回顧

  • 架構不是規範「怎麼寫」,是約束「改動能影響到哪裡」——兩者是不同層次的問題
  • 好的架構不保證程式碼寫對,但保證寫錯的代價被限制在可預期的範圍內
  • AI 沒有長期浸泡系統累積的直覺,架構邊界把「這樣改安不安全」的判斷,收斂成「有沒有越界」這個更小的問題
  • 簡單判斷方式:如果改錯了、錯誤會不會擴散到你原本沒打算碰的地方——會,就是架構問題

明日預告

明天要看一個具體的架構工具:Repository 分層,怎麼把 AI 對資料庫存取邏輯的改動範圍,實際收斂到一個資料夾裡。


上一篇
Day 02:案例——沒有架構邊界時,AI 用最短路徑寫出的程式碼長什麼樣
系列文
AI 寫 Code 之後,我們還需要 Software Architecture 嗎?3
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言