Spagettikód

A Wikipédiából, a szabad enciklopédiából
(Spagetti kód szócikkből átirányítva)
Ugrás a navigációhoz Ugrás a kereséshez

A számítógép-programozásban a spagettikód a strukturálatlan és nehezen karbantartható forráskód pejoratív megnevezése. Többféle oka lehet, a programozó tapasztalatlansága, a gyorsan változó követelmények, vagy a programozási stílusra vonatkozó szabályok hiánya.[1]

Jelentése[szerkesztés]

Habár sokszor az egyszerűen csak nehezen érthető, követhető kódot is spagettikódnak nevezik, eredetileg a strukturált programszerkezetek helyett a GOTO utasítás túlzott használatát nevezik így, mivel a program összegabalyodott, emiatt karbantarthatatlan.[2] A kód szerkezete bonyolult és szövevényes, mint egy tál spagetti.[3] A United States National Bureau of Standards egy 1980-as publikációjában a spaghetti program kifejezést használták a régebbi, szétszórt és töredezett szerkezetű programokra.[4]

Objektumorientált környezetben a nem objektumorientált, strukturált kód is lehet spagettikód, hosszú és nehezen érthető metódusokkal, vagy visszaél az olyan objektumorientált lehetőségekkel, mint a polimorfizmus, amikor az aggregáció célravezetőbb lenne. A teljes program megértését ez is megnehezíti.

Története[szerkesztés]

A kifejezés eredete nem tisztázott. 1977-ben már használták, köztük Steele cikke Macaroni is Better Than Spaghetti címmel a Proceedings of the 1977 szimpózium keretében, melynek témája a programnyelvek és a mesterséges intelligencia volt.[5] Richard Conway 1978-ban megjelent könyve, A primer on disciplined programming using PL/I, PL/CS, and PL/CT címmel. Ebben olyan programokat jellemzett így, amelyek logikai szerkezete ugyanolyan átlátható, mint egy tál spagetti. Ez a mondat szerepel David Gries-szel közös könyvében, ami 1979-ben jelent meg An Introduction to Programming címmel.[6] Az A spiral model of software development and enhancement lap 1988-ban a kódolj és javíts korábbi gyakorlatát bírálta, azzal a tanulsággal, hogy szükség van tervezésre, és helyette a vízesés modellt javasolta.[7] 1979-ben Paul Noll Structured programming for the COBOL programmer című könyvében a spagettikód és a patkányfészek szinonímákat alkalmazta a gyengén strukturált kódra.[8]

Az Ada – Europe '93 konferencián az Adát azzal dicsérték, hogy kivételterjedési mechanizmusa rákényszeríti a programozókat arra, hogy érthető kódot írjanak.[9]

1981-ben a The Michigan Technic BASICally speaking...FORTRAN bytes!! című cikkében rosszallását fejezte ki a FORTRAN iránt, mivel teljes egészében spagettikódból áll.[10] Habár ez a cikk úgy írta, hogy ez is bizonyítja, hogy olaszok működtek közre az IBM alapításánál, olasz matematikusok, Corrado Böhm és Giuseppe Jacopini már 1966-ban megjelentették cikküket, amiben bizonyították a strukturált programozás tételét. Edsger Dijkstra idézte ezt a cikket, a Kártékonynak tekinthető GO TO utasítás címmel megjelent nyílt levelében.[11]

Kapcsolódó fogalmak[szerkesztés]

A ravioli kód az objektumorientált programozásban azt jelenti, hogy ugyan az osztályok jól strukturáltak, de nehéz követni kapcsolataikat.

A lasagna kód arra utal, hogy a kód rétegeinek kapcsolata olyan összetett, hogy az egyik réteg változásai miatt a többi rétegen is változtatni kell.

Jegyzetek[szerkesztés]

  1. (2004. augusztus 21.) „Straightening spaghetti-code with refactoring?”. Software Engineering Research and Practice, 846-852. o. (Hozzáférés ideje: 2018. március 5.)  
  2. (2005. augusztus 21.) „Pronouns and procedural meaning: The relevance of spaghetti code and paranoid delusion”. Oxford University Working Papers in Linguistics, Philology and Phonetics 10, 187-210. o. [2018. március 6-i dátummal az eredetiből archiválva]. (Hozzáférés ideje: 2018. március 5.)  
  3. Chapter 6 - Iteration, Java Concepts for AP Computer Science, 5th ed. [i.e. 2nd ed.]. (English nyelven), Hoboken, NJ: J. Wiley & Sons, 235–236. o. (2008. augusztus 21.). ISBN 978-0-470-18160-7. Hozzáférés ideje: 2017. január 2. 
  4. United States National Bureau of Standards. ASTM special technical publication. United States Government Printing Office (1980) 
  5. Conway, Richard. A primer on disciplined programming using PL/I, PL/CS, and PL/CT. Winthrop Publishers (1978). ISBN 0-87626-712-6 
  6. An Introduction to Programming, 3rd, Little, Brown (1979). ISBN 0-316-15414-8 
  7. Boehm, Barry W. (1988. május 1.). „A spiral model of software development and enhancement”. IEEE Computer 21 (2), 61–72. o, Kiadó: IEEE. DOI:10.1109/2.59.  
  8. Noll, Paul. Structured programming for the COBOL programmer: design, documentation, coding, testing. M. Murach & Associates (1977) 
  9. Schwille, Jürgen (1993). „Use and abuse of exceptions — 12 guidelines for proper exception handling” Ada – Europe '93 (Proceedings). Lecture Notes in Computer Science 688: 142–152, Springer Berlin Heidelberg. doi:10.1007/3-540-56802-6_12. 
  10. MTSBS (March–April 1981). „BASICally speaking...FORTRAN bytes!!”. The Michigan Technic 99 (4), Kiadó: College of Engineering, University of Michigan.  
  11. Bohm, Corrado (1966. május 1.). „Flow Diagrams, Turing Machines and Languages with Only Two Formation Rules”. Communications of the ACM 9 (5), 366–371. o. DOI:10.1145/355592.365646.  

Források[szerkesztés]

Fordítás[szerkesztés]

Ez a szócikk részben vagy egészben a Spaghetti code című angol Wikipédia-szócikk fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel.