#рефакторинг #запахи_кода > Изменения в данных часто могут вести к неожиданным последствиям и хитрым ошибкам. Я могу обновить некоторые данные в одном месте, не зная, что другая часть программного обеспечения ожидает какие-то другие данные и теперь терпит неудачу. Такой сбой особенно трудно обнаружить, если он происходит только в редких условиях. По этой причине целая школа разработки программного обеспечения (функциональное программирование) основана на идее, что данные никогда не должны изменяться, и что обновление структуры данных всегда должно возвращать новую копию структуры с изменениями, оставляя старые данные нетронутыми. ### **Рефакторинги** - [[Инкапсуляция переменной (Encapsulate Variable)]] - [[Расщепление переменной (Split Variable)]] - [[Перемещение инструкций (Slide Statements)]] - [[Отделение запроса от модификатора (Separate Query from Modifier)]] - [[Замена вычисленной переменной запросом (Replace Derived Variable with Query)]] ### **Ссылки** - [[Мартин Фаулер - Рефакторинг кода на JavaScript]]