[userpic]

Рефакторинг & Добавление новых функций 

metatheo в посте Metapractice (оригинал в ЖЖ)

--...Какую ПРОГРАММУ СОВЕРШЕНСТВОВАНИЯ даунлоада вы хотите - в самом общем виде - иметь? Вот в программировании есть понятие - рефакторинг. Алгоритм метамоделирования фактически должен делать нон-стоп рефакторинг мышления.
-- Рефакторинг это типа отката к предыдущим версиям программы?

А вот из русскоязычного перевода книги Мартина Фаулера "Рефакторинг. Улучшение существующего кода"
Рефакторинг (Refactoring) (сущ.): изменение во внутренней структуре программного обеспечения, имеющее целью облегчить понимание его работы и упростить модификацию, не затрагивая наблюдаемого поведения.

И там же чуть ниже:
Второе обстоятельство, которое я хочу отметить, заключается в том, что рефакторинг не меняет видимого поведения программного обеспечения. Оно продолжает выполнять прежние функции. Никто - ни конечный пользователь, ни программист - не сможет сказать по внешнему виду, что что-то изменилось.

С одного конька на другой


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

7 комментариев

сначала старые сначала новые