成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 前端
今天一個偶然的機會打開了自己以前寫的舊程序,時間大概是上世紀90年代后期(96-99年左右),代碼是用C語言寫的,運行在Windows 3.1或Windows 95環境下。看到它們,有一種看上學時照片的感覺,感覺是那么的青澀。拿出一段曬曬

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

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

時間已經過去十幾年了,計算機系統、開發語言、設計思想都有了很大轉變,現在要寫一段同樣功能的代碼,可能完全不同了。

***的變化應該是面向對象技術的應用,測點和測點表都會從struct變為class,測點數組可能會用std::vector或std::list代替,并且用new來動態分配,宏定義也會換成常量或枚舉。而上面這個創建新測點的函數,也會被封裝到測點表這個類中。面向對象技術改變了我們思考和實踐的方式,而且這個改變作用是巨大的。

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

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

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

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

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

【編輯推薦】

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

2011-12-20 09:01:25

.NET

2014-12-05 10:06:44

程序員

2020-12-21 06:15:15

程序員互聯網年齡

2011-06-02 11:26:24

程序員

2015-01-04 14:18:21

程序員

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

2015-02-12 09:29:48

2019-12-18 14:14:40

程序員存儲程序

2023-07-17 10:28:00

C/C++編程接口

2019-11-18 10:05:43

程序員技能開發者

2019-11-18 10:16:37

工程師開發網絡

2009-02-17 10:12:10

ASP面試技術

2015-12-07 11:44:31

程序員厭倦工作

2015-12-09 09:17:11

情緒厭倦程序員
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 夜夜骑首页 | 国产精品一区二区视频 | 精品欧美在线观看 | 久久婷婷麻豆国产91天堂 | 久久国产精品精品国产色婷婷 | 欧美视频免费在线 | 伊人伊成久久人综合网站 | 久久国产精品99久久久久久丝袜 | 欧美精品一区在线观看 | 欧美中文字幕在线 | 国精产品一品二品国精在线观看 | 欧美日韩精品一区二区天天拍 | 欧美激情免费在线 | 99热在这里只有精品 | 一区二区三区四区在线播放 | 毛片站| 国产一区二区三区免费 | 久久久精品网 | 综合色在线 | 成人av免费在线观看 | 亚洲网址 | 在线观看黄色 | 国产真实乱全部视频 | 久久av一区二区三区 | 久久精品一区二区视频 | www.一区二区三区 | 欧美11一13sex性hd | 日韩在线综合 | 一区二区三区视频在线观看 | 一区二区三区久久 | 成人午夜av | 国产 日韩 欧美 制服 另类 | 久久久久国产精品一区 | 午夜影院在线观看视频 | 91久久久久久久久久久久久 | 天堂一区在线 | 久久久精品欧美 | 韩日一区 | 国产农村妇女毛片精品久久麻豆 | 亚洲精品高清视频在线观看 | 中文在线a在线 |