快速迭代經常和“技術債”“先跑起來再說”綁在一起,但一個 .NET 公式引擎項目卻用 19 天 53 個版本證明:跑得快和跑得穩可以同時做到,關鍵看是不是真的在意“穩”。
MySheet 是個專注做電子表格公式計算的 .NET 引擎。它能載入一個 .xlsx 文件,在內存里重新求值,不碰 Excel、不靠 COM、不折騰外部進程。它沒打算跟 ClosedXML、EPPlus、NPOI 搶全功能編輯器的飯碗——那些是保持 Excel 文件完整性的首選,MySheet 只解決一個更狹窄的場景:把一份 Excel 工作簿當成服務的計算基準,反復加載、注入新輸入、拿走或寫回結果。
![]()
從版本記錄看,2025 年 7 月,項目從 v0.1.0 一路沖到 v3.15.0,連續 19 天沒斷檔。中間擠出兩次實打實的重構:v2.0 把約 190 個公開類型按功能域拆進 Danfma.MySheet.Expressions.Logical、.Mathematics、.Text 這樣的命名空間,語法層面全斷,但行為一絲沒變;v3.0 把表單元格的寫操作收束到單一瓶頸點,為后來的反向依賴圖鋪路。這兩刀下去,外部調用方式徹底變了,但項目用同一條回歸測試兜住了底線:一個 v1.x 時代保存的 .msgpack 二進制快照,每次構建都會重新載入并求值,格式不能差一個字節,三個大版本都守住了。
更難得的是,每次重構都配了完整的遷移指南——類型到新命名空間的對照表、前后代碼示例。這不是在 README 里說一句“我們很穩”,而是把穩寫進了 CI:有人動到序列化,構建直接紅。
至于函數支持度,Excel 約 520 個函數里實現了 304 個,缺的也坦白寫在文檔里。單元格樣式、數字格式這些,項目直接劃出范圍不碰,怕的就是把公式引擎做成四不像。
七月那輪審計留下四份報告,對應一個分階段修補計劃,每一步都有明確的改動和數字。比起一句“我們找到并修好了一些 bug”,這種方式顯然更對得起“公式引擎”四個字。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.