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

前文链接:

【样本】

    ——陈良乔 ,《C程序设计伴侣》,人民邮电出版社,网站空间,2012年10月,p277【评析】

  既然已经废了很大的劲把文件内容读入了数组,现在总该统计词频了吧?然而不是,居然还要“清理文本”。如何清理文本呢?竟然是“删除文本内容中的无效字符”,“例如单词之后的标点符号等”。我勒个去!这就等于说,想要统计关键词在文章中的词频,不但要先把文章背下来,还要再把标点符号忘掉才行。

【样本】

    ——陈良乔 ,《C程序设计伴侣》,人民邮电出版社,2012年10月,p277【评析】

  while(i<strlen(text))

【样本】

——陈良乔 ,《C程序设计伴侣》,人民邮电出版社,2012年10月,p277【评析】

  “清理后”,香港空间,居然还不肯统计单词,还要把“单词切分出来”。很明显这不是由于架子太大而摆谱,而是因为作者根本不具备写程序的基本能力。这点在下面代码中很容易得到证实。

【样本】

——陈良乔 ,《C程序设计伴侣》,人民邮电出版社,2012年10月,p277~278【评析】

  代码中

  bool continchar = false ;定义了一个标志变量,远远地就能闻到一股馊味儿。这种写法多半是从谭浩强的书中学来的。无法从整体上把握程序、写代码时到处打补丁的人特别喜欢用这种标志变量。  int i = 0 ;  int w = 0 ;  除了笨拙、啰嗦,没有其他更恰当的形容词。同时表明作者不懂得怎样使用指针。  while(i<strlen(text))  参见前面一段的评析。  if((‘ ‘ == text[i])||( ‘\n’ == text[i]))中的“||( ‘\n’ == text[i])”是很无聊的画蛇添足,因为在前面“清理文本”部分早就把’\n’清理掉了。在执行cutword()函数时字符串中根本不存在’\n’这种字符。  代码中最严重的问题是  word[w] = text[i];  因为word的长度是有限的,text中的单词超过word数组长度时,程序会发生严重错误。  这个错误是致命的缺陷,归根到底是因为  char * cutword(char *text,char *word)

的设计错误,这里缺少一个word相关数组尺寸的参数。这就是所谓的接口设计错误,打个通俗的比方,网站空间,就如同生产三相电源插头,但产品只有两只脚一样。因此,这个cutword()函数并不是次品,而是废品。

人的一生要疯狂一次,无论是为一个人,一段情,一段旅途,或一个梦想。

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

相关文章:

你感兴趣的文章:

标签云: