Здравствуйте, Sharov, Вы писали:
S>·>git reset HEAD^ S>·>ну или --amend, ну или rebase и т.п. S>Зачем это делать?
Чтобы не публиковать сломанные коммиты.
S>>>Бекап разработчик должен оставлять/делать или администратор? S>·>Разработчик, конечно. Ибо только он знает, что он такое сегодня наделал и что имеет хоть какую-то ценность. А тупо бэкапить весь диск без разбору — ЛохматыйСов уже хорошо объяснил выше чем это грозит. S>·>А ещё приватную ветку легко можно будет передать другому/на другой компьютер/етс. С бэкапами почти ничего нельзя интересного сделать. S>Если я все закоммитил и запушил, что бэкапить тогда?
Пуш — это и есть бэкап обычно. Я имел в виду, в том смысле что, не всякий пуш — бэкап, только если он делается на сервер физически расположенный в другом месте (и желательно в надёжной инфраструктуре).
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, landerhigh, Вы писали:
L>>>Нельзя. Она сторонняя. Исходников нет, но есть ее новая версия или полная ее замена, на которую нужно перейти сразу. L>·>Надо смотреть по обстоятельствам. Но даже в самом тяжелом случае — всегда можно отделить библиотеку заменяемым фасадом. L>Иногда так можно сделать. Но не всегда имеет смысл, например, низкоуровневая библиотека меняется на нечто, имеющее более человеческий интерфейс. И при этом код приводится в несобираемое состояние на довольно длительное время... особенно если происходит переход от pollig модели к асинхронным вызовам или еще чего похлеще.
Можно начать новый кусок кода рядом, потом одним махом заменить им старый.
В общем, я не пытаюсь убедить, что это просто, но вполне реально при наличии опыта и желания.
L>·>Так говорю же. Код может использовать ту же глобальную переменную, но ссылаться на неё не напрямую из кода методов, а через параметры конструкторов/методов. L>Твой код про глобальную переменную ничего не знает. Ее использует библиотека, написанная при царе горохе и никаких способов избавиться от этого глобального объекта не предоставляющая.
И чем ломание кода поможет-то?
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ·, Вы писали:
·>Можно начать новый кусок кода рядом, потом одним махом заменить им старый. ·>В общем, я не пытаюсь убедить, что это просто, но вполне реально при наличии опыта и желания.
Заменить Макароны? Новым куском кода? Одним махом? Разве что махать осьминогом.
L>>·>Так говорю же. Код может использовать ту же глобальную переменную, но ссылаться на неё не напрямую из кода методов, а через параметры конструкторов/методов. L>>Твой код про глобальную переменную ничего не знает. Ее использует библиотека, написанная при царе горохе и никаких способов избавиться от этого глобального объекта не предоставляющая. ·>И чем ломание кода поможет-то?
Выкорчевав легаси либу, можно получить возможность заменить ее на что-то удобоваримое. Но в процессе код придется, как тут выражались, сломать. И в таком состоянии он пробудет столько, сколько нужно.
Здравствуйте, playnext, Вы писали:
P>Т. е. если работаешь в нормальном режиме а не перенапрягаешся или не выдаешь креативных решений улучшений оптимизаций и т д (причем это должно явно выразиться финасово для компании) — то это уже плохо. Так и гороили — нужны подвиги.
Ну, т.е. выигрышная стратегия — тихонько создавать проблемы, а потом героически их решать.
P>Я до того как туда попал не знал что такое бывает.
Что заставляет людей оставаться в таких конторах дольше, чем требует ТК?
Здравствуйте, John1979, Вы писали:
J>при этом такой рефакторинг в огромных проектах может растянуться на месяцы, уделяться ему может 10-20% времени. J>в результате у тебя и проект не стоит на месте, и при этом конюшни помаленьку чистятся.
А теперь представь себе, что из-за ошибки (причем неочевидной ошибки, которую малой кровью не исправишь) в глобальном объекте невозможно сделать фичу, которую надо на след. неделе показать важному заказчику, который подпишет контракт на миллион, но сначала увидит эту фичу работающей. А тут ты такой, с предложением инкрементально рефакторить два месяца, уделяя этому процессу 10-20% времени.
Здравствуйте, landerhigh, Вы писали:
L>·>Можно начать новый кусок кода рядом, потом одним махом заменить им старый. L>·>В общем, я не пытаюсь убедить, что это просто, но вполне реально при наличии опыта и желания. L>Заменить Макароны? Новым куском кода? Одним махом? Разве что махать осьминогом.
А что такого? Написать новую имплементацию, внедрить, выкинуть старую. Но тут уж какие-то серьёзные изменения, не работа трёх дней.
L>>>·>Так говорю же. Код может использовать ту же глобальную переменную, но ссылаться на неё не напрямую из кода методов, а через параметры конструкторов/методов. L>>>Твой код про глобальную переменную ничего не знает. Ее использует библиотека, написанная при царе горохе и никаких способов избавиться от этого глобального объекта не предоставляющая. L>·>И чем ломание кода поможет-то? L>Выкорчевав легаси либу, можно получить возможность заменить ее на что-то удобоваримое. Но в процессе код придется, как тут выражались, сломать. И в таком состоянии он пробудет столько, сколько нужно.
Столько сколько нужно без коммитов и бекапов?! Это полный сабж.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, landerhigh, Вы писали:
L>>>P.S. Я не понял, тут вообще никто с легаси кодом не работал, что ли? J>>я рефакторил ядро фаервола написанного в C стиле в 9х годах, изначально работавшего в один поток, с кучей глобальных таблиц и переменных, к которому потом сбоку были прикручены потоки для проксирования, DPI и еще кучи мелких фиговин, с кучей мутексов и одним убер глобальным супермутексом.
L>А слабо прочитать мое сообщение еще раз? А потом еще раз. До понимания, так сказать
прочитал, что не так ? и зачем ты выделил слово 'ядро' ?
Здравствуйте, ·, Вы писали:
·>Можно начать новый кусок кода рядом, потом одним махом заменить им старый. ·>В общем, я не пытаюсь убедить, что это просто, но вполне реально при наличии опыта и желания.
но ведь проще сказать 'это невозможно', сделать умную мину и уйти изображать бурную деятельность, выдав потом на ревью кусок с 20 тысячами изменений.
Здравствуйте, Pzz, Вы писали:
Pzz>А теперь представь себе, что из-за ошибки (причем неочевидной ошибки, которую малой кровью не исправишь) в глобальном объекте невозможно сделать фичу, которую надо на след. неделе показать важному заказчику, который подпишет контракт на миллион, но сначала увидит эту фичу работающей. А тут ты такой, с предложением инкрементально рефакторить два месяца, уделяя этому процессу 10-20% времени.
в третий, если не ошибаюсь, раз повторяю — исключительные ситуации на то и исключительные. нет смысла их обсуждать. а если у тебя вся работа — исключительные ситуации, то тут одно из двух, но скорее первое.
Здравствуйте, Pzz, Вы писали:
Pzz>Существует класс задач, которые не решаются этими вашими методами из книжки. Такие задачи попадаются не каждый день, но иногда попадаются. Если вы держитесь за книжку, как за священное писание, от которого нельзя отступать, то наткнувшись случайно на такую задачу, вы ее не решите, и даже не поймете, почему. Этим мальчик отличается от мужа.
Просто опыта маловато, научитесь со временем при должном старании.
Здравствуйте, ·, Вы писали:
L>>Заменить Макароны? Новым куском кода? Одним махом? Разве что махать осьминогом. ·>А что такого? Написать новую имплементацию, внедрить, выкинуть старую. Но тут уж какие-то серьёзные изменения, не работа трёх дней.
А вот тут кое-кто выше по ветке слова вроде "профнепригоден" использовал.
L>>·>И чем ломание кода поможет-то? L>>Выкорчевав легаси либу, можно получить возможность заменить ее на что-то удобоваримое. Но в процессе код придется, как тут выражались, сломать. И в таком состоянии он пробудет столько, сколько нужно. ·>Столько сколько нужно без коммитов и бекапов?! Это полный сабж.
А причем тут коммиты и бекапы? Тут народ бил себя пятков в грудь, что они все, что угодно, за день рефакторят.
P.S. Это если на секунду забыть, что никакой "новой имплементации" нет. Меняется в перую очередь API либы, а вместе с ней и клиентский код.
Здравствуйте, GarryIV, Вы писали:
Pzz>>Существует класс задач, которые не решаются этими вашими методами из книжки. Такие задачи попадаются не каждый день, но иногда попадаются. Если вы держитесь за книжку, как за священное писание, от которого нельзя отступать, то наткнувшись случайно на такую задачу, вы ее не решите, и даже не поймете, почему. Этим мальчик отличается от мужа.
GIV>Просто опыта маловато, научитесь со временем при должном старании.
Здравствуйте, landerhigh, Вы писали:
L>>>Заменить Макароны? Новым куском кода? Одним махом? Разве что махать осьминогом. L>·>А что такого? Написать новую имплементацию, внедрить, выкинуть старую. Но тут уж какие-то серьёзные изменения, не работа трёх дней. L>А вот тут кое-кто выше по ветке слова вроде "профнепригоден" использовал.
Я уже перестал следить и понимать какую конкретно задачу ты пытаешься решить, тебя всё что-то туда-сюда колбасит: то глобальная переменная, то либа, то вторая либа, то макароны, то переписывание на асинхронность. А ты, видимо, ждёшь что я обломаюсь универсальный рецепт решения всех проблем выдать.
L>>>·>И чем ломание кода поможет-то? L>>>Выкорчевав легаси либу, можно получить возможность заменить ее на что-то удобоваримое. Но в процессе код придется, как тут выражались, сломать. И в таком состоянии он пробудет столько, сколько нужно. L>·>Столько сколько нужно без коммитов и бекапов?! Это полный сабж. L>А причем тут коммиты и бекапы?
У топикстатрера было.
L>Тут народ бил себя пятков в грудь, что они все, что угодно, за день рефакторят.
Не знаю кто. Цитаты плиз. Наоборот было "растянуться на месяцы, уделяться ему [рефакторингу] может 10-20% времени".
L>P.S. Это если на секунду забыть, что никакой "новой имплементации" нет. Меняется в перую очередь API либы, а вместе с ней и клиентский код.
Новую имплементацию надо написать поверх новой либы, не ломая старую имплеметацию.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ·, Вы писали:
L>>А вот тут кое-кто выше по ветке слова вроде "профнепригоден" использовал. ·>Я уже перестал следить и понимать какую конкретно задачу ты пытаешься решить, тебя всё что-то туда-сюда колбасит: то глобальная переменная, то либа, то вторая либа, то макароны, то переписывание на асинхронность.
Это все та же задача. Есть код, который использовал древнюю, как говно мамонта, либу со своим чудовищным апи. Переписывание откладывали до упора, но все, приехали. Надо решать проблему, но это ни разу не на пару дней задача.
·>А ты, видимо, ждёшь что я обломаюсь универсальный рецепт решения всех проблем выдать.
А ты как думал?
L>>Тут народ бил себя пятков в грудь, что они все, что угодно, за день рефакторят. ·>Не знаю кто. Цитаты плиз. Наоборот было "растянуться на месяцы, уделяться ему [рефакторингу] может 10-20% времени".
Это деццкий рефакторинг. Подчищание багов, убирание зависимостей и наведение красивостей.
L>>P.S. Это если на секунду забыть, что никакой "новой имплементации" нет. Меняется в перую очередь API либы, а вместе с ней и клиентский код. ·>Новую имплементацию надо написать поверх новой либы, не ломая старую имплеметацию.
Здравствуйте, landerhigh, Вы писали:
L>·>Я уже перестал следить и понимать какую конкретно задачу ты пытаешься решить, тебя всё что-то туда-сюда колбасит: то глобальная переменная, то либа, то вторая либа, то макароны, то переписывание на асинхронность. L>Это все та же задача. Есть код, который использовал древнюю, как говно мамонта, либу со своим чудовищным апи. Переписывание откладывали до упора, но все, приехали. Надо решать проблему, но это ни разу не на пару дней задача.
Так сколько дней? Неделя, как в начале топика и с тем же результатом?
Зачем ломать существующий код? Почему нельзя написать новый рядом?
L>·>А ты, видимо, ждёшь что я обломаюсь универсальный рецепт решения всех проблем выдать. L>А ты как думал?
Что тебе интереснее научиться чему-то новому, а не доказать что ты всегда прав.
L>>>Тут народ бил себя пятков в грудь, что они все, что угодно, за день рефакторят. L>·>Не знаю кто. Цитаты плиз. Наоборот было "растянуться на месяцы, уделяться ему [рефакторингу] может 10-20% времени". L>Это деццкий рефакторинг. Подчищание багов, убирание зависимостей и наведение красивостей.
Чем больше опыта, тем больше рефакторингов — деццкие.
L>>>P.S. Это если на секунду забыть, что никакой "новой имплементации" нет. Меняется в перую очередь API либы, а вместе с ней и клиентский код. L>·>Новую имплементацию надо написать поверх новой либы, не ломая старую имплеметацию. L>Иногда это абсолютно бессмысленно.
При наличии должного опыта это если и занимает больше времени, то незначительно, но даёт более стабильный результат.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, Pzz, Вы писали:
Pzz>Здравствуйте, playnext, Вы писали:
P>>Т. е. если работаешь в нормальном режиме а не перенапрягаешся или не выдаешь креативных решений улучшений оптимизаций и т д (причем это должно явно выразиться финасово для компании) — то это уже плохо. Так и гороили — нужны подвиги.
Pzz>Ну, т.е. выигрышная стратегия — тихонько создавать проблемы, а потом героически их решать.
Проблемы тоже создавать надо уметь.
P>>Я до того как туда попал не знал что такое бывает.
Pzz>Что заставляет людей оставаться в таких конторах дольше, чем требует ТК?
Не знаю честно о всех. Я там проработал около года. Была ипотека и кризис в 2009 году. Сложно было работу найти с нормальной зарплатой. Я там был на позиции Team Lead, платили приемлемо.
Здравствуйте, ·, Вы писали:
L>>Это все та же задача. Есть код, который использовал древнюю, как говно мамонта, либу со своим чудовищным апи. Переписывание откладывали до упора, но все, приехали. Надо решать проблему, но это ни разу не на пару дней задача. ·>Так сколько дней? Неделя, как в начале топика и с тем же результатом?
Неважно сколько. Важно, что это ни разу не пара дней, и в эти ни разу не пару дней в твоей конкретной ветке проект если и собирается, то не работает.
·>Зачем ломать существующий код? Почему нельзя написать новый рядом?
А почему бы тогда вообще все не переписать с нуля?