« | September 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | | | | |
| 公告 |
☆★☆★☆★☆★☆★☆ 生活的点点记录,以及一些体会...........
喜欢是淡淡的爱,爱是深深的喜欢.
时间会见证一切.......................
欢迎大家指出错误,共同进步..........
期待中..............................
☆★☆★☆★☆★☆★☆ |
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.能否用更少行表达?
仔细回答了这些问题之后,你会发现思路是否开阔了一些?希望有这种效果。 |
|
回复:写程序是一种态度(一)strcmp 文章收藏
zz(游客)发表评论于2009/6/10 20:24:07 |
jeux de fille
juegos de ni as
giochi per ragazze |
|
» 1 »
|