zoukankan      html  css  js  c++  java
  • 一个回车符引发的问题思考

            在维护和开发通信类软件产品的过程中。常常须要处理一些软件故障问题。在问题刚出现的时候,大家可能显得手足无措,有一种天都要塌下来的感觉。但在问题原因找到之后。大家又会认为问题原因非常的简单。要是当初开发的时候细致一点,是不会犯这种低级错误的。

    近期。本人就遇到了一个回车符引发的问题。

           近日。在开发某软件版本号时须要对文件进行操作,在代码中使用了Linux C语言中的opendir函数。可是该函数始终返回NULL,提示文件路径不存在。

           本人查了一下该函数的详细情况。opendir函数的原型为:

           DIR* opendir (const char * path );

           功能为:

           成功时打开一个文件夹。在失败的时候返回一个空的指针。

           既然在版本号中始终返回NULL,那就表示opendir函数运行失败了。

     

           遇到这个问题,本人认为非常诡异。由于在使用这个函数编写代码之前。先写了測试程序来验证该函数的功能,验证结果都是正常的。此外,測试程序和版本号中的程序使用的就是同一个文件夹。该文件夹也具有777的权限。

            究竟是什么原因呢?问题长期没解决就easy引起慌乱,想要尝试不同的解决的方法。此时,本人怀疑可能是开发平台对函数做了限制,于是便在各种平台版本号上移植。可是终于得到的结果都是同样的。

           在挣扎了非常长时间之后,该问题依旧存在。无奈之下,仅仅好求助同事。可是,同事開始也是使用同样的方式,即检查文件夹是否存在、函数是否包括了头文件等,但全部的努力都是徒劳的。

           最后,实在是没有办法了,我直接将文件夹在代码中写死(即固定某个值)来測试(曾经的文件夹是多个变量拼接而成的。如今就直接将终于的文件夹存放到变量szSrcDir)。測试竟然成功了,真的是不可思议!

    此时,再细致看了一下代码,顿时无语了。

          snprintf(szSrcDir, sizeof(szSrcDir)-1,"%s/%d/%d/%d/ ",

                 ……,

                 ……,

                 ……,

                 ……);

            原来,在组装的路径后面多了一个 。才导致了之后的一系列结果。

    这也难怪。无论移植到哪里,仅仅要用这条语句。结果肯定是的同样,都是回车符( )惹的祸。

    这真是让人哭笑不得,一切都是自己编码时不细致所致。

            改动代码,将 去掉,測试通过。

            snprintf(szSrcDir, sizeof(szSrcDir)-1,"%s/%d/%d/%d/",

                 ……,

                 ……,

                 ……,

                 ……);

     

            问题原因是找到了,但我们要学会吃一堑,长一智。以后怎样避免相似的问题出现呢?除了在编码是要极其专心之外。这还须要掌握一些主要的排错方法和长期的经验积累。在自己掌握的方法都无法定位问题时。就仅仅能靠经验。若自己经验不足。那就须要请教相关同事,千万不可一个人埋头在那里苦思冥想。

    当自己陷入一种误区之后,就非常难从中走出来。须要借助他人的力量才行。

    我们是工作在一个团队之中,大家始终要记住这句话。

           对于软件开发者的细心。我想多说几句:

           (1) 在阅读他人代码的过程中,我常常看到有单词或文字写错的现象。如将“flag”写成了“falg”,将“phone”写成了“pone”,将“账户”写成了“帐户”等。这尽管不影响程序的运行,但也从側面反映了一个开发者的素质。

    当客户看到你的代码中有错误的单词或文字时,他可能会想你写的程序是否也会有问题。

    在写完代码之后,我们要多检查几遍,一般都可以规避这类问题。

    文档也是一样,在编写完文档之后,最好用语法检查工具来检查一遍。

           (2) 我们每天都要处理非常多邮件。在阅读邮件的时候,常常看到有错别字、标点符号误用等现象。这尽管也不是什么严重的问题,但当别人看到你邮件中错别字连篇的时候,对你的印象就差了。

    有时,一个错别字就可能导致别人的错误理解,会产生什么样的后果大家都不知道。因此。作为开发者,我们同样要学好语文,要严格要求自己。

     

          “小心驶得万年船”。对于软件产品来说,更是如此。

    在编写代码和文档的过程中,我们一定要杜绝一些低级错误,让自己的精力可以集中在最有创造力的事情上。

    (本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!

    )

  • 相关阅读:
    实现图片加载时显示百分比思路——serverpush
    我对大项目的看法(定义)
    lucene
    Access常用内置SQL函数
    闰年算法
    DotFuscator使用步骤
    软件加密狗破解思路和方法
    Lucene(.net)学习
    .Net 代码安全保护产品DNGuard HVM使用
    为什么动态创建的控件没有显示出来
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/6811091.html
Copyright © 2011-2022 走看看