iT邦幫忙

2026 iThome 鐵人賽

DAY 21
0
Claude AI

跟 Claude Code 協作的摩擦,都是沒講清楚的規則系列 第 21 篇

Day 21:現象——本機測試綠燈,換一個環境才發現語法根本不相容

  • 分享至 

  • xImage
  •  

前言:「測試通過」是相對於某個環境而言的

「測試都綠燈了,應該沒問題」——這句話有一個沒有明講的前提:綠燈是在某個特定環境下測出來的結果,不是一個放諸四海皆準的保證。如果實際上線或跑 CI 的環境跟本機不完全一致,本機的綠燈不代表換了環境之後也會是綠燈。

今日目標

  • 認識「測試通過」背後隱含的環境前提
  • 看真實協作紀錄裡這個現象的具體樣子
  • 理解為什麼這種環境落差特別容易在版本相容性上出現

真實案例:新語法在舊版本執行環境裡悄悄失效

在一次補齊測試覆蓋率的工作裡,AI 寫的測試程式碼用了較新版本語言才支援的語法(一種新式的屬性標記寫法)。這些測試在本機環境跑起來完全正常、顯示通過,但正式的持續整合流程裡,有一個維持較舊版本相容性的檢查項目——這批新語法在舊版本環境下不會被正確辨識,測試被悄悄地跳過執行,而不是報錯,直到那個檢查項目的結果被檢視時,才發現問題。

這個現象最麻煩的地方:悄悄失效比報錯更難發現

如果新語法在舊環境下直接跑不動、拋出明確錯誤,這個問題會很快被發現;但這個案例的麻煩之處在於,語法不相容的結果是「悄悄不執行」,而不是「執行失敗並報錯」——測試看起來像是跑過了,實際上根本沒有真的被執行到。這種「沒有錯誤訊息的失效」比報錯更難察覺,因為表面上一切正常。

為什麼版本相容性特別容易踩到這個坑

寫程式碼的當下,很自然會用手邊環境支援的最新寫法,尤其是這種寫法通常更簡潔、更符合當下的慣用寫法。如果沒有明確意識到「這個專案需要相容到哪個版本」,這個限制不會自動出現在腦中,只會在真正碰到相容性檢查時才被揭露——而且揭露的方式,很可能是這種悄悄跳過而非直接報錯的形式,讓問題更晚才被發現。

今日思考題

你的專案裡有沒有明確的版本相容性限制?這個限制是寫在文件裡讓每個人都看得到,還是只存在某個人的記憶裡?

今日重點回顧

  • 「測試通過」隱含著「在某個特定環境下」這個前提,換環境不保證結果一樣
  • 真實案例:新語法在舊版本環境下悄悄不被執行,而不是報錯,直到 CI 檢查才被發現
  • 悄悄失效比明確報錯更難被發現,因為表面上看起來一切正常

明日預告

明天分析根因:「我覺得做完了」跟「有證據證明做完了」中間的落差。


上一篇
Day 20:現象——說「已經處理完成」,實際上還有殘留沒清乾淨
系列文
跟 Claude Code 協作的摩擦,都是沒講清楚的規則 共 21 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言