Здравствуйте, 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>Наконец то появился один человек, который прочитал исходное сообщение полностью
BDA>>Можно написать эту функцию(ции) сбоку и передавать управление ей, а вызовы имеющегося кода закомментировать. C>Нет смысла, поскольку почти весь код — это разбор и конверсия конфигов.
Ну, ты же сказал, что можешь переписать все за один день. Почему бы тогда не сделать это дома, пусть даже за несколько вечеров и облегчить тем самым жизнь себе и другим?
Потом скажешь руководству, что вот вам новый компактный код, он полностью покрыт тестами (у тебя же есть все спецификации?), скорость увеличилась примерно на 146%, поддержка упростилась и все такое. И пусть решают, внедрять твое или оставить старое.
Мне сейчас достался проект, где тоже куда ни плюнь — фабрика на фабрике, декораторы интерфейсами погоняют, комментарии отсутствуют и т.д. Нужно добавить новую фичу — сижу, трассирую код, чтобы понять, что откуда берется. Почти разобрался. Переписать все заново? Проект огромный, живет уже несколько лет. И, что самое характерное, приносит компании доход. Каковая компания из этого дохода платит мне зарплату. За которую я и занимаюсь этим проектом.
Здравствуйте, 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>Гендир там был веселый человек. Помню как он сказал в момент получения работающего прототипа "поздравляю всех вас с тем, что вы научились использовать современные технологии"
Шарпкодер, ответь на вопрос мгу. Мне тоже интересно. И еще мне интересно почему он продолжил вбухивать деньги в проект хотя было видно что программисты не справляются.
C>В данном конкретном случае, это не код навырост, а просто культ карго. Попытка применения паттернов мартышками, которые не понимают, когда они нужны, а когда — нет.
Чувак, ты чертовски прав! Это плюс тебе. Минус же тебе в том, что ты не можешь плюнуть и работать в рамках существующего кода. То есть ты не senior enough.
Я понимаю что это у тебя что-то вроде типа "крика души," но нужно принять данное как должное. Плохой код (повторюсь, я согласен с тобой что это плохой код и не потому что он чужой, а потому что там "мартышки применили паттерны"!) это издержки нашей профессии. Это нужно принять. Увы.
Здравствуйте, Олег К., Вы писали:
ОК>То есть ты не senior enough.
Это смотря по какой шкале считать. С технической точки зрения, выкинуть этот код — единственный разумный вариант. А вот с точки зрения корпоративной политики, всё намного сложнее.
Здравствуйте, consign, Вы писали:
lgb>>Потом скажешь руководству
C>Уже обсуждали. За такие штучки любой ПМ по шапке надает, кроме одного их крайне редкого подвида.
Конечно, если ты будешь переделками в рабочее время заниматься. А дома за одно воскресенье, например, сделать правильную версию — какие проблемы вообще? Дольше здесь обсуждать, чем просто взять и сделать.
ОК>>То есть ты не senior enough.
C>Это смотря по какой шкале считать. С технической точки зрения, выкинуть этот код — единственный разумный вариант. А вот с точки зрения корпоративной политики, всё намного сложнее.
Предложение переписать проект целиком прокатит лишь для небольших проектов вроде "твоего," но в целом это неверно. Есть куча проектов которые тянутся с 70-х-80-х-90-х гг. Миллионы строк кода не самого лучшего качества который непросто переписать. Поэтому, мой тебе совет. Или попроси начальника чтобы он дал задачу автору или плюйся но стисни зубы и сделай что от тебя хотят.
Здравствуйте, Олег К., Вы писали:
ОК>Есть куча проектов которые тянутся с 70-х-80-х-90-х гг. Миллионы строк кода не самого лучшего качества который непросто переписать. Поэтому, мой тебе совет. Или попроси начальника чтобы он дал задачу автору или плюйся но стисни зубы и сделай что от тебя хотят.
Такой подход не подходит другим проектам, поэтому так нельзя сделать с этим проектом. Занятная логика.
Здравствуйте, consign, Вы писали:
C>Здравствуйте, lgb, Вы писали:
lgb>>А дома за одно воскресенье, например, сделать правильную версию — какие проблемы вообще?
C>Про это уже было выше.