這是最近朋友委托,遇到較吃力的東西,案子蠻趕的。
由於案子屬金融業,一些專業背景並沒很熟練,鑑於溝通之後,發案人願意拉 excel 出來,讓我觀察公式。發現其實金融業的東西真的不好搞。前半段雖然有點吃力,勉強將架構避開使用硬爆法,但某些條件實在是要不停拉出來重新判斷,有時會想是不是直接硬暴比較快?
前半段不算重點,無論如何,有很多方式可完成,重點是中後半段。
中後半段之 excel 公式沒一定規則可尋,來源儲存格為一 6 * 24 表格,總計公式近五千個公式,我不確定這五千個公式是否有跡可尋,但在先前與委托者光是花在「了解問題」就花了四、五個小時,若後面這五千個公式,我想要弄清這些公式怎麼來的,再實際寫 code 下去,時間恐怕不允許。
眼看委托者本身也即將結案,我還在慢慢盧那 5000 個公式嗎?沒辦法了,我只好撤出殺手鐧,假設進行之 Project 稱為 project X
1. project X 先將6*24 表格數值先讀到 double x[6][24] 裡面。
2. 另外開一份 project generate,程式碼輸出此結果
#define A0 x[0][0]
#define A1 x[1][0]
#define A2 x[2][0]
...
#define X6 x[5][24]
3. 把 project generate 輸出之 macro 貼到 Project X
4. 將 excel 調成「顯示公式」,再把那 5000 筆公式複制到 .txt 裡
5. 開啟 .txt,tab 取代成逗號,= 取代成 (Nil, 也就是消掉),.txt 裡面的所有文字稱作 INIT_TEXT
6. 再 Porject 裡面,多設一變數 double rst[5000],再將 INIT_TEXT 當作 rst 之初始值。
若不是真的很趕,真不會想到用這方法硬暴下去,可想而知 compile 時間實在是久得不像話,
目前 Visual C++ 2010 Release 編譯了近 15 分鐘!
還好委托者不打算收 source code,重點是一次性開發而已,故才靈機一動用這麼 kuso 的方式達成;
若要收的話,這種 source code 肯定是拿出來讓別人笑的。