קוד ספגטי


כל מה שרצית לדעת על קוד ספגטי:
קוד ספגטי הוא כינוי לקוד של תוכנית מחשב הכתוב באופן לא מובנה, כך שלקורא הנתקל בקוד לראשונה קשה מאוד להתמצא בו, והפקודות הכתובות בו מעורבבות זו בזו כספגטי בצלחת.
בשל היותו קוד כזה לא קריא, קשה לשימוש חוזר ומורכב לתחזוקה, הגישה הרווחת היא שקוד הספגטי אינו מקובל ואף מעיד על כישלון מסוים של המתכנת ליצור קוד ברור.
קוד ספגטי נוצר לעתים קרובות במערכות תוכנה מורכבות, בעקבות יצירת גרסה ראשונית (גם כזו שכתובה היטב) של התוכנה ולאחר מכן הוספת תכונות, ללא אפשרות של תכנון מחדש של קוד מערכת התוכנה (בעיקר עקב אילוצי זמן).
מאפיין טיפוסי של קוד הספגטי הוא שימוש נרחב בפקודת goto (לפני שתכנות מובנה הפך לנורמה מקובלת), המורה למעבד המחשב "לקפוץ" לפקודה הנמצאת בשורה מסוימת, שלא לפי סדר השורות בקוד.
ה"קפיצה" הזו עשויה ליצור לולאות תכנותיות – לרוב מותנות, על ידי פקודת if – או שגרות (רוטינות) מלאכותיות, באופן שייקשה לזהותן.
אם ממשיכים לעשות שימוש בשיטה הזו לאורך זמן, במהלך תחזוקת אותו קוד, הולכים ונוצרים בו טלאים רבים של פקודות goto, ה"מקפיצים" את המעבד הלוך ושוב ברחבי הקוד, אשר נעשה מסובך ומפותל.
בשנת 1968, פרסם אדסחר דייקסטרה את מאמרו המפורסם "Go To Statement Considered Harmful", בו שלל את השימוש בפקודה זו, ובעקבותיו המושג תכנות מובנה הלך ותפס מאז תאוצה.
כיום, השימוש בפקודת goto נחשב לבעייתי בהנדסת התוכנה, ומשתמשים בה רק במקרים חריגים (כגון יציאה מלולאה מקוננת).
הקשר שבו מקובל ואף יעיל להשתמש בקוד ספגטי, הוא במקרה שבו הבלגן הוא חלק מהמטרה: קוד המכונה של וירוסים נפוצים רווי בדרך כלל בפקודות קפיצה אקראיות למראה, או אפילו אקראיות ממש.
טכניקה זו מקשה על איתור הווירוס ועל הניתוח של דרך פעולתו.
בנוסף, ישנן תחרויות כתיבת קוד בלתי קריא (למשל Obfuscated C Code); גם כאן, פקודות GOTO מעלות את מידת האי-קריאות של הקוד.

נלקח מויקיפדיה

הגדרות נוספות הקשורות לקוד ספגטי:
תכנות
קצרמר תוכנה