• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

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

发布: 2007-7-01 20:40 | 作者: admin | 来源: | 查看: 21次 | 进入软件测试论坛讨论

领测软件测试网

写程序正如做人,是一种态度。在写一个商业级的程序,从写代码的层次来说是否遵守默认的代码风格(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.能否用更少行表达?

 

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


文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网