اسپاگتی کد (Spaghetti Code) (جشنواره عید تا عید)
اسپاگتی کد (Spaghetti Code)
(این مقاله از طرف جناب آقای محمد تقی زاده برای جشنواره عید تا عید جاواکاپ ارسال شده است و محتوای این مطلب لزوماً موردتأیید جاواکاپ نیست. لطفاً با مطالعه، بازنشر و امتیازدهی به این مطلب، به انتخاب برترین مقاله در این جشنواره کمک نمایید.)
زبانهای سطح بالای قدیمی (… ,FORTRAN, COBOL, PL/I) متکی به دستورات GO TO بودند. این دستورات به برنامهنویسها اجازه میدادند که به آسانی از یکسری مجموعه کد به مجموعه کد دیگری پرش کنند. اما مشکلی که GO TO ایجاد میکرد پیچیدگی و آشفتگی برنامه و کدها بود، به شکلی که بعد از مدتی درک ساختار برنامه مشکل میشد. در چنین حالتی ساختار برنامه به اسپاگتی کد (Spaghetti Code) تبدیل میشود. علت انتخاب این اصطلاح این است که برنامهی شما مثل یک ظرف اسپاگتی میشود، رشتههای پیچخورده، در هم تنیده و آشفته. به عنوان مثال این برنامه که به زبان FORTRAN نوشته شده است را با در نظر گرفتن این قوانین پرش، تجزیه و تحلیل کنید:
IF (expression) number1, number2, number3
* If the expression evaluates to a negative number, branch to location number1
* If the expression evaluates to 0, branch to location number2
* If the expression evaluates to a positive number, branch to location number3
و این هم خروجی برنامه:
هربرت شیلد که نویسندهی مشهوری در زمینه جاوا است و چندین کتاب در مورد این زبان نوشته است، در بخشی از کتاب مرجع جاوای خویش اسپاگتی کد را اینگونه تعریف میکند:
Spaghetti Code:
A mass of tangled jumps and conditional branches that make a program virtually impossible to understand.
نکتهی جالبی که در مورد زبان جاوا وجود دارد این است که کلمهی کلیدی goto رزرو شده اما استفاده نمیشود. شاید سازندگان و طراحان جاوا به نوعی دردسرهای رویارویی با اسپاگتی کد را درک کرده اند. در جاوا به نوعی میتوان دستور goto را با دستور break ایجاد نمود.
منبع: