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

 

 

【样本】

 

 

 

【评析】

  单词在文件中时不数,读入内存后不数,擦掉标点后不数,切分之后还不数,居然还要把单词“保存下来”,而且要保存在链表中。
  通俗一点来说就是,不会数文章中的单词的数目,需要先背下来;背下来之后还不行,还要把标点忘掉;忘掉之后还不行,还要把单词一个个地“切分”出来;切分之后还不行,还要找个单词本一个个地记录下来。普通本子是不行滴,必须是一页只能记录一个单词的本子,还必须只从前往后翻,
  需要何等“清晰的编程头脑”才能产生如此奇葩、雷人的构想啊?!
  代码部分,30是想当然的MagicNumber;_word以"_"开头,违背C语言业界常规。实际上以“_”开头的标识符是某些C++er命名成员变量的一种作风,在C语言中这样写是对C语言的一种污染。在C代码中这样写有一定的风险。

 

【样本】

 

 

 

【评析】

  嗯。还需要把这种蹩脚的本子和文章贴在一块。
  所有的程序员都知道,需求变更是一件足矣让人发狂的事件。因为以前的工作如果不是全部作废,至少也是重创累累,完好的设计、代码一下子变得到处都是毛病。
  在这里,并不存在需求变更。而是边写代码边改设计(扩展txtfile结构体)。这一般有两种可能:1.喜欢自虐;2.事先心中无数,像无头苍蝇一样的写代码。写不下去了,再临时抱佛脚修改数据结构。这是一种颠三倒四的工作方法。

 

【样本】

 

 

 

【评析】

  嗯,单词本的每一页上还记录单词出现的次数。可是问题的要求是计算关键词的词频,所以只需要求出关键词出现的次数和单词总数就足以完成要求。把所有的单词出现的次数都计算出来,是嫌计算机计算太快还是脑子进水了?

 

【样本】

 

 

 

【评析】

  到底是MVP,敢于“边设计,边施工”,彻底颠覆软件工程的基本原则。
  在实际工作中,很多人出于种种无奈都干过类似的脏活。但敢于在书中公开这么写就完全是另一回事了。
  “不仅能得到各个单词,还能得到各个单词的个数以及文件中总的单词数”。嗯,聪明,高效!为了解决饥饿问题,所以坐在马桶上吃饭,不但把饭给吃了,还能顺便把厕所给上了,尽管并不需要上厕所。

【样本】

 

 

 

【评析】

  小本子是一页一页贴出来的,每写一页,必须贴在本子的最后一页后面。没纸(malloc()调用返回NULL)了怎么办?就装模作样地写一页(strcpy(node->text,text))。至于写到了哪里,有没有贴到本子上他是不管的。
  实际上认为“新添加的结点肯定是链表的尾结点”而把新结点加到链表的尾部只能说是一种不理智的偏执。因为这种做法除了给自己添麻烦之外没有任何益处,也表明作者根本不懂如何使用链表。链表的优势是在头部加入结点或删除结点,特别适合描述FILO。

【样本】

 

 

 

【评析】

  谢天谢地!这回总算没采用“更加有效的查找算法——折半查找算法”,估计是上次使用了一回之后自己都对这种“更加有效的查找算法”心有余悸了吧。
  node变量多余。

posted @ 2012-12-13 23:15  garbageMan  阅读(1673)  评论(10编辑  收藏  举报