摘要:非同步Co-Work的問題...
最近遇到一個不同步Co-Work的問題...
一開始是因為習慣利用程式碼產生器產生程式中所需的列舉
所以就很自然而然的把產生的Dll就這樣覆蓋掉正式機裡面原先參考的Dll
結果某天就給我出了"茶包",還讓我一時間查不出來哪裡錯
因為程式碼看起來並沒有錯,結果再一次編譯之後,問題就解決了
一時之間還真是讓我有"丈二金剛摸不著頭腦"的感覺
雖知道這現象不正常,但當時迫於進度也只得拋在一旁,繼續趕工
不理會的結果就是被這個怪現象一直糾纏...
好吧...查查看到底是誰在搞怪
結果幾經折騰之後,才發現...哇哩咧...是該死的自動產生的列舉搞的鬼
原因是我一直認為把DLL覆蓋掉原本參考的那個就可以用了
結果有時就沒經過編譯,直接把正式機的那支蓋掉
照理講,相關的程式如果沒有使用到舊的列舉以外的東西是可以相安無事的
但是好死不死,自動產生的新列舉把某些舊的列舉裡面的順序移位了...
於是就有可能用到了新列舉才有的東西Orz...
例如,原來的列舉是:
enum Test123
{
a,
b
}
如果在後面加上c,像這樣:
enum Test123
{
a,
b,
c
}
就算不編譯就丟上去用,也不會有問題
但是如果是加在中間:
enum Test123
{
a,
c,
b
}
這樣執行程式就會開始有一堆意想不到的狀況跑出來了
有的時候並不是全部的程式都能一起編譯,特別是在Co-Work的時候
不過這並不代表自動產生這個方法不能用,只要保證順序不被調換就行了
但如果狀況許可,最好還是連同相關程式全部一起編譯過比較好
其實這個案例就像是Co-Work的時候,兩方沒有協調好的情形
讓我想到不久前,和同事一同上程式的時候
因為雙方沒協調好而導致我把提供給他使用的界面改掉了
使得他的程式出錯...Orz