哎!
慘……
最近接連維護兩個很煩人的項目,我的第一想法就是重寫!可是上頭的意思是說我的想法太瘋狂。
可每次有這種情況我都感覺還是重寫劃算點……
之前的之前一個東東重寫也就一周時間,而上頭還是決定用著,對那東東很麻煩怕新寫的別人不適應 以及穩定性的擔心。而結果就沒重寫,接下來的幾個月我都被那玩意煩。哎
回正題
這兩個項目一個是C++的,一個是C#的,兩個都是關於網絡的。都是非常有各自語言的特色
C++的那個項目是所有要處理消息的函數都是統一的 void xxxx(void* pData);
然後進去就
int* pxx = (int*)pData;
pxx= XXX(sss);
pData += sizeof int;
SH_XXX* pshxx = (SH_XXX*)pData;
Mxxxk(pshxx,xxxixx);
sss;
Send(g_Buf);//所有處理函數的最後都是這一句
寫的是行雲流水,酣暢淋漓啊。慢慢看也明白,但是人都容易馬虎的,很多時候調的時候一不小心, 就不知道跑哪兒去了。
所有函數使用同一個全局緩沖區,讀和寫是同時進行的。有可能讀了一些東西,偏移一段後進入某個 函數又退回一段距離開始寫東西。前前後後,讀讀寫寫。哎,煩啊
至於C#的那個,導出是委托,每一個東西都有一個父類。比如
Code;
DoubleCode : Code;
ThreeCode : DoubleCode;
SessionCode : TreeCode;
StreamCode : SessionCode;
而事實上上面的類,每一個都只是在父類基礎上加一個屬性而已。用的時候經常是base.xxx;經常是類 型轉來轉去的
很多類都在開線程,而且線程的執行函數是base.xxx
也即是Thread th = new Thread(new ThreadStart(base.Receive));
然後在base.Receive函數又調用子類的DealCode函數處理消息。
哎,讓人看著很不爽。經常跟的時候自己都忘了跟到哪裡去了。
因為還有很多函數都是“代理函數”,也就是僅僅調用另外一個函數而已;
比如
void Doxxx(object data)
{
xxxx.Doxxx(data);
}
xxxx的Doxxxx(object data)
{
yyyy.Doxxx(data);
}
yyyy.Doxxxx(object data)
{
base.xxxx(data);
}
我就不明白為什麼要這樣寫?規范化?還是為了讓別人不容易看懂自己的代碼?
或許後者多一點吧?
那既然這樣自信就不要推給我來維護啊……
哎……
最近他們又在開動一個瘋狂的項目,很擔心最後又是我來收攤。
為什麼我就這麼慘呢?
程序員每天上十二三個小時的班是不應該的……
今天早上想到一個代碼加密的法子,那就是將代碼中所有的名稱(類名,接口名,函數名,對象名, 變量名,函數的參數變量名都不要放過)通通的瞎改。改成下面的樣子
void sekrj394329428 siweuirweiru234oodk(vdkdfnsdflk23dfkj dkf8s0fd0dsf,dsfklsdfklje sdfjffjj)
{
dkf8s0fd0dsf.sl3n34klsfkljdsklfjl();
sfnekr234l324j = sdfjffjj.skjl3j4klj32lkj();
dkf8s0fd0dsf.fmnelrwejrkl234 (new skfdjls324jklsjifosjf());
for(int simrweiro234uo324 = sdfjffjj.gklejlk23j4lk23j4();sdfjffjj.sldkjfkljkl32423kl4(simrweiro234uo324 );simrweiro234uo324 ++)
{
dkf8s0fd0dsf.skldfjlsdfjklwjrlw();
}
return sdfjffjj.sdfkljsdlfjl (sfnekr234l324j );
}
准備以後有時間寫這麼一個加密的東東出來。沒想到老天故意讓我不要浪費時間似的,看一個東西時 意外發現已經有人這麼弄了……
那就是Xenocode.Fox. 他的庫就給改成這個樣子了。呵呵
不過有空我還是弄一個出來吧,好好研究下System.CodeDom;自己寫的東東用起來更有感覺,呵呵呵
而且可以更加個性化,嘿嘿