Arabic Bulgarian Chinese Croatian Czech Danish Dutch English Estonian Finnish French German Greek Hebrew Hindi Hungarian Icelandic Indonesian Italian Japanese Korean Latvian Lithuanian Malagasy Norwegian Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swedish Thai Turkish Vietnamese
Arabic Bulgarian Chinese Croatian Czech Danish Dutch English Estonian Finnish French German Greek Hebrew Hindi Hungarian Icelandic Indonesian Italian Japanese Korean Latvian Lithuanian Malagasy Norwegian Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swedish Thai Turkish Vietnamese
definition - Спагеті-код
Матеріал з Вікіпедії - вільної енциклопедії
Спагеті-код - погано спроектована, слабо структурована, заплутана і важка для розуміння програма. особливо що містить багато операторів GOTO (особливо вгору по тексту), винятків і інших конструкцій, що погіршують структурованість.
Спагеті-код названий так, тому що хід виконання програми схожий на миску спагетті. тобто звивистий і заплутаний. Іноді називається «кенгуру-код» (kangaroo code) через безліч інструкцій jump.
В даний час термін застосовується не тільки до випадків зловживання GOTO, але і до будь-якого «багатозв'язна» коду, в якому один і той же невеликий фрагмент виповнюється у великій кількості різних ситуацій і несе дуже багато функціоналів.
Спагеті зазвичай виникає а) від недосвідченості розробників б) від серйозного пресингу по термінах, як встановленого керівництвом (наприклад, в прийнятій в компанії системі мотивації на роботу швидше), так і встановленого розробником самому собі (бажання все зробити найбільш швидким способом).
Спагеті-код може бути налагоджений і працювати правильно і з високою продуктивністю, але він вкрай складний в супроводі та розвитку. Виправлення спагетті для додавання нових функцій іноді несе такий величезний потенціал внесення нових помилок, що рефакторинг (головні ліки від спагетті) стає неминучим.
Нижче наводиться приклад спагетті-коду на Бейсике. виконує просте дію - друк чисел від 1 до 10 і їх квадратів. Реальні приклади спагетті-коду набагато складніші і створюють великі проблеми при супроводі програм.
next iprint "Програма завершена."Такий самий пароль у функціональному стилі з використанням методу ітерації, написаний на мові Ruby: