Russian Qt Forum

Программирование => Общий => Тема начата: Igors от Февраля 01, 2014, 13:01



Название: Рефакторинг
Отправлено: Igors от Февраля 01, 2014, 13:01
Добрый день

Что-то нашло (бывает) - решил почитать книжку. Мартин Фаулер Рефакторинг Улучшение существующего кода. Вот она (http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&cad=rja&sqi=2&ved=0CEIQFjAD&url=ftp%3A%2F%2Fbp2-team.com%2FSoftware%2FDevelop%2F%25CA%25ED%25E8%25E3%25E8%2FEngineering%2FFowler%2F%25CC%25E0%25F0%25F2%25E8%25ED%2520%25D4%25E0%25F3%25EB%25E5%25F0%2520-%2520%25D0%25E5%25F4%25E0%25EA%25F2%25EE%25F0%25E8%25ED%25E3.%2520%25D3%25EB%25F3%25F7%25F8%25E5%25ED%25E8%25E5%2520%25F1%25F3%25F9%25E5%25F1%25F2%25E2%25F3%25FE%25F9%25E5%25E3%25EE%2520%25EA%25EE%25E4%25E0%2520(twirpx-194152).pdf&ei=CrzsUtKRFo7LtAawoIGoCw&usg=AFQjCNGHn-hlgdroqifrwAPO7X_VuHviOA&sig2=sEbexJXa-afLVkzdEYoK0g&bvm=bv.60444564,d.Yms). Не стану врать что якобы добросовестно изучил страницу за страницей, чтение было, ну, достаточно "по диагонали"  :) В целом книга мне понравилась, получил удовольствие узнав что вещи что я давно делаю - оказывается известны и даже одобряются. Ну и что-то новое узнал - надеюсь будет полезным.

Однако не видно большой помощи в работе (как раз сейчас очередной рефакторинг). Если терпения хватит - можете посмотреть первый пример из книги (на жабе но ясно). Возможно пример вполне хорош, НО - при этом предполагается что мы каким-то образом вникли во все подробности существующих классов/архитектуры. И вот тогда ... Возьму на себя смелость утверждать - при работе с достаточно большим чужим кодом этого не произойдет. Попросту не удастся во все вникнуть. Мы можем примерно выучить функционал, типа "этот кусок/класс делает то-то". Мы можем худо-бедно рулить старым кодом, хоть это часто противоречит рефакторингу - объем старого кода растет, а не уменьшается.

Ну и конечно, самый простой подход "Сделано через ж.., нужно переписать все с нуля!" - не катит, нет N лет для его реализации. Да, и
Цитировать
Так а в чем вопрос ?
А нет никакого вопроса  :)- просто мне интересно это обсудить. Есть мысли/опыт - поддержите разговор

Спасибо


Название: Re: Рефакторинг
Отправлено: Igors от Февраля 03, 2014, 16:33
Вот, на мой взгляд, блестящее описание проблемы. Ссылка сейчас недоступна, поэтому цитирую
Цитировать
Г е н е р а л ь н ы й (в отдел кадров). Уволить этих бездарей! Найдите мне нормальных специалистов!

…спустя три недели новые специалисты сидят на рабочих местах и изучают проект.

J u n i o r d e v e l o p e r (про себя). Как тут все сложно… Жизни не хватит чтобы понять как все это работает… Меня наверно уволят…

S e n i o r d e v e l o p e r (громко и недовольно). Кто учил этих мудаков программировать?!! Нет, ну вы посмотрите что они тут пишут!

Г л а в н ы й а р х и т е к т о р (задумчиво). Если бы это была лошадь, я бы посоветовал ее пристрелить…

T e a m l e a d e r (нервно). Спокойно, мужики. Заказчик хочет чтобы мы просто кое-что тут дописали. Оставим все как есть, просто доделаем то, что требуется.

P r o j e c t m a n a g e r (обращаясь к разработчикам). Проект конечно тяжелый, но мы ведь справимся! Тем более мы будем вести разработку по самой лучшей методологии! Нам поможет XP! Scrum! TDD! (нужное подчеркнуть).

Г л а в н ы й а р х и т е к т о р (поймав project manager-а в курилке). Ты ведь понимаешь, что проект уже бьется в предсмертных конвульсиях. Его нужно полностью переписать.

P r o j e c t m a n a g e r (Главному архитектору). Да все я понимаю, только кто мне это позволит? Знаешь сколько уже потрачено бабла на этот проект? Попробуй объяснить генеральному, что нужно все переделать, я посмотрю насколько быстро ты отыщешь живописное местечко под названием «нах#й».

P r o j e c t m a n a g e r (Оставшись один в курилке, глядя в окно). Вот начнем мы писать проект заново. И облажаемся. Я же во всем виноват буду, с меня же шкуру спустят. Ну его нафиг. А так, если сроки и завалим, то я всегда смогу свалить все на то, что проект уже был полным говном, когда достался нам.

…спустя полгода.

Г е н е р а л ь н ы й (в отдел кадров). Уволить этих бездарей! Найдите мне нормальных специалистов!
:)

Остроумно, но вызывает сомнения "нужно полностью переписать". Как архитектор себе это представляет? Создадим новый, чистый проект и ... что? Откуда новые программисты возьмут имеющийся ф-ционал, о котором имеют слабое понятие (если вообще имеют)? Охаять сделанное и предложить "все с нуля" много ума не надо. Хрен это с бугра, а не архитектор.

Я считаю "прогнуться" под существующий проект придется. Сначала надо научиться делать то что уже делали. Да, это часто будет уродливо, кол-во говнокода будет расти, по крайней мере некоторое время. Хорошо, допустим этот этап пройден. С чего мы начнем реальное переписывание? И как бум переписывать?


Название: Re: Рефакторинг
Отправлено: OKTA от Февраля 07, 2014, 12:34
Я считаю, что если код изначально верно написан, то нет смысла его переписывать. Зачем? Тем более, целиком его не поняв, не перепишешь, а поняв целиком и переписывать не надо, только если тюнинговать))