В крайнем случае, вы рискуете переписанием ОДНОГО модуля.
Если разбиение достаточно грамотное, то один модуль содержит вполне линейный код, который проанализировать новому человеку не займёт много времени.
А вот рвать время в клочья — это же гарантированный ахтунг с косяками, и гит или любой другой механизм контроля версий — тут просто выполняет роль подтирки на почти гарантированный случай при попытке надрать время — случай, когда все обо… ались и виноватыми будут назначены исполнители, которые, да, начнут уходить…
Ну, к слову, линейность кода — показатель хорошо продуманной системы данных и модулей с субмодулями. А вот многоэтажные логические конструкции — показатель строго противоположного. Я запрещал раньше своим студентам и коллегам использовать табуляцию меньше 8 символов, логика простая: если твой код не влазит на экран по ширине — ты лошара.
Как вариант, без претензий на вашу конкретику, мне она неизвестна.
И прошу пощения за инлайн, тут неудобно набирать код.
Суть в том, что бы сделать любой субмодуль проекта максимально автономным, насколько это позволяет требование многопоточности, если таковая используется.
В данном случае, перфоратором долбится только то, что в базовом классе есть UserId.
Можно даже сразу прописать в конструкторе базового класса UserId=0, что бы принимать это как знак нештатной ситуации, когда величина останется непрописанной.
А это потому что у вас не вынесено отдельного чёрного ящика, который идентичен для Х, У и Z. Тогда ведение протокола («логгирование») добавляется девочкой, которая правит черный ящик стандартных процедур/объектов/янии7у для контекстов X, Y и Z, а сами контекстные правки спокойно делаются другой девочкой.
Только на этапе проектирования-допроектирования вы должны взять перфоратор и добавить на бетон протокол для нового черного ящика, что бы обе девочки понимали, что могут делать любые вещи, которые не противоречат тому, что на стене.
Ничего не имею против гита самого по себе. Просто он относится к разряду инструментов, которые могут отвлечь внимание от основной цели, если эта цель, разумеется, создание качественного, а не маркетингового продукта.
Есть вещи, которые позволяют ослабить проектную составляющую. А проект это в первую очередь именно проект — цельная концепция, в которую любая рюшечка вписывается сама собой логично.
Когда настает момент, что новая рющечка не вписывается — необходимо перепроектирование, иначе и эта, и все последующие рюшечки автоматически становятся заплатками.
Выделяйте в проекте «чёрные ящики». Синхронизируйте работу только на уровне стыковки чёрных ящиков, протоколы взаимодействия должны быть выдолблены перфоратором на стене офиса. На каждом этапе модификаций один человек работает с одним чёрным ящиком. Причем этап это не 3 часа «эффективно сменеждеренного» времени, а минимум пара дней. Спешка хороша только при долбёжке чужой жены в доме её мужа.
))) Нда, вот так бывает, когда правишь предложение по три раза )) С кодом аналогично — надёжнее переписать ))
Так это и происходит… Сперва утверждается что «переписывать неделю — дорого», а потом оказывается, что наложенная за 5 минут заплатка тянет за собой убытки ещё годами. При этом на времязатраты кодирования накладываются еще бОльшие времязатраты на менеджмент. О нервах вообще молчу.
Через какое-то время из проекта расползаются ключевые фигуры и спустя 10 лет проект становится громоздким возом заплаток, который лечить уже никто не собирается ни за какие деньги — проще начать новый проект.
20-25 лет назад проект писался максимум тремя программистами на языках для мальчиков и был вылизан до блеска, всё что нужно было — архивирование версий перед крупными доработками, больше для сохранности. Теперь по три сотни программистов пишут свои кривые косяки, используя кривые же библиотеки, путаясь в версиях не только собственных ляпов, но и в версиях багов и «особенностей» библиотек. В итоге на выходе имеем совершенно тривиальные задачи, решённые всё более нетривиальными способами со всё убывающей нагрузочной способностью, релизы софта, год от года становящиеся всё более глючными, обрастающими ненужным функционалом с катастрофически убывающей юзабилити.
И вместо трёх программистов теперь 350 вынужденных инвалидов, решающих больше проблему состоятельности методов решения проблемы, нежели саму проблему.
Я знал, что доживу до времен, когда как программист стану более не нужен на рынке, не знал только, что времена эти наступят при моей еще жизни.
А арудино… Отдельная песня. Когда показываешь или рассказываешь арудинщикам что сделано на 8-битном 20-мегагерцовом ат-тини — они сперва впадают в ступор, а потом пытаются найти на плате, на которой ничего почти нет «в чем подвох» и в конце концов спрашивают «а почему мы не можем получить те же параметры на 32-разрядном до мозга костей АВР на 0.6ГГц»… Ну и как им объяснишь, что они тупо не знают математику, ведь что бы понять тот факт, что они ее не знают, ее надо знать… ))) Замкнутый круг. Ведь для этого надо принять тот факт, что " я, сопляк, со всем своим ютубом и контактиком — безграмотный лох, и я должен принять ничтоже сумняшеся этот факт и идти на поклон к тем, кто создал мир, в котором я могу только жрать, гадить и тупить в видосы и камменты".
Поддержу товарища «Cheater». когда надо сделать элементарную реальную вещь, «внезапно» оказывается, что для решения возникающих проблем малые лезут в интернет, и ))) «о чудо» — путей решения они там не находят, находят только бесчисленные форумы и соцсети, где такие же как они неучи разной степени «квалифицированности» на полном серьезе бьются многогранностью своих заблуждений. Если случается кому из профессионалов там поприсутствовать — дай бог один из неучей спросит «что читать?». Любой человек с образованием на уровне «физика 8-го класса советской школы сдана на 4» теперь там выглядит гуру. Смех и грех. Хреново все это. Блогеры с мать их ютуберами, тьфу… Где вы были, когда мы создавали тот интернет, под который вы сейчас пишете кривой код на обиженных богом перлах и прочих холерных клонах языков для девочек.
Если разбиение достаточно грамотное, то один модуль содержит вполне линейный код, который проанализировать новому человеку не займёт много времени.
А вот рвать время в клочья — это же гарантированный ахтунг с косяками, и гит или любой другой механизм контроля версий — тут просто выполняет роль подтирки на почти гарантированный случай при попытке надрать время — случай, когда все обо… ались и виноватыми будут назначены исполнители, которые, да, начнут уходить…
Ну, к слову, линейность кода — показатель хорошо продуманной системы данных и модулей с субмодулями. А вот многоэтажные логические конструкции — показатель строго противоположного. Я запрещал раньше своим студентам и коллегам использовать табуляцию меньше 8 символов, логика простая: если твой код не влазит на экран по ширине — ты лошара.
class SomeLogTypeClass {
private:
baseClassForXYZ *context;
public:
void __cdecl SomeLogTypeClass L(baseClassForXYZ *c){
context=c;
…
}
…
void __cdecl Log(int m){
… context.UserId…
}
};
…
void __cdecl XClass::X(){
SomeLogTypeClass Log(this);
…
Log.Log(a);
…
Log.Log(b);
…
}
Как вариант, без претензий на вашу конкретику, мне она неизвестна.
И прошу пощения за инлайн, тут неудобно набирать код.
Суть в том, что бы сделать любой субмодуль проекта максимально автономным, насколько это позволяет требование многопоточности, если таковая используется.
В данном случае, перфоратором долбится только то, что в базовом классе есть UserId.
Можно даже сразу прописать в конструкторе базового класса UserId=0, что бы принимать это как знак нештатной ситуации, когда величина останется непрописанной.
Только на этапе проектирования-допроектирования вы должны взять перфоратор и добавить на бетон протокол для нового черного ящика, что бы обе девочки понимали, что могут делать любые вещи, которые не противоречат тому, что на стене.
Есть вещи, которые позволяют ослабить проектную составляющую. А проект это в первую очередь именно проект — цельная концепция, в которую любая рюшечка вписывается сама собой логично.
Когда настает момент, что новая рющечка не вписывается — необходимо перепроектирование, иначе и эта, и все последующие рюшечки автоматически становятся заплатками.
Так это и происходит… Сперва утверждается что «переписывать неделю — дорого», а потом оказывается, что наложенная за 5 минут заплатка тянет за собой убытки ещё годами. При этом на времязатраты кодирования накладываются еще бОльшие времязатраты на менеджмент. О нервах вообще молчу.
Через какое-то время из проекта расползаются ключевые фигуры и спустя 10 лет проект становится громоздким возом заплаток, который лечить уже никто не собирается ни за какие деньги — проще начать новый проект.
И вместо трёх программистов теперь 350 вынужденных инвалидов, решающих больше проблему состоятельности методов решения проблемы, нежели саму проблему.
Я знал, что доживу до времен, когда как программист стану более не нужен на рынке, не знал только, что времена эти наступят при моей еще жизни.