自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

程序員:請不要輕視我們的過去

開發(fā) 前端
今天一個偶然的機會打開了自己以前寫的舊程序,時間大概是上世紀90年代后期(96-99年左右),代碼是用C語言寫的,運行在Windows 3.1或Windows 95環(huán)境下??吹剿鼈儯幸环N看上學(xué)時照片的感覺,感覺是那么的青澀。拿出一段曬曬

這是當(dāng)年開發(fā)的一個煤炭安全監(jiān)控軟件里增加新測點的函數(shù)。如果在當(dāng)年看這段代碼,感覺這應(yīng)該是一段挺不錯的代碼,比如:注釋很多,幾乎每行都有注釋;匈牙利命名法,使用像lp、w這樣的前綴;結(jié)構(gòu)、數(shù)組、宏定義,看起來都是有板有眼。

  1. //-----------------------------------------------------------------------------  
  2. // 函數(shù):NewPoint  
  3. // 功能:分配一個測點定義緩沖區(qū)。  
  4. // 入口參數(shù):  
  5. //    lpPNum    測點號指針。  
  6. // 出口參數(shù):  
  7. //    如成功,返回在測點定義表中的偏移;如失敗,返回0xffff。  
  8. //-----------------------------------------------------------------------------  
  9. WORD NewPoint(LPCSTR lpPNum)  
  10. {  
  11.     WORD i;  
  12.     LPTPOINT lpTmpPt;  
  13.  
  14.     // 在測點定義表中找空的緩沖區(qū)  
  15.     for (i=0;i<PtTab.wCount;i++) if (PtTab.lpPt[i].tpDel) break;  
  16.     if (i==PtTab.wCount) {  
  17.         // 如未找到,則判斷測點數(shù)是否已到***值,如已到,則返回失敗  
  18.         if (PtTab.wCount+1>MAXPOINT) return(0xffff);  
  19.         // 如未找到***值,則測點總數(shù)加1。即在測點定義表的***追加一個緩沖區(qū)  
  20.         PtTab.wCount++;  
  21.     }  
  22.     // 初始化緩沖區(qū)  
  23.     lpTmpPt=&PtTab.lpPt[i];  
  24.     // 將刪除標志(即緩沖區(qū)空標志)置1,作為后面具體定義時區(qū)分增加與修改的標志,  
  25.     // 如是修改,則此標志必為0  
  26.     lpTmpPt->tpDel=1;  
  27.     // 拷貝測點號到緩沖區(qū)  
  28.     lstrcpy(lpTmpPt->tpNum,lpPNum);  
  29.     // 將前一此操作測點的定義復(fù)制到緩沖區(qū)  
  30.     lstrcpy(lpTmpPt->tpName,HistPt.tpName);  
  31.     lpTmpPt->tpType=HistPt.tpType;  
  32.     lpTmpPt->tpOp=HistPt.tpOp;  
  33.     // 賦缺省的狀態(tài)與數(shù)值  
  34.     lpTmpPt->tpState=PS_SUSP;  
  35.     lpTmpPt->tpRValue=0;  
  36.     lpTmpPt->tpDValue=0;  
  37.     // 置缺省的狀態(tài)變化時間為當(dāng)前時間  
  38.     _fmemcpy(&lpTmpPt->tpTime,&Time,sizeof(SYSTIME));  
  39.     // 將偏移值返回  
  40.     return(i);  
  41. }  
  42.   

時間已經(jīng)過去十幾年了,計算機系統(tǒng)、開發(fā)語言、設(shè)計思想都有了很大轉(zhuǎn)變,現(xiàn)在要寫一段同樣功能的代碼,可能完全不同了。

***的變化應(yīng)該是面向?qū)ο蠹夹g(shù)的應(yīng)用,測點和測點表都會從struct變?yōu)閏lass,測點數(shù)組可能會用std::vector或std::list代替,并且用new來動態(tài)分配,宏定義也會換成常量或枚舉。而上面這個創(chuàng)建新測點的函數(shù),也會被封裝到測點表這個類中。面向?qū)ο蠹夹g(shù)改變了我們思考和實踐的方式,而且這個改變作用是巨大的。

再有就是一些設(shè)計思想的轉(zhuǎn)變,比如對注釋的看法。以前,注釋多可能意味著可讀性強。但《重構(gòu)》一書中說:“你看到一段代碼有著長長的注釋,然后發(fā)現(xiàn),這些注釋之所以存在乃是因為代碼很糟糕。”再看看上面這段代碼,前半段,其實是查找一個空的測點位置,完全可以用Extract Method(提煉函數(shù))重構(gòu)方法將其移入另外一個函數(shù),并給其一個準確的命名,而不需要注釋。后半段,“代碼已經(jīng)清楚說明了一切,注釋已經(jīng)變得多余了。”

匈牙利命名法,已成為爭議***的命名法,其類型冗余常常大于它所帶來的收益。它來自微軟的一名匈牙利程序員,但現(xiàn)在微軟的.Net和它的編程語言中,微軟更換了這一法則,在C#中以駱駝命名法和帕斯卡命名法居多。

計算機系統(tǒng)的提升也改變著程序。早年16位OS上編程需要區(qū)分遠指針和近指針,但現(xiàn)在32位環(huán)境下,C++指針變量前綴一般都是p,很少見到lp。

技術(shù)在進步,編程思想在轉(zhuǎn)變,人的思維也在不斷更新。也許再過十幾年,現(xiàn)在聽都沒有聽說過的新技術(shù)會大行其道,你回頭再看看現(xiàn)在的代碼,可能也會有像我今天的感覺。但無論怎樣,請不要輕視我們的過去,因為沒有過去的積累,就沒有今天的進步。
 

原文鏈接:http://www.cnblogs.com/wanghui9072229/archive/2011/04/25/2028793.html

【編輯推薦】

  1. 想成為更好的程序員嗎?學(xué)習(xí)Prolog語言吧
  2. 15件事造就有理想的程序員
  3. 程序員發(fā)現(xiàn)蘋果史上最嚴重的隱私侵犯行為
  4. 老程序員10年技術(shù)生涯的思考 從C++到Java
  5. 程序員如何在"小公司成長"和"大公司學(xué)習(xí)"
責(zé)任編輯:陳貽新 來源: wanghui的博客
相關(guān)推薦

2011-12-20 09:01:25

.NET

2014-12-05 10:06:44

程序員

2011-06-02 11:26:24

程序員

2015-01-04 14:18:21

程序員

2020-12-21 06:15:15

程序員互聯(lián)網(wǎng)年齡

2014-08-15 11:07:09

程序員

2015-04-01 13:35:33

程序員

2014-06-24 15:38:25

2020-12-15 08:05:02

redis單線程多線程

2011-11-02 09:57:28

程序員

2015-02-12 09:48:09

程序員

2012-09-10 09:16:54

2019-12-18 14:14:40

程序員存儲程序

2023-07-17 10:28:00

C/C++編程接口

2015-02-12 09:29:48

2019-11-18 10:05:43

程序員技能開發(fā)者

2019-11-18 10:16:37

工程師開發(fā)網(wǎng)絡(luò)

2009-02-17 10:12:10

ASP面試技術(shù)

2015-12-07 11:44:31

程序員厭倦工作

2015-12-09 09:17:11

情緒厭倦程序員
點贊
收藏

51CTO技術(shù)棧公眾號