metatheo в посте Metapractice (оригинал в ЖЖ)
Рефакторинг (Refactoring) (сущ.): изменение во внутренней структуре программного обеспечения, имеющее целью облегчить понимание его работы и упростить модификацию, не затрагивая наблюдаемого поведения.
Второе обстоятельство, которое я хочу отметить, заключается в том, что рефакторинг не меняет видимого поведения программного обеспечения. Оно продолжает выполнять прежние функции. Никто - ни конечный пользователь, ни программист - не сможет сказать по внешнему виду, что что-то изменилось.С одного конька на другой
Это второе обстоятельство связано с метафорой Кента Бека по поводу двух видов деятельности. Применение рефакторинга при разработке программного обеспечения разделяет время между двумя разными видами деятельности – вводом новых функций и изменением структуры. Добавление новых функций не должно менять структуру существующего кода: просто вводятся новые возможности. Прогресс можно оценить, добавляя тесты и добиваясь их нормальной работы. При проведении рефакторинга вы стремитесь не добавлять функции, а только улучшать структуру кода. При этом не добавляются новые тесты (если только не обнаруживается пропущенная ранее ситуация); тесты изменяются только тогда, когда это абсолютно необходимо, чтобы проверить изменения в интерфейсе.
В процессе разработки программного обеспечения может оказаться необходимым часто переключаться между двумя видами работы. Попытавшись добавить новую функцию, можно обнаружить, что это гораздо проще сделать, если изменить структуру кода. Тогда следует на некоторое время переключиться на рефакторинг. Улучшив структуру кода, можно добавлять новую функцию. А добившись ее работы, можно заметить, что она написана способом, затрудняющим ее понимание, тогда вы снова переключаетесь и занимаетесь рефакторингом. Все это может происходить в течение десяти минут, но в каждый момент вы должны понимать, которым из видов работы заняты.
7 комментариев
сначала старые сначала новые