LINUX.ORG.RU
решено ФорумTalks

[devel] Ужас-Из-Глубин в исходниках: как быстро прийти в себя?


0

1

Случается так, что я открываю код и вижу там если не дитя Шелоб и Барлога, то, по крайней мере, кого-то из них. Разум предыдущего разработчика (это, впрочем, мог быть и я) в этом месте не просто уснул, но забылся тяжелым пьяным бредом, весь обрыгался и мерзко храпел.

В хитросплетении из всех имеющихся в языке конструкций, кунштюков и паттернов проглядывает реализация вроде бы простой идеи, суть которой, однако, никак не удается ухватить.

И вот в этом во всем надо если не разобраться, то, по крайней мере, быстро что-то поменять, чтобы получился результат.

Мозг от этого взрывается (примерно как от приведенного выше текста), и я убираю код с глаз долой, отхлебываю чаек и иду читать любимый ЛОР. Тут, по крайней мере, нет таких ужасов.

Собственно, вопрос: как быстро восстанавиться из такого состояния до работоспособного? Может, есть какие-то наработанные методики, кроме проджект менеджера с плеткой и наручниками?

★★★★

Последнее исправление: lodin (всего исправлений: 1)

>кроме ПМа с плеткой и наручниками
Долго пытался понять, как сочетается пистолет Макарова с плёткой, но так и не смог.

Ramen ★★★★
()

Если ты не можешь контролировать мозги, поцелуй сникерс в пачкусходи к психологу

minakov ★★★★★
()
Ответ на: комментарий от Ramen

ПМ = проджект менеджер, а не пистолет. Исправил.

lodin ★★★★
() автор топика

Может, есть какие-то наработанные методики

Не нравится код? Убей и напиши новый, хороший.

КО.

zgen ★★★★★
()
Ответ на: комментарий от zgen

>Не нравится код? Убей и напиши новый, хороший.
Если принять за аксиому, что программист постоянно развивается и прогрессирует, то с таким подходом его работа превратится целиком и полностью в постоянное переписывание старого кода.

Ramen ★★★★
()

Сауна, девушки и (о ужас) алкоголь, не?

Или болельщиком на спорт. соревнование (мозги прочищает). Можно также попробовать езду с превышением скорости.

adepto
()
Ответ на: комментарий от adepto

В долговременной перспективе все нормально как раз. И да, танцы, лыжи/велик, песни под гитару...

Интересуют первые 10 минут после «ох ты ж ешь ты ж хто ж такое написал?!».

lodin ★★★★
() автор топика

> реализация вроде бы простой идеи, суть которой, однако, никак не удается ухватить

Пройтись гуевым дебаггером по основным веткам кода?

Bad_Habit
()
Ответ на: комментарий от adepto

>и (о ужас) алкоголь

что бы он еще такого бреда понаписал, да?

derlafff ★★★★★
()

У меня такая реакция в основном на собственный быдлокод несколькомесячной давности.

Cancellor ★★★★☆
()

Да нормально все у тебя. А так, ты слишком все близко воспринимаешь. Разобрал код, сделал то, что нужно и чувствуешь, что жизнь прекрасна :) А если ты нифига не сделал, то конечно, у тебя лишь негативные мысли.
Терпение и труд все перетрут (с) народная поговорка

gh0stwizard ★★★★★
()

> Мозг от этого взрывается (примерно как от приведенного выше текста), и я убираю код с глаз долой, отхлебываю чаек и иду читать любимый ЛОР. Тут, по крайней мере, нет таких ужасов.

ты просто ленишься. Надо воспринимать код как загадки, которые надо разгадать. Тогда - чем заковыристее, тем интереснее..

gods-little-toy ★★★
()
Ответ на: комментарий от Cancellor

> У меня такая реакция в основном на собственный быдлокод несколькомесячной давности.

Аналогично.

Помогает совет выше: погонять этот участок в дебаггере с разными входными данными. Даже необязательно проходить пошагово, хватает понаставить брейкпойнтов.

question4 ★★★★★
()
Ответ на: комментарий от lodin

>Интересуют первые 10 минут после «ох ты ж ешь ты ж хто ж такое написал?!».

Переключиться на что-нибудь, лучше не связанное с компьютером.

На рыбок, например :)

adepto
()
Ответ на: комментарий от Ramen

то с таким подходом его работа превратится целиком и полностью в постоянное переписывание старого кода.

Можно не переписывать, а просто написать новый, другой, в чем проблема?

Работа программиста в этом и заключается, чтобы писать код. У повара, например - суп варить, если его суп не жрут, он делает другой или становится безработным. И не жалуется, во что его работа превращается с таким подходом.

zgen ★★★★★
()
Ответ на: комментарий от zgen

>У повара, например - суп варить, если его суп не жрут, он делает другой или становится безработным. И не жалуется, во что его работа превращается с таким подходом.
Если повар будет постоянно выливать суп в раковину и варить новый потому, что переложил соли на 1 миллиграмм, то он тоже останется без работы.

Ramen ★★★★
()
Ответ на: комментарий от gods-little-toy

> Надо воспринимать код как загадки, которые надо разгадать. Тогда - чем заковыристее, тем интереснее..

Точно. Как challenge. :-) А еще ТС не нужно особо льстить себе, что будто лучше сделает. Или тогда нужно не вомущатся и чаек пить, а сесть и сделать как надо, показать всем (и себе тоже) _как_ нужно работать.

smh ★★★
()
Ответ на: комментарий от Ramen

Вы правы, однако речь явно не про 1мг соли:
«Случается так, что я открываю код и вижу там если не дитя Шелоб и Барлога, то, по крайней мере, кого-то из них.»

Следовательно у повара получилось нечто, что вроде можно есть, но на суп оно не похоже никак. Вывод? Либо жрать, что дают, либо варить новый, такой, какой хочется.

zgen ★★★★★
()
Ответ на: комментарий от zgen

> Вывод? Либо жрать, что дают, либо варить новый, такой, какой хочется

Финансовые затраты на варку супа практически нулевые. Затраты на переписывание кода много больше.

fang
()
Ответ на: комментарий от fang

Либо жрать, что дают, либо варить новый, такой, какой хочется

zgen ★★★★★
()
Ответ на: комментарий от smh

>А еще ТС не нужно особо льстить себе, что будто лучше сделает.

О. Спасибо за напоминание %)

lodin ★★★★
() автор топика

1) Разделяй и властвуй, обычно мелкий кусок говнокода имеет некий смысл и его проще ухватить чем у большого

2) Документируй этот чужой говнокод на уровне функций и глобальных переменных

3) Рисуй картинки, строй гипотезы - на более высоком, чем код уровне - как оно функционирует. Вход, выход алгоритма, преобразования, которые в нем предположительно выполняются. Зацепками могут служить вызовы внешних функций (например, exec(«taskkill %d») какой-нибудь явно указывает на убийство процесса)

4) Никогда не занимался reverse engineering? Тут та же самая задача стоит. Может какие-то еще общие принципы RE пригодятся и здесь.

amomymous ★★★
()
Ответ на: комментарий от minakov

Нажраться!

>сходи к психологу

Вот этого точно не советую.

Провести время в компании с барышнями, которые дают.

Deleted
()

Какие впечатлительные программисты пошли.

GotF ★★★★★
()

Глицин упарывай.

Yareg ★★★
()

Погоняй в какой-нить Дум. Когда на тебя стопицот раз из-за угла выскочит ВНЕЗАПНО страшный ужасный монстр, ты к этому привыкнешь :) Может быть...

Xenesz ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.