跳到主內容

Theme / 0.9.130

Pstack

用可驗證的工作流程協作,從單一入口學會工程技能

Skills

principle-minimize-reader-load | 降低追蹤層數與隱藏狀態

從報表日期來源追蹤間接層與可變狀態,判斷哪些包裝與共享欄位增加閱讀負擔。

principle-minimize-reader-load | 降低追蹤層數與隱藏狀態

本頁以 pstack-claude 0.9.126 為基準。原文設定 user-invocable: false,通常由 poteto-mode 按需讀取。你可以要求「套用 principle-minimize-reader-load」,檢查讀者為理解一個結果必須追蹤多少資訊。

定位與適用情境

原文用兩個獨立軸線看維護成本。第一是要追蹤的間接層數。第二是必須記在腦中的隱藏或可變狀態。程式行數與複雜度分數只能作為替代指標,不能取代實際閱讀負擔。

本例的新同事要弄清楚月報的結算日期。輸入是報表入口、日期轉接器、服務類別與模組層級的可變時區設定。即使函式都很短,仍可能要跳過多層轉傳,並記住誰最後改過時區。

準備

  • 提供從報表入口到日期格式化的完整呼叫路徑,以及時區設定的所有讀寫位置。
  • 寫下可觀察行為,包括指定時區的跨日結果與連續產生不同報表的結果。
  • 準備兩個閱讀問題。「結算日期從哪裡來」與「誰能改變它」。

操作步驟

  1. 記錄兩種負擔。 沿呼叫路徑列出每一層處理的決策,再列出需要跨函式記住的時區與日期狀態。不要只數檔案或函式長度。
  2. 檢查抽象是否改變。 若兩層只是原封不動轉傳同一組參數,評估合併。單一呼叫端的包裝也要問是否隱藏重要決策,而不是看到一個呼叫端就刪除。
  3. 縮小狀態範圍。 評估把可變模組時區改為本次報表的明確輸入,讓日期計算回傳結果而非修改共享欄位。在邊界說明一次不變條件(Invariant),避免每個消費者重複理解。
  4. 用行為與閱讀驗證。 先核對跨日與多報表結果不變,再請未參與修改的讀者回答兩個問題。原文以 30 秒內能回答作為檢查,無實際讀者測量就標為待驗證。

可直接使用的提示詞

套用 principle-minimize-reader-load。請追蹤月報結算日期,分別列出間接層數,以及讀者必須記住的可變時區狀態。
先唯讀提出精簡方案。只建議合併沒有隱藏實質決策的轉傳層,並說明哪些邊界應保留。評估把模組時區改成每次報表的輸入,不建立新架構層。
交付修改前後的追蹤路徑、跨日與多報表測試案例,以及讓新讀者回答「日期從哪裡來、誰能改變它」的方法。不要聲稱尚未測量的閱讀時間。

預期結果與驗收

預期得到同時處理間接層與狀態的提案。

  • 每個保留的層級都能說明隱藏了什麼決策,而不只是重新命名相同方法。
  • 日期與時區的來源、擁有者、可修改位置都能直接指出。
  • 跨日及不同報表連續執行的測試仍保護原有行為。
  • 閱讀檢查有實際記錄,或明確標註待測,不以行數下降冒充理解更快。

限制與權限

常見誤用是把所有程式攤平成一個檔案,卻留下大量全域變數。層數減少不代表狀態負擔也減少。另一種誤用是合併安全、驗證或領域邊界,只因它目前只有一個實作。

30 秒是原文提供的檢查問題,不是任何讀者都能達成的保證。教學中的報表與時區是示例。真正修改前仍要確認業務契約與允許範圍,不為精簡而移除專案要求的有效文件及功能註解。

延伸閱讀與來源