本站首页    管理页面    写新日志    退出


«September 2025»
123456
78910111213
14151617181920
21222324252627
282930


公告

☆★☆★☆★☆★☆★☆
生活的点点记录,以及一些体会...........

喜欢是淡淡的爱,爱是深深的喜欢.

时间会见证一切.......................

欢迎大家指出错误,共同进步..........

期待中..............................

☆★☆★☆★☆★☆★☆


我的分类(专题)

日志更新

最新评论

留言板

链接

世纪音频

 

 


Blog信息
blog名称:
日志总数:162
评论数量:312
留言数量:0
访问次数:946250
建立时间:2005年5月17日




[读书笔记]写程序是一种态度(一)strcmp
文章收藏

oceanblue 发表于 2009/4/27 15:37:01

写程序正如做人,是一种态度。在写一个商业级的程序,从写代码的层次来说是否遵守默认的代码风格(code convention)?是否遵循简单、易读和效率?是否防范了预期的错误?是否检查了内存泄漏?是否考虑会有多线程重入?等等。从设计的层次来说是否引入了软件工程的思想?是否采用了OO的模式分析?是否使用UML来主导了整个流程?是否考虑单元测试和集成测试的QA同步?是否定期生成稳定版本?等等。   所有的“是”,是一种正确的软件开发态度,它们会让我们短期痛苦,但长远快乐。想成为一个真正有责任感的软件工程师,或者是一个真正有经验的软件架构师(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.能否用更少行表达?   仔细回答了这些问题之后,你会发现思路是否开阔了一些?希望有这种效果。


阅读全文(3959) | 回复(1) | 编辑 | 精华
 


回复:写程序是一种态度(一)strcmp
文章收藏

zz(游客)发表评论于2009/6/10 20:24:07

jeux de fille juegos de ni as giochi per ragazze


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.031 second(s), page refreshed 144784802 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号