• 垃圾“程序是怎样炼成的”——关于《C程序设计伴侣》第A章(一)


    【样本】

    【评析】

      标题明显漏印了两个字——“垃圾”,应为‘垃圾程序是怎样练成的’。
      所提出的问题本身尚有一些不明确之处,有些必要的前提条件没有交待。比如关键词的最大长度。对关键词的长度有无限定,会得到截然不同的代码。
      注意,问题的要求是“按照从大到小的顺序将这些文件名输出到屏幕和结果文件”。

    【样本】

    【评析】

      这里的128和1024*128都是来历不明的MagicNumber。128作为文件名的长度可能尚有情可原,1024*128绝对是“天外飞仙”了。估计是作者当时一咬牙一跺脚硬憋出来的。
      这个txtfile结构的设计本身也莫名其妙。统计词频为什么要弄这么大一个数组呢?百思不得其解。后来才猜到作者的意图是把文件读到数组中之后再统计词频。这个想法实在太奇葩了,简直是奇葩中的奇葩。数一篇文章中有多少字,居然想到要先把文章背下来。幼儿园的孩子也不会想出如此弱智的办法吧?

    【样本】

    【评析】

      果不其然,真的把文件的内容读到数组中了。
      看来一个人愚蠢并不难,难的是能把愚蠢的想法贯彻到底。比这更难的呢?则是敢于把这种愚蠢印在书上欺骗不懂事的小朋友。然而这些都还不是最难的,最难的是敢于把这种印在书上欺骗小朋友的愚蠢说成是“实战,可以让你养成良好且符合业界标准的编程习惯和编程思想,为今后的继续前行打下必要的基础”(该书策划编辑陈冰语,P1~2)。TMD,给人家挖了一个深不见底的大坑,骗人家跳下去,还说是帮人家打“基础”。这“基础”打的也太深了吧,都特么打到海平面以下去了。
      即使抛开这个愚蠢的构思不谈,只从代码的角度考察,这个函数也是漏洞百出。
      首先

    //参数合法性检查
    if(NULL == file )
       return ;

       当参数不合法时,函数就跟参数合法时一样地若无其事地返回了。那这个“参数合法性检查”还有什么意义?不就是一副聋子的耳朵吗?这就像派一个人检查火灾隐患,这个发现了火灾隐患但却一声不吭知情不报一样。所以,从这个角度看,这里的“参数合法性检查”是形同虚设的装腔作势,无论如何都必然会渎职。
      同样,当fp为NULL即文件打开失败时,这个函数同样悄然无声地就像万事大吉一样地返回了。这样一来,if(NULL!=fp)就跟马戏团里的猴子敬礼一样滑稽了:虽然装得很像那么回事,但其实并没有礼貌的含义,无非是东施效颦一样装模作样摆出的一个姿态罢了。

    【样本】

     

    【评析】

      这段代码更滑稽,filecount与files本是互不相干的两个数据对象,但在
      for(int i = 0;i<filecuont;i++)
    中,代码作者硬生生地乱点鸳鸯谱,把filecount说成是files的尺寸,然而files实际上有自己的尺寸,那就是sizeof files/sizeof files[0]。所以这段代码就跟硬是给四肢健全的狗装假肢一样荒唐。

  • 相关阅读:
    用记事本编写一个Servlet项目
    Servlet开发(一)
    41、java与mysql乱码的问题
    40、JDBC相关概念介绍
    mysql-5.7.12-winx64安装版配置、使用
    39、集合线程安全问题
    38、各Set实现类的性能分析
    电脑取随机数是什么原理,是真正的随机数吗?转自知乎.
    创建Car类,实例化并调用Car类计算运输的原料量是否足够
    用Random类输出验证码
  • 原文地址:https://www.cnblogs.com/pmer/p/2812205.html
Copyright © 2020-2023  润新知