依原書 Figure 14-4~14-5,以 university fees model 示範 spaghetti links 如何在刪除中間 block 後造成大量 #REF!。
原書例子中,各 block 的 dates 不是直接連回 top source,而是 B38 → B29 → B20 → B11 → B2。只要中間一個 block 被刪除,後續 dates 便失去 reference。
| 設計 | Dependency | 刪除中間 block 後 |
|---|---|---|
| Spaghetti | B38→B29→B20→B11→B2 | 後續 links 可能變 #REF! |
| Direct-to-source | 每個 block → original source | 較不受中間 block 刪除影響 |
對重複 dates、labels、assumptions,優先從每個 calculation block 直接 link original source,而不是 link 前一個 block。用 Trace Precedents 應能快速回到來源,而不是穿越多層中介。
| 影響 | Spaghetti Links | Direct Source |
|---|---|---|
| Block deletion resilience | 低 | 較高 |
| Formula auditing | 多層追蹤、耗時 | 較直接 |
Spaghetti links 通常「現在能算」,但一旦結構調整就顯示脆弱性。Maintainability 是 modeling quality 的一部分,不只是當下計算是否正確。
請檢查一個 workbook 的 repeated dates/assumptions 是否存在 link-to-link patterns,並提出改為 direct-to-source links 的重構方案,保留相同 outputs。
**問題:**如果 spaghetti chain 現在所有值都正確,是否值得重構?