麵條式代碼

麵條式代碼(spaghetti code)是非結構化和難以維護的原始碼的貶義詞組,廣泛地解釋。 意大利麵條代碼可能由多種因素引起,例如易變的項目要求,缺乏編程風格規則以及能力或經驗不足。

基本介紹

  • 中文名:麵條式代碼
  • 外文名:spaghetti code
含義,發展,代碼,

含義

代碼過度使用GOTO語句而不是結構化編程結構,從而導致錯綜複雜和不可維護的程式,通常稱為意大利麵條代碼。 這樣的代碼有一個複雜和糾結的控制結構,導致程式流程在概念上就像一碗意大利麵,扭曲和糾結。在美國國家標準局1980年出版的一本出版物中,用“意大利麵條”這個詞來描述那些“分散和分散的檔案”的較舊的節目。 意大利麵代碼也可以描述一種反向模式,在這種模式下,面向對象是以程式風格編寫的,比如創建方法過於冗長和混亂的類,或者拋棄面向對象的概念,比如多態。這種形式的意大利麵代碼的存在可能會顯著降低系統的可理解性。

發展

尚不清楚麵條代碼的用法何時開始普遍使用;然而,1977年出現了幾個參考文獻,其中包括馬克羅尼爾在19歲的人工智慧和程式語言研討會論文集中發表的“比不上意大利麵條”。在1978年出版的關於使用PL/I,PL/CS和PL/CT進行規範編程的入門書中,理察康威使用這個術語來描述“與一盤意大利麵具有相同清潔邏輯結構”的程式類型,在與他共同撰寫的1979年與他合著的“編程入門”一書中重複出現的一句話。在1988年的論文A軟體開發和增強的螺旋模型中,這個術語用來描述代碼和修復模型的老練,缺乏規劃並最終導致了瀑布模型的發展。在1979年為COBOL程式設計師編寫結構化程式設計的書中,作者Paul Noll使用短語意大利麵條代碼和老鼠窩作為同義詞來描述結構不良的原始碼。
在Ada-Europe會議上,Ada被形容為迫使程式設計師“產生可理解的,而不是意大利麵代碼”,因為它的限制性異常傳播機制。
1981年,密西根技術公司的計算機語言欺騙題為“BASICally speaking ... FORTRAN bytes !!”,作者將FORTRAN描述為“證明IBM的聯合創始人是義大利人,因為它完全由意大利麵條代碼組成”。非結構化代碼的這個術語的流行至少部分是由於兩位義大利數學家(CorradoBöhm和Giuseppe Jacopini)於1966年發表了“結構化程式定理”,後來兩年後被Edsger引用迪傑斯特拉在他的公開信中(一位編輯添加了標題“去認為有害”)。

代碼

意大利麵條式代碼( spaghetti code)一詞通常用於描述捆綁在一起並且具有低內聚力的類和方法。下面提供了意大利麵條式代碼的示例。相對通用的Uti1s類將使用許多不同對象並且有許多依賴關係。它執行很多操作,因而很難實現重用。
phpclass utils{           public static function formatAddress(sformatType, Saddressl,Saddress2, City, Sstate){               return some address string";}        public static function formatpersonName (sformatType, SgivenName,SamilyName){           return some person name;}       public static function parseAddress(SformatType, Sval){           return new Address 0;}       public static function parseTelephoneNumber(sformatType, Sval){       return new TelephoneNumber 0;}}  

相關詞條

熱門詞條

聯絡我們