写程序是一种态度(一)strcmp

原创 2002年08月05日 10:55:00

写程序正如做人,是一种态度。在写一个商业级的程序,从写代码的层次来说是否遵守默认的代码风格(code convention)?是否遵循简单、易读和效率?是否防范了预期的错误?是否检查了内存泄漏?是否考虑会有多线程重入?等等。从设计的层次来说是否引入了软件工程的思想?是否采用了OO的模式分析?是否使用UML来主导了整个流程?是否考虑单元测试和集成测试的QA同步?是否定期生成稳定版本?等等。

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office: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.srcdst都为空串如何返回?

2.为什么要用unsigned char*强制转换?

3.可否用*src替换*dst作为while条件?

4.是否是multithread-safe

5.能否用于multibyte-character strings的比较?

6.能否用更少行表达?

 

仔细回答了这些问题之后,你会发现思路是否开阔了一些?希望有这种效果。

生活是一种态度,得失是一种心境

细看大千世界,回想生活种种,得与失就像是,各置于天枰两端托盘中的物品。如一旦取出一端的物品,另一端就会下坠。如此可见,得失相依,逢多必少,这就是生活的原本,也是世间万物的自身规律,如同春华秋实一样不容...
  • yu12432425
  • yu12432425
  • 2014年09月02日 12:22
  • 251

坚持是一种人生态度,跟能力无关!

目前供职于某公司的研发部担任软件工程师兼日语(现场/会议)口译,同时在上海交通大学软件学院读研。 兴趣爱好:阅读和写作、讨论分享想法、解决问题和编码、跑步、电影、日语朗读、简单生活。 目前已经在...
  • fonxian
  • fonxian
  • 2015年10月12日 19:24
  • 1018

写程序是种态度

         马上就要毕业了,原以为我有不错的学习成绩,丰富的实习经验和项目经验,应该可以找个相当不错的工作。可从目前来说,我失败了。          失败有失败的好处,这样我能很好的检讨下...
  • pqw1157
  • pqw1157
  • 2007年11月14日 11:27
  • 487

写原创-关注是一种态度

众所周知都知道,做网站优化离不开原创。但是要定时定量更新并保持足够多的原创却不是那么轻而易举的事情。有时候实在是没题材或者是没灵感了,但又不得不原创的时候,我们就习惯去其他平台或者是网站上去找灵感,久...
  • u010953886
  • u010953886
  • 2013年10月31日 17:45
  • 352

设计,是一种态度

文 史文超微软亚洲研究院创新工程中心实习生 我 们每个人在高考填报志愿的那一刻,就被打上了不同的标签,注定我们要走上不同的职业生涯,而我的标签是一名设计师。在进入大学的一千多个日日夜夜中,我无 ...
  • BOPGroup
  • BOPGroup
  • 2010年11月10日 09:23
  • 722

学习,是一种态度

回归CSDN,哈哈,应该不叫回归吧。自从上次写过一篇大型试验的文章之后,除了去论坛和资源区,基本就没再管过博客区。 一、本身不是什么大神和技术型人才,干海绵挤得水都比我多,没什么感想,大多在解决问题...
  • u012150933
  • u012150933
  • 2016年12月03日 21:04
  • 77

坚持是一种态度!

总想抽些时间来学习,每次都是托到没时间。被别的事情打乱了想法。 今天在这里开始一个新的起点,开始学习编程。 学习一门,精通一门。 朝着目标,一步一步,坚持每天学习,记blog,来促使自己学习。...
  • qqlpml
  • qqlpml
  • 2012年05月27日 17:40
  • 197

工作是一种态度

工作是一种态度,不同的态度带来不同的结果,本文谈谈工作态度的问题。 每个人到了一定的年龄之后,都会获得一份职业,获得谋生的权利和发展的机会,由于景况的千差万别和个人需求与理想的各不相同,每个人的职业...
  • load_life
  • load_life
  • 2012年02月27日 21:11
  • 345

正视,是一种态度

  前段日子期末考试,好友复习的时候遇到一计算题不会,请教一高手,经两次解释还没弄明白,由于不好意思再问,假装自己听懂了。后又跑来问我是否知道解题过程。   在请教问题的时候,我们的脸皮就是要厚些,不...
  • maimaitina
  • maimaitina
  • 2009年08月05日 16:43
  • 106

花钱是一种态度

  2004年2月,美国《福布斯》杂志公布:比尔·盖茨以其名下的净资产466亿美元,仍排名世界富翁的首位。 然而,让人意想不到的是,这位世界首富没有自己的私人司机,公务旅行不坐飞机头等舱却坐经济舱,衣...
  • tanaya
  • tanaya
  • 2004年09月10日 10:13
  • 1540
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:写程序是一种态度(一)strcmp
举报原因:
原因补充:

(最多只允许输入30个字)