[userpic]

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

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

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

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

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

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


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

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

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

Ооо! ВСЕ Ментальные коды ЧА (человеческой активности) надо выполнять только по методике РЕФАКТОРИНГА!
Угу! Мне тоже так кажется. Но вот это: «Сложное сделать простым, простое сделать привычным, привычное сделать приятным» — оно ведь и описывает рефакторинг.
Привычное сделать приятным - это ложный тезис.
Если что-то стало привычным - оно уже, по определению, далее будет превращаться не в "приятное", а в нечто НЕОСОЗНАВАЕМОЕ/автоматическое.
Ну можно так:
- простое делать приятным и БЛАГОДАРЯ ЭТОМУ привычным, или
- привычное делать приятным = автоматическое делать приятным = кроме выполнения основной функции делать так чтобы привычное добавляло некий мета-ресурс "приятности" (жизни)
В деятельности/действиях есть особенный сорт приятности сродни СО. Но, такую деятельную приятность не надо как-то специально вызывать. Она сама появляется при соблюдении определенных условиях/критериях.
Длительный опыт психотерапевтической практики показывает, что есть определенная мудрость в избегании стремления к совершенству у некоторых пациентов. Вместо этого у них создается мотивация к достижению менее масштабных, но более реальных целей. Это ставит перед пациентом не только конкретную цель, но и дает ему возможность легче увидеть результаты своих усилий, что может постепенно привести его к новым, более значительным целям. Еще большее значение имеет то обстоятельство, что человеку дает чувство удовлетворения сам факт собственного достижения, а не просто выполнение указаний психотерапевта [1965].
(Erickson, 1980, Vol. IV, 17, 190).
http://metapractice.livejournal.com/138695.html?thread=2122695#t2122695
Удовлетворение сильно отличается от Удовольствия.