垃圾“程式是怎樣煉成的”——關於《C程式設計伴侶》第A章(一)

來源:互聯網
上載者:User
【樣本】

 

 

【評析】

  標題明顯漏印了兩個字——“垃圾”,應為‘垃圾程式是怎樣練成的’。
  所提出的問題本身尚有一些不明確之處,有些必要的前提條件沒有交待。比如關鍵詞的最大長度。對關鍵詞的長度有無限定,會得到截然不同的代碼。
  注意,問題的要求是“按照從大到小的順序將這些檔案名稱輸出到螢幕和結果檔案”。

【樣本】

 

 

【評析】

  這裡的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]。所以這段代碼就跟硬是給四肢健全的狗裝假肢一樣荒唐。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.