Спагетти-код — плохо спроектированная, слабо структурированная, запутанная и трудная для понимания программа, особенно содержащая много операторов GOTO (особенно переходов назад), исключений и других конструкций, ухудшающих структурированность. Самый распространённый антипаттерн программирования.
В настоящее время термин применяется не только к случаям злоупотребления GOTO, но и к любому «многосвязному» коду, в котором один и тот же небольшой фрагмент исполняется в большом количестве различных ситуаций и выполняет очень много различных логических функций.
В качестве примера «спагетти» кода можно привести ситуацию:
- несколько разработчиков добавляют или изменяют код
- делают свои дела в течение многих лет,
- попутно пытаются оптимизировать существующую инфраструктуру программирования.
Спагетти-код обычно возникает:
- от неопытности разработчиков;
- от серьёзного давления по срокам, как установленного руководством (например, в принятой в компании системе мотивации на «работу быстрее»), так и установленного разработчиком самому себе (желание всё сделать наиболее быстрым способом)
Спагетти-код может быть отлажен и работать правильно и с высокой производительностью, но он крайне сложен в сопровождении и развитии[. Правка спагетти для добавления новой функциональности иногда несёт такой огромный потенциал внесения новых ошибок, что рефакторинг (главное лекарство от спагетти) становится неизбежным.
Избегайте спагетти-кода!