寫程式是一種態度(一)strcmp (轉)
寫正如做人,是一種態度。在寫一個商業級的程式,從寫程式碼的層次來說是否遵守預設的程式碼風格(code convention)?是否遵循簡單、易讀和?是否防範了預期的錯誤?是否檢查了洩漏?是否考慮會有多執行緒重入?等等。從設計的層次來說是否引入了工程的思想?是否採用了OO的分析?是否使用UML來主導了整個流程?是否考慮單元測試和整合測試的QA同步?是否定期生成穩定版本?等等。
:namespace prefix = o ns = "urn:schemas--com::office" />
所有的“是”,是一種正確的態度,它們會讓我們短期痛苦,但長遠快樂。想成為一個真正有責任感的軟體工程師,或者是一個真正有的軟體架構師(Architect),只有從這一個個“是”中,慢慢體會。
六年不停的軟體開發,有時並沒有讓我有什麼驕傲感,相反面對有的經典程式碼,面對前輩或先哲的醍醐灌頂,我的冷汗每個毛孔,令我感到了在這個領域的渺小和無知。也許是好事,人生本來就是螺旋式上升發展的,也許我到了另一個螺旋的開始了。希望用這個系列,同大家探討一下成長的上升過程,而不是原地盤旋。我將扔掉六年所有的浮躁,從頭開始端正態度做程式。
分析經典程式碼是一種最佳方式,我將從最簡單但又最絕妙的開始:strcmp
int __cdecl strcmp (
const char * src,
const char * dst
)
{
int ret = 0 ;
while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
++src, ++dst;
if ( ret < 0 )
ret = -1 ;
else if ( ret > 0 )
ret = 1 ;
return( ret );
}
這是MS C run-time中的strcmp實現原始碼。幾個問題將揭示它的精髓,會對我們寫出相應功能的高質量程式碼提供指導。
1.src和dst都為空串如何返回?
2.為什麼要用unsigned char*強制轉換?
3.可否用*src替換*dst作為while條件?
4.是否是multithread-safe?
5.能否用於multibyte-character strings的比較?
6.能否用更少行表達?
仔細回答了這些問題之後,你會發現思路是否開闊了一些?希望有這種效果。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-992160/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Serverless 是一種思想狀態Server
- 程式設計師的nginx技能包(4)——埠轉發,節約是一種美德,規範是一種程式設計師Nginx
- 編寫可維護的程式碼是一種溝通技巧 - Max Chernyak
- 在大公司寫程式碼是一種什麼樣的體驗?
- “全棧開發者”是一種心態 - Maciej Walkowiak全棧Mac
- 支付寶王益:40歲寫30年程式碼是一種什麼體驗?
- 假如特沒普是一種程式語言
- 編寫一個程式求輸入字串的長度字串
- 寫網路爬蟲程式的三種難度爬蟲
- 用C語言寫strcat、strcpy、strlen、strcmpC語言
- 在Excel VBA中寫SQL,是一種什麼體驗ExcelSQL
- 寫隨筆是一種有效的自我心理自療手段
- 靜態型別在 JavaScript 中是一種負擔嗎?型別JavaScript
- 程式碼簽名會成為一種常態嗎
- 【轉發】為什麼說程式設計師是一個極度勞累的工作?程式設計師
- Java是一種廣泛使用的程式語言Java
- 產業轉型升級是自救的一種辦法產業
- 程式設計師的三階段,薪資的三大“關”,你對程式設計到底持有的是一種什麼樣的態度?程式設計師
- 一種錯誤的 if 寫法
- Python是一種物件導向的動態型別語言Python物件型別
- (一) 溫度轉換問題
- 30歲轉行做初級程式設計師是一種什麼樣的體驗?程式設計師
- DRY是一種被高估的程式設計原理 - gordonc程式設計Go
- 突然意識自己曾經引以為豪的程式設計其實是一種工具,這是一種悲哀嗎?程式設計
- 寫了10年JAVA程式碼,為何還是給人一種亂糟糟的感覺?Java
- 有個AI陪你一起寫程式碼,是種怎樣的體驗?| 附ICLR論文AIICLR
- 28歲裸辭轉行前端是怎樣的一種體驗前端
- ikuai是linux的一種麼?AILinux
- strcmp原始碼原始碼
- 程式設計師需要專精,還是廣度多一點?程式設計師
- Google程式設計師的一天是如何度過的?Go程式設計師
- 一種提升SQL改寫效率的方法SQL
- 換一種方式編寫 Spring MVC 介面SpringMVC
- 新學一種c語言寫法C語言
- pdf是一種什麼格式?pdf怎麼轉換成jpg圖片?
- 手寫一個靜態伺服器伺服器
- 做大廠程式設計師是一種怎樣的體驗?程式設計師
- 程式設計師到底是一種什麼樣的存在?程式設計師
- 改和看別人的程式碼是一種什麼感受