И снова мне подкинули проект "совсем немного доработать".
Как только я услышал эту фразу, сразу закопошились нехорошие предчувствия. И они опять не обманули.
Код в лучших традициях подхода "меня укусил Гамма" — куча классов с одним методом, каждый вызывается строго через интерфейс и создается через абстрактную фабрику (при том, что у всех интерфейсов ровно по одному наследнику), визиторы, DSL на основе YAML, 30 пакетов с фреймворками непонятного назначения, и так далее.
Нормальной обработки ошибок нет, если что пошло не так — дохнет напрочь.
И всё это при том, что вся функция проги — периодически дергать страницу по HTTP, передавая ей аргументы из конфига, и если ответ не совпадает с заданным — дернуть другую страницу. Всё.
Теперь сижу, не могу определиться — ржать или плакать.
Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку? Но так, чтобы он с программистом не уперлись рогом и не записали меня в вечные враги?
Здравствуйте, consign, Вы писали:
C>Теперь сижу, не могу определиться — ржать или плакать.
Очень часто новые люди "смотряшие" старый код не учитывают, что это может быть "заготовка" под вырост. Ну это на ваше — "один метод в классе и прочее".
Также часто люди оценивают код не зная что тот код просто "заготовка".
Приходилось видеть ситуацию, причем с двух сторон "конфликта", когда один кричал "Что это за бред!", на вот такое :
#define _15_ 15
А другой объяснял что это просто недописанный кусок. И что далее надо эту константу как-то обозвать, но пока лень придумывать имя, так как сроки горят!
Ты видимо недостаточно квалифицированный еще Раз не можешь реализовать простую доработку в чужом коде. Свой код всегда кажется образцом красоты и качества, а чужой практически всегда говнокодом (отличие только в степени говнистости).
Разбираться в чужом коде задача всегда не простая, программисты среднего уровгя часто не в силах это делать.
Здравствуйте, consign, Вы писали:
C>Нежелание тратить время на бессмысленную работу.
переписывание это и есть бессмысленная работа. Осмысленная работа в данном случае — зафиксить баги в существующем коде.
C>С этим скиллом у меня и так всё хорошо.
тогда в чём проблема зафиксить код? Не знаешь где и как? А почему? Может всё-таки ещё есть куда стремиться в скилле?
C>Ты поставил всё с ног на голову. Моя цель — решение задачи с минимальными сложностями. Продукт любителя "совершенного кода" и паттернов — это как раз то, от чего я хочу избавиться.
я просто вижу очередного "реального" погроммиста, который вместо того чтобы разобраться в коде хочет всё переписать, и не осознаёт, что проект уже худо-бедно но работает, что существующая логика уже обрабатывает кучу нюансов, которых нет в документации и о которых тебе только предстоит узнать. Учись читать чужой код.
Здравствуйте, consign, Вы писали:
C>Да, я не люблю править баги в чужих программах. Особенно если это — вообще не моя ответственность.
вот когда ты перестанешь делить программы на "свои" и "чужие", и поймёшь что твоя ответственность — делать код рабочим, не взирая на то, кем он и как, на каком языке и когда написан, вот тогда ты и станешь инженером, а до тех пор свои инфантильные "хочу/не хочу, мой/чужой" лучше не демонстрируй на публике.
Здравствуйте, consign, Вы писали:
C>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку? Но так, чтобы он с программистом не уперлись рогом и не записали меня в вечные враги?
Не говори, что код — говно (на твой взгляд). Это сразу настраивает на негатив и твой собеседник встанет в позу даже если ты прав на 146%. Говори, какие есть возможности по улучшению функционала, покрытия тестами итд итп.
Здравствуйте, Andrew.W Worobow, Вы писали:
AWW>Очень часто новые люди "смотряшие" старый код не учитывают, что это может быть "заготовка" под вырост.
Ежу понятно, что вся эта развесистая архитектура создана "под вырост".
Проблема в том, что
а) сделано много совершенно ненужного
б) не хватает нужного, и прикрутить его — крайне геморно
AWW>Приходилось видеть ситуацию, причем с двух сторон "конфликта", когда один кричал "Что это за бред!", на вот такое : AWW>#define _15_ 15 AWW>А другой объяснял что это просто недописанный кусок. И что далее надо эту константу как-то обозвать, но пока лень придумывать имя, так как сроки горят!
Это действительно полный бред. На объяснения он уже потратил больше времени, чем ушло бы на придумывание внятного имени.
Здравствуйте, consign, Вы писали:
C>И снова мне подкинули проект "совсем немного доработать". C>Как только я услышал эту фразу, сразу закопошились нехорошие предчувствия. И они опять не обманули. C>Код в лучших традициях подхода "меня укусил Гамма" — куча классов с одним методом, каждый вызывается строго через интерфейс и создается через абстрактную фабрику (при том, что у всех интерфейсов ровно по одному наследнику), визиторы, DSL на основе YAML, 30 пакетов с фреймворками непонятного назначения, и так далее. C>Нормальной обработки ошибок нет, если что пошло не так — дохнет напрочь. C>И всё это при том, что вся функция проги — периодически дергать страницу по HTTP, передавая ей аргументы из конфига, и если ответ не совпадает с заданным — дернуть другую страницу. Всё.
C>Теперь сижу, не могу определиться — ржать или плакать. C>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку? Но так, чтобы он с программистом не уперлись рогом и не записали меня в вечные враги?
Если выделенное болдом верно, весь функционал ложится в одну-две функции. Плюс парсинг конфига, который можно зареюзать. (Подозреваю, на него приходится изрядная доля имеющегося кода). Можно написать эту функцию(ции) сбоку и передавать управление ей, а вызовы имеющегося кода закомментировать. Когда наглядно будет видно, что за месяц (полгода, год и т.д.) мегабайты кода не понадобились ни разу, их можно взять и выкинуть. Если окажется, что они решали реальную проблему, значит это не говнокод, можно откатиться к исходному состоянию. А если начнутся тупые наезды по поводу замены тихой сапой, всегда можно сказать, что это был временный костыль на период освоения сложного проекта, в крайнем случае, получите немного по голове.
Здравствуйте, consign, Вы писали:
C>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку? Но так, чтобы он с программистом не уперлись рогом и не записали меня в вечные враги?
В ИТ около 15 лет, был ~6 конторах, ни разу не слышал чтобы хоть раз чей-нибудь код называли хорошим, только и слышно здесь говно, там говно.
Даже нет у него в отличие от говнокода названия своего, там вареньекод, медокод.
Если знаете какой-нибудь опенсорс или есть свой код в интернете пришлите ссылочку посмаковать, хоть раз взглянуть на это чудо которое не назовут говном.
Здравствуйте, andrey.t, Вы писали:
AT>Не говори, что код — говно (на твой взгляд). Это сразу настраивает на негатив и твой собеседник встанет в позу даже если ты прав на 146%.
Это понятно.
AT>Говори, какие есть возможности по улучшению функционала, покрытия тестами итд итп.
Выбросить 90% кода, остальное переписать. Но не сработает — упрутся.
Здравствуйте, Andrew.W Worobow, Вы писали:
AWW>Приходилось видеть ситуацию, причем с двух сторон "конфликта", когда один кричал "Что это за бред!", на вот такое : AWW>#define _15_ 15 AWW>А другой объяснял что это просто недописанный кусок. И что далее надо эту константу как-то обозвать, но пока лень придумывать имя, так как сроки горят!
Первый полностью прав: это бред.
У константы есть логический смысл. И имя надо давать по смыслу значения. А не "это енот".
И никакие "сроки горят" не оправдание подобному куску говна.
Здравствуйте, alpha21264, Вы писали:
A>Здравствуйте, sharpcoder, Вы писали:
S>>До некоторых людей все никак не доходит, что на работе надо решать задачи работодателя, а не делать то что хочется.
A>Лучше всего люди делают именно то, что им хочется. И хороший менеджер это всегда знает.
Это не так. Ну-ка найди мне финансового аналитика который любит колбасить эксель! У меня почти все друзья финансисты, и обычно они просто любят деньги и никто не любит колбасить свои эксельки. Многие любят вышивать и делают это хреновей некуда, а работают хорошими переводчиками или врачами.
Профессионал он тем и отличается от любителя, что делает свою работу на твердую 5, несмотря ни на какие трудности, рутину, настроение, скуку и тп. Просто хорошо делает свою работу. А у любителя обычно 1000 причин, которые мешают ему выдавать качественный результат.
Что касается программистов. Моя задача честно донести при приеме на работе суть задач, рассказать с чем и как мы работаем. А хочется ли программисту этим заниматься или нет — он сам пусть решает. Моя задача лишь отследить качество его работы и контролировать его результат. Если он выдает хороший результат хотя ему не хочется этим заниматься — меня это устроит. Если он выдает плохой результат, то меня это не устроит вне зависимости от того, хочется ли ему делать его работу или нет.
C>В данном конкретном случае, это не код навырост, а просто культ карго. Попытка применения паттернов мартышками, которые не понимают, когда они нужны, а когда — нет.
Чувак, ты чертовски прав! Это плюс тебе. Минус же тебе в том, что ты не можешь плюнуть и работать в рамках существующего кода. То есть ты не senior enough.
Я понимаю что это у тебя что-то вроде типа "крика души," но нужно принять данное как должное. Плохой код (повторюсь, я согласен с тобой что это плохой код и не потому что он чужой, а потому что там "мартышки применили паттерны"!) это издержки нашей профессии. Это нужно принять. Увы.
Здравствуйте, mgu, Вы писали:
L>>К сожалению, в компаниях, где водится действительно хороший код, никакой очереди нет. При уходе программиста его просто не заменяют. Незачем. mgu>Иногда есть зачем. Просто в компании, где пишут хороший ход, набирают подходящих программистов, а для этого составляют хорошие объявления о найме, которые исключают очереди.
Это в эльфландии, наверное.
А чаще всего им просто везет, что сквозь гномо-фильтр пролез человек, которому не пофиг, что он делает и который способен заражать своим непофигизмом окружающих.
Что характерно, это далеко не всегда идет на пользу собственно данному конкретному инженеру.
Здравствуйте, consign, Вы писали:
C>И снова мне подкинули проект "совсем немного доработать". C>Как только я услышал эту фразу, сразу закопошились нехорошие предчувствия. И они опять не обманули. C>Код в лучших традициях подхода "меня укусил Гамма" — куча классов с одним методом, каждый вызывается строго через интерфейс и создается через абстрактную фабрику (при том, что у всех интерфейсов ровно по одному наследнику), визиторы, DSL на основе YAML, 30 пакетов с фреймворками непонятного назначения, и так далее. C>Нормальной обработки ошибок нет, если что пошло не так — дохнет напрочь. C>И всё это при том, что вся функция проги — периодически дергать страницу по HTTP, передавая ей аргументы из конфига, и если ответ не совпадает с заданным — дернуть другую страницу. Всё.
C>Теперь сижу, не могу определиться — ржать или плакать. C>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку? Но так, чтобы он с программистом не уперлись рогом и не записали меня в вечные враги?
Ты сам понимаешь все, что делает код?
Автор кода доступен, он может объяснить как он работает и что нужно поправить?
Есть ли тесты или другой способ быстрой проверки работоспособности?
Если ответ "нет" хотя бы на один вопрос, то о переписывании не думай, ты можешь на порядок ошибиться в оценке.
Предположим, что ответы на вопросы выше — "да". Тогда тебе нужна объективная оценка, чтобы разговаривать с менеджером.
Например чтобы поправить баги нужно разобраться в куске кода размером X строк, и поправить Y строк.
Переписать с нуля — ты оцениваешь в Z строк.
Средняя скорость чтения и понимания кода — 200 строк в час, скорость написания — 70 строк в час. Для переписывания стоит еще коэффициент Пи заложить.
Получится, что переписывать надо, если Pi*Z/70 < X/200+Y/70. Y — должно быть маленьким знанием, относительно X, иначе правка превращается в переписывание кода. Если взять, что Y не превышает 10% от объема проекта, то можно переписать в виде Pi*Z < 7*X/20 + 2*X/20 или Pi*Z < 9/20*X или Z < X/7.
Получаем простую закономерность — новый код должен быть в 6-8 раз меньше старого, чтобы было выгодно переписывать. Причем это верно как для всего проекта, так и для отдельных кусков.
Чтобы поговорить с менеждером — найди куски, которые можно сократить. Например выкинуть абстрактную и интерфейсы, убрать визиторы и напрямую вызывать функции. Если ошибки как раз в этих кусках, то получишь добро.
Здравствуйте, consign, Вы писали:
C>И снова мне подкинули проект "совсем немного доработать". C>Как только я услышал эту фразу, сразу закопошились нехорошие предчувствия. И они опять не обманули. C>Код в лучших традициях подхода "меня укусил Гамма" — куча классов с одним методом, каждый вызывается строго через интерфейс и создается через абстрактную фабрику (при том, что у всех интерфейсов ровно по одному наследнику), визиторы, DSL на основе YAML, 30 пакетов с фреймворками непонятного назначения, и так далее. C>Нормальной обработки ошибок нет, если что пошло не так — дохнет напрочь. C>И всё это при том, что вся функция проги — периодически дергать страницу по HTTP, передавая ей аргументы из конфига, и если ответ не совпадает с заданным — дернуть другую страницу. Всё.
C>Теперь сижу, не могу определиться — ржать или плакать. C>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку? Но так, чтобы он с программистом не уперлись рогом и не записали меня в вечные враги?
Не надо ничего переписывать. Фиг с ним с гаммой и прочим цирком. Укажите 2 срока.
1. Просто добавить фичу без глобальных изменений
2. Добавить нормальную обработку ошибок
3. Выкинуть и написать заново
Потом сделать что попросят и вернуться к своим делам. Есть более интересные занятия чем покрасить и выбросить.
Здравствуйте, consign, Вы писали:
C>>Проблема в том, что C>>а) сделано много совершенно ненужного C>>б) не хватает нужного, и прикрутить его — крайне геморно
Пока единственная проблема, которую я вижу в этой теме, что тебе надо залезть в код, который не соответствует твоим представлениям о хорошем коде, и, разумеется, тебе как почти каждому нормальному разработчику не хочется с этим связываться, а переделать под себя. С другой стороны есть люди, которым до лампочки твое представление о прекрасном и которые больше переживают, что с водой и ребенка из ведра выльют. Вариант чтобы убедить и их и себя — найти цифры (объем исходников на диске, время работы проги, количество багов в трекере, сложность цикломатическую посчитать итд итп) и от этого отталкиваться при диалоге.
Здравствуйте, consign, Вы писали:
C>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку? Но так, чтобы он с программистом не уперлись рогом и не записали меня в вечные враги?
сакраментальный ответ — а оно тебе надо? Или более развёрнуто — какие стратегические цели могут быть достигнуты таким объяснением? Сиюминутное удовлетворение чувства прекрасного и почёсывание своего ЧСВ? Вряд ли ради этого стоит воевать с двумя людьми. С другой стороны у тебя есть замечательная возможность за счёт работодателя прокачать критичный для разработчика скилл — уменее читать и понимать чужой ( пусть даже пахнущий ) код, а также наладить контакты с менеджером и чудо-программистом. Если во времени не ограничивают, то всё вообще прекрасно — можно обложить код тестами, провести рефакторинг, изучить сопутствующие библиотеки и тулзы, при этом переодически подзывая чудо-разработчика для объяснения тонких моментов, при этом нахваливая его какой он хороший охретектор. Таким образом ты будешь знать много чужого говнокода и поимеешь приятеля (гусары!), и когда в следующий раз тимлид уйдёт в другую компанию, тимлидом станешь ты, потому что знаешь весь говнокод на проектах и просто хороший парень. А тот умник, который предлагает всё переписать и называет окружающих говнокодерами так и будет пилить свой "совершенный код", факапя сроки и вызывая недовольство как менеджеров так и коллег-разработчиков.
Здравствуйте, consign, Вы писали:
C>У меня его нет, снова пальцем в небо.
дартаньянство есть, отсутствие опыта есть, прийти за помощью и хамить всем подряд тоже есть, а аккаунта на хабре нет. Удивил.
C>И да — займись лучше своей крайне драгоценной работой по 2 килобакса в месяц.
милок, моё время стоило 2 килобакса в месяц примерно 12 лет назад, и ты тогда под стол пешком ходил.
Здравствуйте, pestis, Вы писали:
P>Здравствуйте, consign, Вы писали:
C>>Теперь сижу, не могу определиться — ржать или плакать. C>>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку? Но так, чтобы он с программистом не уперлись рогом и не записали меня в вечные враги?
P>Честно признать что твоей квалификации недостаточно чтобы поддерживать этот код тебе религия не позволяет?
Знаешь, тратить квалификацию на поддержания говнокода не стОит. Есть масса более интересных применений.
Здравствуйте, consign, Вы писали:
C>Здравствуйте, sharpcoder, Вы писали:
S>>И задачку на день он делал неделю, да еще нагенерил кучу багов.
C>Бывает. Не надо было жлобиться и нанимать говно-программистов.
Стань работодателем для начала. Потом сможем предметно обсудить твои теории.
C>А что, тестов у вас вообще не было, что ли?
Автотесты не могут покрыть все возможные ситуации, а в некоторых областях (интеграция, сложная бизнес-логика) автотест должен быть в разы сложнее разрабатываемого модуля.
И вообще, наивно полаать что автотесты могут спасать от багов.
Здравствуйте, consign, Вы писали:
C>Здравствуйте, sharpcoder, Вы писали:
S>>До некоторых людей все никак не доходит, что на работе надо решать задачи работодателя, а не делать то что хочется.
C>Я в курсе, см сообщение выше. "Я начальник — ты дурак", ничего нового ты мне не рассказал.
C>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку?
Такие слова разрешено говорить вслух только программистам-новичкам. Опытные программисты понимают, что практически любой промышленный код — полное говно, и что надо всё переписывать. Но это стоит дороже, чем поддерживать. Хороший код встречается либо в программках на 1000 строк, которыми никто никогда не пользовался, либо в компаниях, куда стоит очередь 20 программистов на одно место. Не хватает квалификации, чтобы попасть в такую компанию — будь готов работать с говнокодом.
болезнь "чужой код говно, править баги не буду, долбись оно всё конём" судя по всему только прогрессирует
C>А что тебя не устраивает? Да, я не люблю править баги в чужих программах. Особенно если это — вообще не моя ответственность.
Хм , а вы как работаете фрилансером или как обычно большая часть на постоянке , работаете по договору как разработчик или как кто-то другой в чью ответственность не входит работа с кодом.
Я еще ни одного трудового договора не видел где программист бы отвечал только за свой код и было бы разделение программ на свои и чужие. Договор подписали ? Значит приняли условия , будьте добры выполнять. Может работодатель тоже не очень любит зарплату платить, но он же выполняет обязательства ?
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, sharpcoder, Вы писали:
S>Но я не могу сказать что это не излечимо. Просто конкретно на его стадии вот такие симптомы. Примерно как у автоновичка через 3-4 мес вождения появляется ощущение "я все могу, а все водятлы вокруг — тормоза". С опытом обычно проходит.
Ученые говорят что это наступает в 3-5 лет опыта.
И более того предупреждают, что во-первых этот период наиболее авариный по статистике, во-вторых что тяжесть аварий существенно выше.
Здравствуйте, De-Bill, Вы писали:
C>>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку?
DB>Опытные программисты понимают, что практически любой промышленный код — полное говно, и что надо всё переписывать. Но это стоит дороже, чем поддерживать.
Ааа... вспомнил историю из жизни
Было это уже 13 лет назад (охренеть как много) — в 2003 году. Работал я в компании одной с у нее был флагманский продукт (у которого сотни клиентов, который разрабатывался 10 лет и содержит куски на делфи, с++, кучу оракловых процедур и т.п.) на .Net'е! И вот там появился сеньер dotnet'чик который на все это посмотрел, сказал что все это говнокод и в идеале все надо переписать. Гендир ему поверил и открыл большой проект по переписыванию флагманского продукта на dotNet.
Наняли команду толковых c# кодеров, написали ТЗ. И вот задача была переписать продукт. dotNet'чики радостно заявили что за 6 месяцев все перепишут, и еще за 6 — все отладят, сделают необходимые вспомогательные модули и продукт можно будет продавать.
Угадай, что было дальше?
В 2006 они сделали первый работающий прототип. (3 года прошло)
В 2008 прототип так и не начал стабильно работать (всего 5 лет прошло), и проект закрыли!
Что же имеем сейчас, по прошествии 13 лет с момента решения "переписать продукт"? Компания продолжает успешный бизнес со своим флагманским продуктом (тем самым, который на делфи, c++, и оракловых процедурах).
Гендир там был веселый человек. Помню как он сказал в момент получения работающего прототипа "поздравляю всех вас с тем, что вы научились использовать современные технологии"
S>>Разбираться в чужом коде задача всегда не простая, программисты среднего уровгя часто не в силах это делать.
C>До некоторых людей всё никак не доходит, что "не мочь разобраться в коде" и "мочь разобраться в коде, но не хотеть ковыряться в данном конкретном говне" — разные вещи.
Я очень хорошо понимаю твой начальный пост, но это избытки нашей профессии, и это надо принять как должное. Ты можешь плеваться от кода (и пусть ты сто раз прав!), но нужно уметь работать с тем, что тебе досталось в наследство.
Здравствуйте, consign, Вы писали:
AWW>>Очень часто новые люди "смотряшие" старый код не учитывают, что это может быть "заготовка" под вырост.
C>Ежу понятно, что вся эта развесистая архитектура создана "под вырост". C>Проблема в том, что C>а) сделано много совершенно ненужного C>б) не хватает нужного, и прикрутить его — крайне геморно
Если проект маленький, то возможно вы правы, а если большой то скорее всего вы просто не поняли "всех задачи".
Это нормально. Умение ясно объяснить задачи, так чтобы слушатель понял "все", довольно редкий скил. Обычно все тонут в словах, за которыми слушатель теряет мысль.
AWW>>Приходилось видеть ситуацию, причем с двух сторон "конфликта", когда один кричал "Что это за бред!", на вот такое : AWW>>#define _15_ 15 AWW>>А другой объяснял что это просто недописанный кусок. И что далее надо эту константу как-то обозвать, но пока лень придумывать имя, так как сроки горят!
C>Это действительно полный бред. На объяснения он уже потратил больше времени, чем ушло бы на придумывание внятного имени.
Вы просто не сталкивались с ситуациями когда кодят в оставшиеся пять дней до срока сдачи, и так в течении двух недель до этого. Ну по 12 часов в день.
Здравствуйте, consign, Вы писали:
C>Ежу понятно, что вся эта развесистая архитектура создана "под вырост". C>Проблема в том, что C>а) сделано много совершенно ненужного C>б) не хватает нужного, и прикрутить его — крайне геморно
Ты тоже 15 лет в ИТ? А чего нужного-то не хватает?
C>Это действительно полный бред. На объяснения он уже потратил больше времени, чем ушло бы на придумывание внятного имени.
Позволь не согласиться. Иногда на придумывание имени порой уходит времени больше, чем на написание куска кода. Имя должно быть понятным, оно должно отражать суть логического объекта и не всегда это лежит на поверхности.
Здравствуйте, antropolog, Вы писали:
A>переписывание это и есть бессмысленная работа. Осмысленная работа в данном случае — зафиксить баги в существующем коде.
Не в том случае, если переписать — быстрее, чем исправить существующий код.
A>тогда в чём проблема зафиксить код? Не знаешь где и как?
Знаю, где и как. На добавление мелкой фичи — десяток исправлений в разных местах.
A>я просто вижу очередного "реального" погроммиста, который вместо того чтобы разобраться в коде хочет всё переписать, и не осознаёт, что проект уже худо-бедно но работает, что существующая логика уже обрабатывает кучу нюансов, которых нет в документации и о которых тебе только предстоит узнать. Учись читать чужой код.
Точно. Не может быть, чтобы я знал свою работу. Только ты можешь знать всё лучше всех.
Здравствуйте, consign, Вы писали:
C>Точно. Не может быть, чтобы я знал свою работу. Только ты можешь знать всё лучше всех.
ох, ты бы сразу сказал что у тебя аккаунт на хабрахабре, я бы не тратил на тебя своё драгоценное время
Здравствуйте, okon, Вы писали:
O>вылечил от неизлечимой казалось всем болезни — звучит намного профессиональнее чем "поработал со здоровым клиентом болячек не нашел, проводил водные процедуры"
Это не говнокод.
Говнокод это бабулька, у которой каждый день "та вот шота сёння ужо тут балиць" + пишет на врача жалобу что он дескать не проявил должного внимания.
Которая приходит на приём не потому что ей на самом деле болит, а потому что ей скучно и хочется с кем нить посраться.
Здравствуйте, consign, Вы писали:
L>>А вот это "переписать за день, максимум два" уже лет двадцать как в классике айтишной прозы воспето. C>Знаем, читали. Но ты сейчас делаешь классическую логическую ошибку, которая называется "подтверждение следствием".
Если бы там действительно было говно, которое нужно выкинуть и написать нормально за день, то ты бы именно это уже и сделал. Вместо этого флеймишь на форумах.
За день ты уже не справился. Что и требовалось доказать.
Здравствуйте, consign, Вы писали:
C>Здравствуйте, sharpcoder, Вы писали:
S>>Разбираться в чужом коде задача всегда не простая, программисты среднего уровгя часто не в силах это делать.
C>До некоторых людей всё никак не доходит, что "не мочь разобраться в коде" и "мочь разобраться в коде, но не хотеть ковыряться в данном конкретном говне" — разные вещи
До некоторых людей все никак не доходит, что на работе надо решать задачи работодателя, а не делать то что хочется.
Да и такие самооправдания всегда слабо выглядят. Рассказать психологу — норм, начальнику — только показать свою слабость.
Здравствуйте, alpha21264, Вы писали:
A>Почему обгадить-то? Кто наваял, тот и поддерживает — вполне нормальный подход, который применяется всегда и везде.
Не всегда и не везде.
Более "везде" используется другой подход. "Наваял — сделай так, чтобы саппорт мог поддерживать".
Здравствуйте, consign, Вы писали:
lgb>>Потом скажешь руководству
C>Уже обсуждали. За такие штучки любой ПМ по шапке надает, кроме одного их крайне редкого подвида.
Конечно, если ты будешь переделками в рабочее время заниматься. А дома за одно воскресенье, например, сделать правильную версию — какие проблемы вообще? Дольше здесь обсуждать, чем просто взять и сделать.
ОК>>То есть ты не senior enough.
C>Это смотря по какой шкале считать. С технической точки зрения, выкинуть этот код — единственный разумный вариант. А вот с точки зрения корпоративной политики, всё намного сложнее.
Предложение переписать проект целиком прокатит лишь для небольших проектов вроде "твоего," но в целом это неверно. Есть куча проектов которые тянутся с 70-х-80-х-90-х гг. Миллионы строк кода не самого лучшего качества который непросто переписать. Поэтому, мой тебе совет. Или попроси начальника чтобы он дал задачу автору или плюйся но стисни зубы и сделай что от тебя хотят.
Здравствуйте, gandjustas, Вы писали:
G>Победителей не судят.
Судят. Твой непосредственный начальник останется твоим начальником, по крайней мере в ближайшем будущем. И своеволие он тебе точно припомнит, и не раз.
G>Зато неявно повесят ярлык "терпила" и будут такими указаниями закидывать.
Здравствуйте, Andrew.W Worobow, Вы писали:
AWW>Если проект маленький
Кхм, "если"? Вы вопрос вообще читали?
AWW>Вы просто не сталкивались с ситуациями когда кодят в оставшиеся пять дней до срока сдачи, и так в течении двух недель до этого. Ну по 12 часов в день.
Сталкивался и похуже. И когда такое происходит, это всё — один сплошной бред. Странно ожидать от людей, что они не наделают глупостей в таких условиях.
Здравствуйте, consign, Вы писали:
C>Теперь сижу, не могу определиться — ржать или плакать. C>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку? Но так, чтобы он с программистом не уперлись рогом и не записали меня в вечные враги?
Честно признать что твоей квалификации недостаточно чтобы поддерживать этот код тебе религия не позволяет?
Здравствуйте, consign, Вы писали:
C>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку? Но так, чтобы он с программистом не уперлись рогом и не записали меня в вечные враги?
Ну скажи, что не можешь вьехать, и тот, кто это наваял, пусть это и дальше поддерживает.
Здравствуйте, alpha21264, Вы писали:
A>Здравствуйте, pestis, Вы писали:
P>>Здравствуйте, consign, Вы писали:
C>>>Теперь сижу, не могу определиться — ржать или плакать. C>>>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку? Но так, чтобы он с программистом не уперлись рогом и не записали меня в вечные враги?
P>>Честно признать что твоей квалификации недостаточно чтобы поддерживать этот код тебе религия не позволяет?
A>Знаешь, тратить квалификацию на поддержания говнокода не стОит. Есть масса более интересных применений.
А в чем еще квалификация проявляется, когда все легко и просто тогда и квалификация не нужна
профессиональный врач любит работать со сложными клиентами, т.к. в этом квалификация и навыки проявляются и развиваются.
вылечил от неизлечимой казалось всем болезни — звучит намного профессиональнее чем "поработал со здоровым клиентом болячек не нашел, проводил водные процедуры"
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, consign, Вы писали:
C>И снова мне подкинули проект "совсем немного доработать". C>Как только я услышал эту фразу, сразу закопошились нехорошие предчувствия. И они опять не обманули. C>Код в лучших традициях подхода "меня укусил Гамма" — куча классов с одним методом, каждый вызывается строго через интерфейс и создается через абстрактную фабрику (при том, что у всех интерфейсов ровно по одному наследнику), визиторы, DSL на основе YAML, 30 пакетов с фреймворками непонятного назначения, и так далее. C>Нормальной обработки ошибок нет, если что пошло не так — дохнет напрочь. C>И всё это при том, что вся функция проги — периодически дергать страницу по HTTP, передавая ей аргументы из конфига, и если ответ не совпадает с заданным — дернуть другую страницу. Всё.
C>Теперь сижу, не могу определиться — ржать или плакать. C>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку? Но так, чтобы он с программистом не уперлись рогом и не записали меня в вечные враги?
Очень все зависит от того что за человек менеджер итп. Если видишь что скорее всего упрутся рогом и только испортишь отношения если будешь настаивать — то выхода два:
1) Медленно и не спеша, начиная с тестов — переделывать систему понемногу. Если там совсем немного — то может даже и переписать потихоньку.
99% контор и менеджеров никогда не выделяют времени на рефактиринг и переделки, так что приходится выкручиваться самому, понемногу улучшая систему на ходу.
Да, тяжело, но экспириенс рефакторинга отличный. А постфактум вам скорее всего только спасибо скажут, когда увидят что все уже сделано и работает на 5+.
Если будут настаивать на том что все было правильно а вы дурак — см №2.
2) Найти другую работу.
F>Очень все зависит от того что за человек менеджер итп. Если видишь что скорее всего упрутся рогом и только испортишь отношения если будешь настаивать — то выхода два: F>1) Медленно и не спеша, начиная с тестов — переделывать систему понемногу. Если там совсем немного — то может даже и переписать потихоньку. F>99% контор и менеджеров никогда не выделяют времени на рефактиринг и переделки, так что приходится выкручиваться самому, понемногу улучшая систему на ходу.
Если рефакторинг за свой счет то такой вариант возможен, если в рабочее время то не надо. Вы тратите чужие деньги на то , на что вас не просят. Если код который вам не дает спать будет мешать работе бизнеса то задача на его рефакторинг или доработку сама появится и опять же ваша задача не переписать все а решить проблему как можно быстрее и дешевле, ведь бизнесу не нужно решение проблемы на все случаи жизни ( до которых бизнес может и не дожить ), ему нужно конкретное решение чтобы как можно быстрее и дешевле сделать 1 шаг вперед на рынке.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, consign, Вы писали:
C>Теперь сижу, не могу определиться — ржать или плакать. C>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку? Но так, чтобы он с программистом не уперлись рогом и не записали меня в вечные враги?
Переведи проблему в термины "время и деньги", т.е. составь экономическое обоснование своей идее "всё взять и поделить переписать".
Возможно, что в процессе ты сам увидишь, что твоя идея не обоснована
Здравствуйте, antropolog, Вы писали:
C>>Точно. Не может быть, чтобы я знал свою работу. Только ты можешь знать всё лучше всех. A>ох, ты бы сразу сказал что у тебя аккаунт на хабрахабре, я бы не тратил на тебя своё драгоценное время
Здравствуйте, alpha21264, Вы писали:
A>Здравствуйте, okon, Вы писали:
O>>Здравствуйте, alpha21264, Вы писали:
A>>>Здравствуйте, pestis, Вы писали:
P>>>>Честно признать что твоей квалификации недостаточно чтобы поддерживать этот код тебе религия не позволяет?
A>>>Знаешь, тратить квалификацию на поддержания говнокода не стОит. Есть масса более интересных применений.
O>>А в чем еще квалификация проявляется, когда все легко и просто тогда и квалификация не нужна O>>профессиональный врач любит работать со сложными клиентами, т.к. в этом квалификация и навыки проявляются и развиваются.
A>Программист не врач, программист — инженер. И если можно взять в космос карандаш, A>а не изобретать ручку за миллион долларов, то нужно брать карандаш.
A>Если нужна какая-то невероятная квалификация, чтобы делать тривиальные вещи, A>то контора нерационально расходует интеллект сотрудников. Топикстартер в начальном A>посте правильно описал симптомы. В этом коде приходится использовать "стрельбу дробью" - A>то есть, вносить изменения сразу во много мест. Что тебе не понятно? Почему нужно A>избавляться от стрельбы дробью независимо от квалификации? Потому что вносить A>изменения в одно место в сто раз быстрее чем в десять. Почему в сто? Потому что A>тут квадратичная зависимость.
Но тут смотри такая штука — данный код уже написан, т.е. деньги уже потрачены их не вернуть. Правильно или нет они были потрачены без начальной постановки и конечного кода мы не увидим.
Задача топик кастеру я так понимаю была "немного доработать" судя по начальному посту. Возможно решить проблему с тем что она иногда падает ( тоже описано в начальном посте ) и все собственно.
Вместо того чтобы внести 10 дробинок , хотим еще потратить время на переписывание, не разобравшись целиком в коде, что как правильно заметили чревато утерей некоторых деталей который важны.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, okon, Вы писали:
O>>вылечил от неизлечимой казалось всем болезни — звучит намного профессиональнее чем "поработал со здоровым клиентом болячек не нашел, проводил водные процедуры" CC>Это не говнокод. CC>Говнокод это бабулька, у которой каждый день "та вот шота сёння ужо тут балиць" + пишет на врача жалобу что он дескать не проявил должного внимания. CC>Которая приходит на приём не потому что ей на самом деле болит, а потому что ей скучно и хочется с кем нить посраться.
Это скорее коллеги которые вместо того чтобы решить проблему, ищут в коде "та вот шота сёння ужо тут балиць" + пишет на разработчика жалобу, и не потому что ей на самом деле болит, а потому что ей скучно и хочется с кем нить посраться" начинают вот в такую старушку играть
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
C>Не вдаваясь в детали — не хватает возможности передавать добавочный тип параметра — и чтобы его прикрутить, надо переделывать код минимум в 8 местах. Потому как параметры четыре раза конвертируются из одного формата в другой. C>А потом надо как-то скормить данные последнего этапа библиотеке для работы с сервером (прямого доступа к HTTP нет, хотя используется всего лишь POST + JSON). А библиотека тоже очень развесистая, со своим DSL, не хухры-мухры.
Вообще 8 мест изменить если это в рамках одного модуля или солюшена, это не такая уж тяжелая работа.
А что за библиотека развесистая со своим DSL, как называется ?
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, consign, Вы писали:
C>Здравствуйте, alpha21264, Вы писали:
A>>Ну скажи, что не можешь вьехать, и тот, кто это наваял, пусть это и дальше поддерживает.
C>Обгадить самого себя перед начальником — плохой подход.
C>Пока что, лучшее, что я придумал — ткнуть ПМа в конкретные проблемы при введение новой фичи, которая ему нужна, и растолковать, например, что 4 раза переконвертировать исходные данные из одного формата в другой — полное говно не очень хорошая идея.
Это техническая деталь что во что там конвертится, представь покупаешь ты нечто , допустим кофеварку, есть кофеварка которая тебя полностью устраивает за 100 рублей. Есть более дорогая за 200 рублей. Тебя продавец начинает убеждать купить вторую по причине что в первой все работает, но там используется 4 шестеренки — это не самый оптимальный вариант, было бы оптимальнее чтобы было 2 шестеренки. Ну и резонный вопрос который возникнет — а какая мне собственно разница сколько там шестеренок ведь оно работает и меня устраивает.
Или электрик проложил тебе проводку за 100 рублей, вроде все работает, вдруг приходит к тебе другой электрик и начинает — да это говно проводка, все не так, тут надо провода чтобы ровно на расстоянии 1 см шли, а тут вот видишь перехлест есть. Давай я все переделаю за еще 100 рублей.
Немного думая и вспоминая что провода у тебя так уже год лежат и 30 лет лежали на даче , отпускаешь электрика перфекциониста со словами спасибо но как-нибудь в другой раз
Вот и ты предлагаешь менеджеру взять за 200 только потому-что там более изящно будет, но бизнес-профита не даст.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
болезнь "чужой код говно, править баги не буду, долбись оно всё конём" судя по всему только прогрессирует
Ну да, уже вижу.
Но я не могу сказать что это не излечимо. Просто конкретно на его стадии вот такие симптомы. Примерно как у автоновичка через 3-4 мес вождения появляется ощущение "я все могу, а все водятлы вокруг — тормоза". С опытом обычно проходит.
Здравствуйте, sharpcoder, Вы писали:
S>До некоторых людей все никак не доходит, что на работе надо решать задачи работодателя, а не делать то что хочется.
Лучше всего люди делают именно то, что им хочется. И хороший менеджер это всегда знает.
Здравствуйте, okon, Вы писали:
O>Я еще ни одного трудового договора не видел где программист бы отвечал только за свой код и было бы разделение программ на свои и чужие. Договор подписали ? Значит приняли условия , будьте добры выполнять. Может работодатель тоже не очень любит зарплату платить, но он же выполняет обязательства ?
Ну на самом деле, в моем текущем контракте этого проекта нет — спасибо, что напомнил. Так что, можно упереться рогом и отказаться — или поработать и над этим проектом, а потом взять ПМа за горло.
Надо поразмыслить.
Здравствуйте, antropolog, Вы писали:
A>вот когда ты перестанешь делить программы на "свои" и "чужие", и поймёшь что твоя ответственность — делать код рабочим, не взирая на то, кем он и как, на каком языке и когда написан, вот тогда ты и станешь инженером, а до тех пор свои инфантильные "хочу/не хочу, мой/чужой" лучше не демонстрируй на публике.
Программист-лох, мечта менеджера-жлоба. Делает любую грязную работу за скромный прайс, доширак и одобрительное похлопывание по плечу.
O>А более аргументированно, или получается все что новое и непонятное — говно?
Рискну предположить, что "новое и непонятное" — это на самом деле используемое как карьерный экскаватор для рытья канавы на даче. Указывает, судя по "Гамме" не неадекватность автора творения, который был мастер нагородить архитектуру чтобы просто попрактиковаться в бессмысленных вещах. Зато резюме приукрасил.
Здравствуйте, consign, Вы писали:
C>Здравствуйте, antropolog, Вы писали:
A>>вот когда ты перестанешь делить программы на "свои" и "чужие", и поймёшь что твоя ответственность — делать код рабочим, не взирая на то, кем он и как, на каком языке и когда написан, вот тогда ты и станешь инженером, а до тех пор свои инфантильные "хочу/не хочу, мой/чужой" лучше не демонстрируй на публике.
C>Программист-лох, мечта менеджера-жлоба. Делает любую грязную работу за скромный прайс, доширак и одобрительное похлопывание по плечу.
Мечтать не вредно.
Но менеджер реалист, и понимает что приходится работать с разными людьми, с их достоинствами и недостатками. А программисты, я тебе скажу, не самый простой контингент!
Здравствуйте, consign, Вы писали:
C>Здравствуйте, antropolog, Вы писали:
A>>вот когда ты перестанешь делить программы на "свои" и "чужие", и поймёшь что твоя ответственность — делать код рабочим, не взирая на то, кем он и как, на каком языке и когда написан, вот тогда ты и станешь инженером, а до тех пор свои инфантильные "хочу/не хочу, мой/чужой" лучше не демонстрируй на публике.
C>Программист-лох, мечта менеджера-жлоба. Делает любую грязную работу за скромный прайс, доширак и одобрительное похлопывание по плечу.
Просто профессионал. Хотите -сделаем, за соотвествующую цену. Соотвествующая цена время+усилия+моральный ущерб от говнокода.
Нет проблем. Что дорого, уже не хотите? Как пожелаете.
Здравствуйте, gandjustas, Вы писали:
C>>Если просто наплевать на указания и всё переписать — получишь по шапке, и неважно — уложишься в срок или нет. G>Победителей не судят. Только в срок уложиться надо.
Ещё как судят!
C>>Тратить время и выполнять глупые указания — за это по шапке не дадут. G>Зато неявно повесят ярлык "терпила" и будут такими указаниями закидывать.
В конце концов, гибкость позвоночника -- это тоже soft skills.
Конечно, каждый день его пишу. Да и разве может свой код быть плохим? Конечно нет, иначе зачем всякий новый участник проекта старается все переписать с нуля?
Здравствуйте, landerhigh, Вы писали:
DB>> либо в компаниях, куда стоит очередь 20 программистов на одно место.
L>К сожалению, в компаниях, где водится действительно хороший код, никакой очереди нет. При уходе программиста его просто не заменяют. Незачем.
Иногда есть зачем. Просто в компании, где пишут хороший ход, набирают подходящих программистов, а для этого составляют хорошие объявления о найме, которые исключают очереди. В общем, какой стол, такой и стул какой отдел кадров, такие и работники.
Здравствуйте, De-Bill, Вы писали:
mgu>>Иногда есть зачем. Просто в компании, где пишут хороший ход, набирают подходящих программистов, а для этого составляют хорошие объявления о найме, которые исключают очереди. В общем, какой стол, такой и стул какой отдел кадров, такие и работники.
DB>Чтобы набрать хороших программистов, нужны хорошие деньги.
Сплошь и рядом примеры, когда и за хорошие деньги нанимают чёрт знает кого. Так вот, хороший специалист (и кадровик в частности) -- это не тот, кто зазывает на хорошие деньги, а тот, кто сумеет нанять за плохие.
Ещё аналогия -- чтобы программа работала быстро, нужно мощное железо...
DB>А когда есть хорошие деньги, очереди сами выстраиваются. Невозможно написать такое объявление на большие деньги, чтобы шли только подходящие кандидаты.
У Паркинсона всё разжёвано. Да, и если есть хорошие деньги и запахнет очередью, то можно указывать меньшую зарплату. Неблагородно? Во всяком случае, это честнее, чем выдавать объявление без зарплаты, издеваться над толпами, и в конце концов выбрать того, кто лучше всех ответит на вопрос "сколько вы получали на прежнем месте работы?"
Здравствуйте, sharpcoder, Вы писали:
S>В 2006 они сделали первый работающий прототип. (3 года прошло) S>В 2008 прототип так и не начал стабильно работать (всего 5 лет прошло), и проект закрыли!
S>Что же имеем сейчас, по прошествии 13 лет с момента решения "переписать продукт"? Компания продолжает успешный бизнес со своим флагманским продуктом (тем самым, который на делфи, c++, и оракловых процедурах).
S>Гендир там был веселый человек. Помню как он сказал в момент получения работающего прототипа "поздравляю всех вас с тем, что вы научились использовать современные технологии"
А как сложилась судьба вдохновителя переписывания? Ушёл на повышение?
Здравствуйте, consign, Вы писали:
BDA>>Если выделенное болдом верно C>Наконец то появился один человек, который прочитал исходное сообщение полностью
BDA>>Можно написать эту функцию(ции) сбоку и передавать управление ей, а вызовы имеющегося кода закомментировать. C>Нет смысла, поскольку почти весь код — это разбор и конверсия конфигов.
Ну, ты же сказал, что можешь переписать все за один день. Почему бы тогда не сделать это дома, пусть даже за несколько вечеров и облегчить тем самым жизнь себе и другим?
Потом скажешь руководству, что вот вам новый компактный код, он полностью покрыт тестами (у тебя же есть все спецификации?), скорость увеличилась примерно на 146%, поддержка упростилась и все такое. И пусть решают, внедрять твое или оставить старое.
Мне сейчас достался проект, где тоже куда ни плюнь — фабрика на фабрике, декораторы интерфейсами погоняют, комментарии отсутствуют и т.д. Нужно добавить новую фичу — сижу, трассирую код, чтобы понять, что откуда берется. Почти разобрался. Переписать все заново? Проект огромный, живет уже несколько лет. И, что самое характерное, приносит компании доход. Каковая компания из этого дохода платит мне зарплату. За которую я и занимаюсь этим проектом.
ОК>>Есть куча проектов которые тянутся с 70-х-80-х-90-х гг. Миллионы строк кода не самого лучшего качества который непросто переписать. Поэтому, мой тебе совет. Или попроси начальника чтобы он дал задачу автору или плюйся но стисни зубы и сделай что от тебя хотят.
C>Такой подход не подходит другим проектам, поэтому так нельзя сделать с этим проектом. Занятная логика.
Это у тебя занятная логика. "Мне этот код не нравится. Поэтому я хочу переписать его." А потом кому-то твой код не понравится (неважно по какой причине!) и тоже захочет переписать. И так каждый раз код переписывать что ли?
Здравствуйте, consign, Вы писали:
C>Здравствуйте, lgb, Вы писали:
lgb>>"Какие ваши доказательства?" (с)
C>Мои доказательства — это история сделанных мной проектов.
Твои доказательства в данном случае — история переделанных тобой проектов
Вместо того, чтобы тут это бесконечно обсуждать, уже давно сделал бы дома за день и показал результат начальству. Оно пришло бы в восторг, а тебе за это почет, уважение и прочие плюшки. Поделился бы историей успеха и посрамил маловеров.
Здравствуйте, andrey.t, Вы писали:
AT>То есть у тебя нет причин для изменения кода кроме "оно говно"? Тогда менеджер будет прав на все 100, если не послушает такое объяснение.
C>Проблема в том, что C>а) сделано много совершенно ненужного C>б) не хватает нужного, и прикрутить его — крайне геморно
Здравствуйте, UVV, Вы писали:
UVV>Ты тоже 15 лет в ИТ? А чего нужного-то не хватает?
Таки да.
Не вдаваясь в детали — не хватает возможности передавать добавочный тип параметра — и чтобы его прикрутить, надо переделывать код минимум в 8 местах. Потому как параметры четыре раза конвертируются из одного формата в другой.
А потом надо как-то скормить данные последнего этапа библиотеке для работы с сервером (прямого доступа к HTTP нет, хотя используется всего лишь POST + JSON). А библиотека тоже очень развесистая, со своим DSL, не хухры-мухры. В общем, тут я и застрял пока. Потому что просто скормить ей JSON (который у меня уже есть) нельзя, а переводить это в ее хитротраханный DSL — ну, мягко говоря, непросто. И всё это, чтобы перевести его обратно в JSON
Черт, сколько бессмысленной работы
UVV>Позволь не согласиться. Иногда на придумывание имени порой уходит времени больше, чем на написание куска кода. Имя должно быть понятным, оно должно отражать суть логического объекта и не всегда это лежит на поверхности.
Придумай мало-мальски осмысленное имя, потом поменяешь.
Здравствуйте, smeeld, Вы писали:
S>Разобраться с кодом, безотносительно его качества, за это Вам деньги и платят. Работа не может быть приятной, та, за которую денег платят.
Разобраться, в данном случае — это весь код на помойку и потратить день, чтобы переписать. Не дадут.
Здравствуйте, antropolog, Вы писали:
A>сакраментальный ответ — а оно тебе надо? Или более развёрнуто — какие стратегические цели могут быть достигнуты таким объяснением?
Нежелание тратить время на бессмысленную работу.
A>прокачать критичный для разработчика скилл — уменее читать и понимать чужой ( пусть даже пахнущий ) код
С этим скиллом у меня и так всё хорошо.
A> пилить свой "совершенный код", факапя сроки
Ты поставил всё с ног на голову. Моя цель — решение задачи с минимальными сложностями. Продукт любителя "совершенного кода" и паттернов — это как раз то, от чего я хочу избавиться.
Здравствуйте, consign, Вы писали:
C>И снова мне подкинули проект "совсем немного доработать". C>Как только я услышал эту фразу, сразу закопошились нехорошие предчувствия. И они опять не обманули. C>Код в лучших традициях подхода "меня укусил Гамма" — куча классов с одним методом, каждый вызывается строго через интерфейс и создается через абстрактную фабрику (при том, что у всех интерфейсов ровно по одному наследнику), визиторы, DSL на основе YAML, 30 пакетов с фреймворками непонятного назначения, и так далее. C>Нормальной обработки ошибок нет, если что пошло не так — дохнет напрочь. C>И всё это при том, что вся функция проги — периодически дергать страницу по HTTP, передавая ей аргументы из конфига, и если ответ не совпадает с заданным — дернуть другую страницу. Всё.
C>Теперь сижу, не могу определиться — ржать или плакать. C>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку? Но так, чтобы он с программистом не уперлись рогом и не записали меня в вечные враги?
Потом подойти к коллеге чей код тебе кажется не такой как все и попросить помочь разобраться, расспросить о всех ньюансах, скажи что столкнулся с проблемой — программа иногда "дохнет напрочь", спроси как это можно подлечить с минимальными затратами.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, andrey.t, Вы писали:
AT>То есть у тебя нет причин для изменения кода кроме "оно говно"? Тогда менеджер будет прав на все 100, если не послушает такое объяснение.
Ну можно перевести на менеджерский язык — в таком коде новые фичи будут вводиться сложно и долго.
AWW>>Вы просто не сталкивались с ситуациями когда кодят в оставшиеся пять дней до срока сдачи, и так в течении двух недель до этого. Ну по 12 часов в день. C>Сталкивался и похуже. И когда такое происходит, это всё — один сплошной бред. Странно ожидать от людей, что они не наделают глупостей в таких условиях.
Я вот недавно в одном открытом проекте фиксил багу, запилил константу с идентификатором абсолютно чёрной текстуры IMG_BLACK_SQUARE_MALEVICH
Начать следует с ТЗ.
Если ТЗ отсутствует, то надо поставить вопрос о его составлении.
После прочтения ТЗ может вдруг оказаться, что ничего лишнего в коде нет.
Имея в одной руке ТЗ, в другой сам код, можно уже предметно подготовиться к разговору с менеджером и аргументированно обьяснить, что и почему следует выбросить, что добавить, а что переделать.
Здравствуйте, okon, Вы писали:
O>Здравствуйте, alpha21264, Вы писали:
A>>Здравствуйте, pestis, Вы писали:
P>>>Честно признать что твоей квалификации недостаточно чтобы поддерживать этот код тебе религия не позволяет?
A>>Знаешь, тратить квалификацию на поддержания говнокода не стОит. Есть масса более интересных применений.
O>А в чем еще квалификация проявляется, когда все легко и просто тогда и квалификация не нужна O>профессиональный врач любит работать со сложными клиентами, т.к. в этом квалификация и навыки проявляются и развиваются.
Программист не врач, программист — инженер. И если можно взять в космос карандаш,
а не изобретать ручку за миллион долларов, то нужно брать карандаш.
Если нужна какая-то невероятная квалификация, чтобы делать тривиальные вещи,
то контора нерационально расходует интеллект сотрудников. Топикстартер в начальном
посте правильно описал симптомы. В этом коде приходится использовать "стрельбу дробью" —
то есть, вносить изменения сразу во много мест. Что тебе не понятно? Почему нужно
избавляться от стрельбы дробью независимо от квалификации? Потому что вносить
изменения в одно место в сто раз быстрее чем в десять. Почему в сто? Потому что
тут квадратичная зависимость.
Здравствуйте, pestis, Вы писали:
P>Здравствуйте, alpha21264, Вы писали:
A>>Знаешь, тратить квалификацию на поддержания говнокода не стОит. Есть масса более интересных применений.
P>Ты так говоришь, как будто квалификация расходуется. Скорее наоборот, от работы с чужим кодом квалификация растет.
В данном случае расходуется.
Просто человек мог бы вместо копания в говнокоде что-нибудь умное написать.
А не напишет, потому что копался в говнокоде.
А для копания в говнокоде нужны совсем другие умения, чем для чего-то умного.
То есть он и программу не напишет, и квалификация упадёт.
Здравствуйте, antropolog, Вы писали:
A>дартаньянство есть, отсутствие опыта есть, прийти за помощью и хамить всем подряд тоже есть, а аккаунта на хабре нет. Удивил.
О мудрый и великий гадатель на шаре.
A>милок, моё время стоило 2 килобакса в месяц примерно 12 лет назад, и ты тогда под стол пешком ходил.
Здравствуйте, gandjustas, Вы писали:
G>Ты сам понимаешь все, что делает код?
Ты уверен, что прочитал и понял вопрос полностью?
G>Средняя скорость чтения и понимания кода — 200 строк в час, скорость написания — 70 строк в час.
Слишком упрощено. Какой-нибудь особо крепкий баг может потребовать многих дней, чтобы сидеть и ковырять код, и в конце концов написать всего пару строк — к примеру.
G>Чтобы поговорить с менеждером — найди куски, которые можно сократить. Например выкинуть абстрактную и интерфейсы, убрать визиторы и напрямую вызывать функции.
Здравствуйте, alpha21264, Вы писали:
A>Ну скажи, что не можешь вьехать, и тот, кто это наваял, пусть это и дальше поддерживает.
Обгадить самого себя перед начальником — плохой подход.
Пока что, лучшее, что я придумал — ткнуть ПМа в конкретные проблемы при введение новой фичи, которая ему нужна, и растолковать, например, что 4 раза переконвертировать исходные данные из одного формата в другой — полное говно не очень хорошая идея.
Здравствуйте, okon, Вы писали:
O>Если рефакторинг за свой счет то такой вариант возможен, если в рабочее время то не надо. Вы тратите чужие деньги на то , на что вас не просят.
Вот пару недель назад наш тим лид уволил своего программиста за то, что тот самовольно решил сделать рефакторинг. И задачку на день он делал неделю, да еще нагенерил кучу багов.
Конечно этот случай был не единственным, от этого программиста часто было слышно про чужой говнокод, но объективные показатели его работы (средняя скорость разработки, количество возвратов на багфиксинг) в два раза раза были ниже среднего по отделу.
Здравствуйте, consign, Вы писали:
A>>милок, моё время стоило 2 килобакса в месяц примерно 12 лет назад, и ты тогда под стол пешком ходил. C>А сейчас 2100 или даже 2200?
А вам сколько платят за описанную в стартовом посте работу? В 2 раза больше?
Здравствуйте, Teolog, Вы писали:
T>Потом сделать что попросят и вернуться к своим делам. Есть более интересные занятия чем покрасить и выбросить.
Тоже вариант. Я пока склоняюсь к подходу "описать всё в багах, и пусть выкручиваются, как хотят". Хотя, боюсь, что всё закончится перевешиванием багов на меня.
PS ненавижу уродов, которые спрыгивают с недоделанного проекта
Здравствуйте, sharpcoder, Вы писали:
S>Разбираться в чужом коде задача всегда не простая, программисты среднего уровгя часто не в силах это делать.
До некоторых людей всё никак не доходит, что "не мочь разобраться в коде" и "мочь разобраться в коде, но не хотеть ковыряться в данном конкретном говне" — разные вещи.
Здравствуйте, landerhigh, Вы писали:
L>Если бы там действительно было говно, которое нужно выкинуть и написать нормально за день, то ты бы именно это уже и сделал. Вместо этого флеймишь на форумах. L>За день ты уже не справился. Что и требовалось доказать.
А я и не начинал переписывать. Если просто наплевать на указания и всё переписать — получишь по шапке, и неважно — уложишься в срок или нет. Тратить время и выполнять глупые указания — за это по шапке не дадут.
Корпоративщина, черт ее дери...
Здравствуйте, sharpcoder, Вы писали:
S>До некоторых людей все никак не доходит, что на работе надо решать задачи работодателя, а не делать то что хочется.
Я в курсе, см сообщение выше. "Я начальник — ты дурак", ничего нового ты мне не рассказал.
Здравствуйте, AlexRK, Вы писали:
ARK>Тогда лично для меня очень странно как то, что вы занимаетесь описанной в стартовом посте работой, так и само появление такого топика.
Тогда тебя очень удивит, какой работой занимаются некоторые люди с вооот такой зарплатой.
ARK>Хотя, если вы в США, то, насколько мне известно, 60000-70000 в год там вроде как считается не очень много, так что выглядит вполне правдоподобно. ARK>Если в России, логичного объяснения я не вижу (впрочем, на экспертные знания в области ИТ-найма не претендую).
Не то и не другое. Да и вообще, считать "грязный" доход — бессмысленно. 60-70 в Штатах — этого только на доширак хватит.
Здравствуйте, consign, Вы писали:
C>Если просто наплевать на указания и всё переписать — получишь по шапке, и неважно — уложишься в срок или нет.
Победителей не судят. Только в срок уложиться надо.
C>Тратить время и выполнять глупые указания — за это по шапке не дадут.
Зато неявно повесят ярлык "терпила" и будут такими указаниями закидывать.
Здравствуйте, consign, Вы писали:
C>Здравствуйте, okon, Вы писали:
O>>Вообще 8 мест изменить если это в рамках одного модуля или солюшена, это не такая уж тяжелая работа.
C>На каждую фичу?
O>>А что за библиотека развесистая со своим DSL, как называется ?
C>NEST
Если я правильно понял то это библиотека для работы с elasticsearch.net , неплохое решение, зачем такое решение нужно ? Для того чтобы потом полдня в логах ошибки не искать а они были структурированы ( все равно что в БД сохранять ) и по ним можно было делать статистику и т.п.
Я бы все таки посоветовал подружиться и попросить того парня научить этой вещи, штука полезная.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, consign, Вы писали:
ARK>>Тогда лично для меня очень странно как то, что вы занимаетесь описанной в стартовом посте работой, так и само появление такого топика. C>Тогда тебя очень удивит, какой работой занимаются некоторые люди с вооот такой зарплатой.
Да, я, пожалуй, буду изрядно удивлен, если узнаю, что человек с вооот такой зарплатой подметает полы. (Ну или правит говнокод.) В мою примитивную картину мира это не укладывается. Скорее всего я подумаю, что по каким-то причинам у него нет выбора.
ARK>>Хотя, если вы в США, то, насколько мне известно, 60000-70000 в год там вроде как считается не очень много, так что выглядит вполне правдоподобно. ARK>>Если в России, логичного объяснения я не вижу (впрочем, на экспертные знания в области ИТ-найма не претендую). C>Не то и не другое. Да и вообще, считать "грязный" доход — бессмысленно.
Здравствуйте, okon, Вы писали:
O>зачем такое решение нужно ?
Да собственно, в этой задаче — ни зачем.
O>Для того чтобы потом полдня в логах ошибки не искать а они были структурированы ( все равно что в БД сохранять ) и по ним можно было делать статистику и т.п.
Здравствуйте, AlexRK, Вы писали:
ARK>(Ну или правит говнокод.) В мою примитивную картину мира это не укладывается.
Вы не поверите...
Просто говнокод бывает разный. То, в чем ковыряется наш архитектор — это вообще ужас ужасом. Паттернов там еще больше, а просто собрать весь проект — весьма нетривиальная задача.
ARK>Ну назовите чистый.
Я и так говорил о чистом — после налогов и расходов.
Здравствуйте, consign, Вы писали:
C>Здравствуйте, okon, Вы писали:
O>>зачем такое решение нужно ?
C>Да собственно, в этой задаче — ни зачем.
Как ни зачем, в логах не придется искать ошибки ? Узнать сколько запросов в сутки выполняется , сколько из них прошло сколько нет — будете считать по логам ?
O>>Для того чтобы потом полдня в логах ошибки не искать а они были структурированы ( все равно что в БД сохранять ) и по ним можно было делать статистику и т.п.
C>Какие логи, какие ошибки?
Ну вот а говорили что копаться в "говнокоде" это потеря квалификации, а тут можно и найти интересное оказывается https://habrahabr.ru/post/266299/
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, okon, Вы писали:
O>Как ни зачем, в логах не придется искать ошибки ? Узнать сколько запросов в сутки выполняется , сколько из них прошло сколько нет — будете считать по логам ?
Какие конкретно ошибки?
O>Ну вот а говорили что копаться в "говнокоде" это потеря квалификации, а тут можно и найти интересное оказывается
Я ее ковырял уже. Сам сервер неплох, но NEST — редкостный кусок говна.
O>>Как ни зачем, в логах не придется искать ошибки ? Узнать сколько запросов в сутки выполняется , сколько из них прошло сколько нет — будете считать по логам ?
C>Какие конкретно ошибки?
Ну там же http запросы, как минимум ошибки подключения и обработки запросов.
O>>Ну вот а говорили что копаться в "говнокоде" это потеря квалификации, а тут можно и найти интересное оказывается C>Я ее ковырял уже. Сам сервер неплох, но NEST — редкостный кусок говна.
А более аргументированно, или получается все что новое и непонятное — говно?
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, consign, Вы писали:
C>Здравствуйте, alpha21264, Вы писали:
A>>Ну скажи, что не можешь вьехать, и тот, кто это наваял, пусть это и дальше поддерживает.
C>Обгадить самого себя перед начальником — плохой подход.
Почему обгадить-то? Кто наваял, тот и поддерживает — вполне нормальный подход, который применяется всегда и везде.
Потому что тебе надо въезжать, а автору не надо. А чтобы въехать, надо потратить столько же времени как на написание.
Здравствуйте, alpha21264, Вы писали:
A>Здравствуйте, sharpcoder, Вы писали:
S>>До некоторых людей все никак не доходит, что на работе надо решать задачи работодателя, а не делать то что хочется.
A>Лучше всего люди делают именно то, что им хочется. И хороший менеджер это всегда знает.
Но далеко не всегда текущие задачи бизнеса совпадают с тем что хочется конкретному человеку.
Да и мало кто идет наниматься на работу потому что хочется работать на дядю, большинство соглашается с тем что дядя будет давать работу и ее нужно будет выполнять. Только вот после трудоустройства и определенного периода адаптации уже начинается какое-то неприятие задач.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, okon, Вы писали:
O>Здравствуйте, alpha21264, Вы писали:
A>>Здравствуйте, sharpcoder, Вы писали:
S>>>До некоторых людей все никак не доходит, что на работе надо решать задачи работодателя, а не делать то что хочется.
A>>Лучше всего люди делают именно то, что им хочется. И хороший менеджер это всегда знает.
O>Но далеко не всегда текущие задачи бизнеса совпадают с тем что хочется конкретному человеку.
Ну так в том и заключается работа менеджера. Тем более, что ваятель говнокода сидит рядом.
O>Да и мало кто идет наниматься на работу потому что хочется работать на дядю, большинство соглашается с тем что дядя будет давать работу и ее нужно будет выполнять. Только вот после трудоустройства и определенного периода адаптации уже начинается какое-то неприятие задач.
У кого как. Я из того поколения программистов, кому работа нравится. И нас таких целая контора. :-P
Здравствуйте, Andrew.W Worobow, Вы писали:
AWW>Ученые говорят что это наступает в 3-5 лет опыта. AWW>И более того предупреждают, что во-первых этот период наиболее авариный по статистике, во-вторых что тяжесть аварий существенно выше.
Интересно. И при каком количестве наезженных за месяц часов делается расчет?
Здравствуйте, okon, Вы писали:
O>Ну там же http запросы, как минимум ошибки подключения и обработки запросов.
Это не имеет никакого отношения к библиотеке. Она просто бросает исключение при ошибке.
O>А более аргументированно, или получается все что новое и непонятное — говно?
Ну я же написал, что сервер неплох. Хотя, я код пока особо и не копал
Здравствуйте, alpha21264, Вы писали:
A>>>Ну скажи, что не можешь вьехать, и тот, кто это наваял, пусть это и дальше поддерживает.
C>>Обгадить самого себя перед начальником — плохой подход.
A>Почему обгадить-то? Кто наваял, тот и поддерживает — вполне нормальный подход, который применяется всегда и везде. A>Потому что тебе надо въезжать, а автору не надо. А чтобы въехать, надо потратить столько же времени как на написание.
А главное -- чтобы у автора появилась ответственность. А то получается -- буду писать, как карта ляжет, если что -- другие подотрут.
Здравствуйте, Teolog, Вы писали:
T>Просто профессионал. Хотите -сделаем, за соотвествующую цену. Соотвествующая цена время+усилия+моральный ущерб от говнокода. T>Нет проблем. Что дорого, уже не хотите? Как пожелаете.
C>А что тебя не устраивает? Да, я не люблю править баги в чужих программах. Особенно если это — вообще не моя ответственность.
Это надо уметь делать. Не все проекты пишутся с нуля. Есть куча проектов которые живут с 70-80-90-ых, и над ними нужно уметь продолжать работать. Этого скилла у тебя нет, хоть я и согласен с твоим начальным постом.
Здравствуйте, De-Bill, Вы писали:
C>>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку?
DB>Такие слова разрешено говорить вслух только программистам-новичкам.
Наоборот, новому ведущему программисту, это хорошее основание для дальнейших отмазок.
DB>Опытные программисты понимают, что практически любой промышленный код — полное говно,
+1
DB>и что надо всё переписывать. Но это стоит дороже, чем поддерживать.
Зависит.
DB>Хороший код встречается либо в программках на 1000 строк, которыми никто никогда не пользовался,
Когда как.
DB>либо в компаниях, куда стоит очередь 20 программистов на одно место.
Очередь легко организовать, с качеством кода она не связана.
DB>Не хватает квалификации, чтобы попасть в такую компанию — будь готов работать с говнокодом.
Квалификация нынче измеряется олимпиадными задачами, и из качественных ингредиентов запросто получается тошнокод.
V>В ИТ около 15 лет, был ~6 конторах, ни разу не слышал чтобы хоть раз чей-нибудь код называли хорошим, только и слышно здесь говно, там говно.
V>Даже нет у него в отличие от говнокода названия своего, там вареньекод, медокод.
V>Если знаете какой-нибудь опенсорс или есть свой код в интернете пришлите ссылочку посмаковать, хоть раз взглянуть на это чудо которое не назовут говном.
Видел, в основном нормальный код, был так же код сваяный на скорую руку, тк пму/сейлзам/левойпятке/хзкому надо быстрее хуякхуяк(да простят меня модераторы) и в продакшн. Но так чтобы совсем говнокод, да весь проект/продукт — ни разу.
Здравствуйте, consign, Вы писали:
L>>И правильно не дадут, потому что знают, что "день" — это обычно где-то полгода
C>Не суди всех по себе
Делаешь просто: создаёшь проект, пишешь там всё заново. Через день если твой новый проект лучше, чем старый, то заменяешь.
Начальству говоришь, что работаешь над старым проектом.
Только ведь что-то пойдёт не так.
Здравствуйте, landerhigh, Вы писали:
DB>> либо в компаниях, куда стоит очередь 20 программистов на одно место.
L>К сожалению, в компаниях, где водится действительно хороший код, никакой очереди нет. При уходе программиста его просто не заменяют. Незачем.
Получается, такие компании держат ненужных программистов? Слава богу, есть еще в мире альтруизм, грязная зеленая бумажка еще не все умы зохавала.
mgu>Иногда есть зачем. Просто в компании, где пишут хороший ход, набирают подходящих программистов, а для этого составляют хорошие объявления о найме, которые исключают очереди. В общем, какой стол, такой и стул какой отдел кадров, такие и работники.
Чтобы набрать хороших программистов, нужны хорошие деньги. А когда есть хорошие деньги, очереди сами выстраиваются. Невозможно написать такое объявление на большие деньги, чтобы шли только подходящие кандидаты.
Здравствуйте, landerhigh, Вы писали:
L>Здравствуйте, alpha21264, Вы писали:
A>>Почему обгадить-то? Кто наваял, тот и поддерживает — вполне нормальный подход, который применяется всегда и везде.
L>Не всегда и не везде. L>Более "везде" используется другой подход. "Наваял — сделай так, чтобы саппорт мог поддерживать".
Так тоже можно. Но в данном случае и это условие тоже не выполняется..
Здравствуйте, AlexRK, Вы писали:
L>>К сожалению, в компаниях, где водится действительно хороший код, никакой очереди нет. При уходе программиста его просто не заменяют. Незачем. ARK>Получается, такие компании держат ненужных программистов?
Они исповедуют подход — незаменимых у нас нет, мы просто не будем никого заменять
Здравствуйте, Andrew.W Worobow, Вы писали:
AWW>#define _15_ 15
Ой, да ладно... ещё терпимо. Я видал такое:
public class Constants
{
public static final int ONE = 1;
public static final int TWO = 2;
public static final int THREE = 3;
...
public static final int FIFTEEN = 15;
...
}
И всё потому, что правильно поставленный процесс разработки — запускается checkstyle и ругается на magic constant.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
A>Конечно, каждый день его пишу. Да и разве может свой код быть плохим? Конечно нет, иначе зачем всякий новый участник проекта старается все переписать с нуля?
Своё говно не пахнет?(с)
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Здравствуйте, sharpcoder, Вы писали:
S>Наняли команду толковых c# кодеров, написали ТЗ. И вот задача была переписать продукт. dotNet'чики радостно заявили что за 6 месяцев все перепишут, и еще за 6 — все отладят, сделают необходимые вспомогательные модули и продукт можно будет продавать.
....
S>В 2006 они сделали первый работающий прототип. (3 года прошло) S>В 2008 прототип так и не начал стабильно работать (всего 5 лет прошло), и проект закрыли!
Здравствуйте, 0BD11A0D, Вы писали:
BDA>Если выделенное болдом верно
Наконец то появился один человек, который прочитал исходное сообщение полностью
BDA>Можно написать эту функцию(ции) сбоку и передавать управление ей, а вызовы имеющегося кода закомментировать.
Нет смысла, поскольку почти весь код — это разбор и конверсия конфигов.
Здравствуйте, ·, Вы писали:
·>Здравствуйте, Andrew.W Worobow, Вы писали:
AWW>>#define _15_ 15 ·>Ой, да ладно... ещё терпимо. Я видал такое: ·>
·>public class Constants
·>{
·> public static final int ONE = 1;
·> public static final int TWO = 2;
·> public static final int THREE = 3;
·>...
·> public static final int FIFTEEN = 15;
·>...
·>}
·>
·>И всё потому, что правильно поставленный процесс разработки — запускается checkstyle и ругается на magic constant.
Наверное В правильном процессе не нашлось места для код ревью
Здравствуйте, consign, Вы писали:
C>Код в лучших традициях подхода "меня укусил Гамма" — куча классов с одним методом, каждый вызывается строго через интерфейс и создается через абстрактную фабрику (при том, что у всех интерфейсов ровно по одному наследнику)
Про код "навырост" — когда-то тоже писал код навырост, но потом даже до моей дурной башки стало доходить, что навырост конечно надо писать, но не так. Не усложнять структуру, а оставлять крепления для "выроста" этой структуры. Например, в данном случае, вместо интерфейса может быть
typedef MyClass MyClassInterface;
читабельность усложняет незначительно, а "навырост" в полном масштабе.
Автор же, подозреваю, либо кайфует от применения правильных подходов, либо тренируется, учась на простом проекте сложным вещам.
И, кстати, я разбирался в таком проетке "навырост", удовольствия не получил. 5 уровней абстракции, за которыми конкретно выполняющий уровень код. С простой программой можно месяц возиться. Имхо, если такое "навырост" есть, то должно быть превосходно документировано, а желательно оставить один уровень абстракции, но так, чтобы при необходимости достраивались другие 4.
Здравствуйте, consign, Вы писали:
BDA>>Можно написать эту функцию(ции) сбоку и передавать управление ей, а вызовы имеющегося кода закомментировать. C>Нет смысла, поскольку почти весь код — это разбор и конверсия конфигов.
Значит, не «изрядная», а «львиная». Код у вас, конечно, на C++ (иначе, откуда бы все эти проблемы). Черт его знает, без примеров дальше малоконструктивно обсуждать. Я верю, что вам достался over-engineering, но разбор JSON'а на C++ простым и не будет. Насколько его можно упростить, переписав, по сравнению с имеющейся астронавтикой — хз.
UPDATE
Судя по NEST, это C#. Ну, опять же, надо бы сначала взглянуть на код, хотя шансов сильно его сократить больше. Стратегия, возможно, подойдет та же самая.
Здравствуйте, 0BD11A0D, Вы писали:
BDA>Значит, не «изрядная», а «львиная». Код у вас, конечно, на C++ (иначе, откуда бы все эти проблемы). Черт его знает, без примеров дальше малоконструктивно обсуждать. Я верю, что вам достался over-engineering, но разбор JSON'а на C++ простым и не будет. Насколько его можно упростить, переписав, по сравнению с имеющейся астронавтикой — хз.
Странное заявление. В чем проблема разобрать JSON на C++? Легко и просто делается. Применив визитор по типам нодов и что-то типа SAX парсера, все получится очень элегантно.
Здравствуйте, Molchalnik, Вы писали:
M>Про код "навырост" — когда-то тоже писал код навырост
В данном конкретном случае, это не код навырост, а просто культ карго. Попытка применения паттернов мартышками, которые не понимают, когда они нужны, а когда — нет.
S>>В 2006 они сделали первый работающий прототип. (3 года прошло) S>>В 2008 прототип так и не начал стабильно работать (всего 5 лет прошло), и проект закрыли!
C>Толковых? Ты точно ничего не перепутал?
Тут вот какая проблема. Есть кто реально что-то может сделать, т.е. толковые, а есть кто думает, что что-то может. А есть еще звиздуны. Хороший начальник знает сильные и слабые стороны своих подчиненных, но в том-то и дело, что большинство из них также как и программисты не разбираются в своей работе.
S>Гендир там был веселый человек. Помню как он сказал в момент получения работающего прототипа "поздравляю всех вас с тем, что вы научились использовать современные технологии"
Шарпкодер, ответь на вопрос мгу. Мне тоже интересно. И еще мне интересно почему он продолжил вбухивать деньги в проект хотя было видно что программисты не справляются.
Здравствуйте, Олег К., Вы писали:
ОК>То есть ты не senior enough.
Это смотря по какой шкале считать. С технической точки зрения, выкинуть этот код — единственный разумный вариант. А вот с точки зрения корпоративной политики, всё намного сложнее.
Здравствуйте, Олег К., Вы писали:
ОК>Есть куча проектов которые тянутся с 70-х-80-х-90-х гг. Миллионы строк кода не самого лучшего качества который непросто переписать. Поэтому, мой тебе совет. Или попроси начальника чтобы он дал задачу автору или плюйся но стисни зубы и сделай что от тебя хотят.
Такой подход не подходит другим проектам, поэтому так нельзя сделать с этим проектом. Занятная логика.
Здравствуйте, consign, Вы писали:
C>Здравствуйте, lgb, Вы писали:
lgb>>А дома за одно воскресенье, например, сделать правильную версию — какие проблемы вообще?
C>Про это уже было выше.
Здравствуйте, Олег К., Вы писали:
ОК>А потом кому-то твой код не понравится (неважно по какой причине!) и тоже захочет переписать. И так каждый раз код переписывать что ли?
Если он сможет сделать это за разумное время и лучше меня, то почему нет?
Здравствуйте, consign, Вы писали:
ОК>>А потом кому-то твой код не понравится (неважно по какой причине!) и тоже захочет переписать. И так каждый раз код переписывать что ли? C>Если он сможет сделать это за разумное время и лучше меня, то почему нет?
Просто представь себя на месте владельца компании, к которому каждый новый программер приходит с предложением все переписать заново, чтобы стало лучше.
Здравствуйте, lgb, Вы писали:
lgb>Просто представь себя на месте владельца компании, к которому каждый новый программер приходит с предложением все переписать заново, чтобы стало лучше.
ОК>>А потом кому-то твой код не понравится (неважно по какой причине!) и тоже захочет переписать. И так каждый раз код переписывать что ли?
C>Если он сможет сделать это за разумное время и лучше меня, то почему нет?
Нет предела совершенству? Так что ли? Тут пойнт в том, что нужно двигаться вперед а не стоять на месте (переписывая работающий хоть и плохой код).
lgb>>Просто представь себя на месте владельца компании, к которому каждый новый программер приходит с предложением все переписать заново, чтобы стало лучше.
C>Если действительно станет лучше, то почему нет?
А цели такой и нет. Нужно продолжать двигаться. КПД в 100% недостижим.
Здравствуйте, consign, Вы писали:
C>Здравствуйте, lgb, Вы писали:
lgb>>Просто представь себя на месте владельца компании, к которому каждый новый программер приходит с предложением все переписать заново, чтобы стало лучше.
C>Если действительно станет лучше, то почему нет?
Здравствуйте, consign, Вы писали:
C>Ежу понятно, что вся эта развесистая архитектура создана "под вырост". C>Проблема в том, что C>а) сделано много совершенно ненужного C>б) не хватает нужного, и прикрутить его — крайне геморно
С развесистой архитектурой на вырост очень часто бывает так. Расти ей приходится совсем не в том направлении, куда задумывалось первоначально. Мораль: не пишите развесистых архитектур на вырост, если у вас нет абсолютно чёткого представления, как она будет расширяться. Лучше сразу с примером, который использует возможность расширения.
У меня, если честно, такой код в лучших традициях Гаммы прочно ассоциируется с понятием "23-летний сеньор". Уж не знаю, почему.
Здравствуйте, Aptekar, Вы писали:
A>С развесистой архитектурой на вырост очень часто бывает так.
Чуть реже, чем всегда. Про это хорошо Брукс написал.
A>У меня, если честно, такой код в лучших традициях Гаммы прочно ассоциируется с понятием "23-летний сеньор". Уж не знаю, почему.
Ага... в 23 я тоже страдал излишней любовью к паттернам, хотя не до такой степени.
Здравствуйте, consign, Вы писали:
C>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку? Но так, чтобы он с программистом не уперлись рогом и не записали меня в вечные враги?
Менеджеры любят документы. Я бы попробовал написать небольшой doc типа результаты code review, со списком недочетов и вариантов улучшения.