Записки реликта - Будни быдлокодера: // FIXME: WTF?!! [entries|archive|friends|userinfo]
Latimeria chalumnae

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

Будни быдлокодера: // FIXME: WTF?!! [Oct. 21st, 2008|03:29 am]
Previous Entry Add to Memories Tell A Friend Next Entry
[Tags|, , , , , , ]

Широко известно, что в каждом достаточно сложном проекте есть комментарий типа "Я не знаю, что это, но без него не работает". Сегодня подумалось, что квалификацию программиста, помимо всего прочего, можно оценивать по тому, какой код становится для него достаточно сложным в этом смысле.

Это я к чему. Я напрочь потерялся в собственном проекте в 470 (прописью: четыреста семьдесят) строк на C++. Что самое обидное — оно почти работает. По крайней мере, работающих кусков там больше, чем тех, про которые я понимаю, что они делают.

NB: если программа начинает работать после изменений, смысл которых ты не понимаешь до конца (в моём случае это break и continue с довольно замысловатыми условиями; не спрашивайте меня, как такое появилось без моего сознательного участия), отмени их и забудь как страшный сон. Чтобы не уподобиться автору этих строк, ага.
LinkОставить комментарий

Comments:
From:[info]phantom
Date:October 21st, 2008 - 11:18 am
(Link)
Это от языка сильно зависит в том числе. Например, у меня на одном (своём) проекте в 5-10 тысяч строк был только один такой комментарий.

>"Я не знаю, что это, но без него не работает"

У такого комментария есть специальное название: kludge.

klu(d)ge 1) клудж (устройство, программа или часть программы, которые теоретически не должны работать, но почему-то работают) || делать клудж (в программе) , вставлять клудж (в программу)
[User Picture]
From:[info]uri
Date:October 21st, 2008 - 11:05 pm
(Link)
О, термин не знал. Спасибо.
[User Picture]
From:[info]uri
Date:October 21st, 2008 - 11:07 pm
(Link)
А на язык мне сваливать смешно: у C++ много недостатков, но уж невозможность писать поддерживаемые проекты на десятки и сотни тысяч строк кода к ним явно не относится. К тому же это ещё и Qt, которая многие родовые уродства C++ умеет успешно скрывать.
From:[info]phantom
Date:October 21st, 2008 - 11:17 pm
(Link)
Наводящий вопрос: какими RAD языками (и прилагающимися к ним инструментами) ты пользовался более, чем полугода? Пользовался ли ты рефакторингом? Понимаешь ли, что С++ абсолютно непригоден для рефакторинга?
[User Picture]
From:[info]yushi
Date:October 21st, 2008 - 11:57 pm
(Link)
Наводящий вопрос: какими RAD языками (и прилагающимися к ним инструментами) ты пользовался более, чем полугода?

Я, честно говоря, вообще никогда в жизни не пользовался всерьёз никакими RAD-инструментами. Идея рисовать интерфейс (и тем более не только интерфейс, как в Delphi) мышкой вместо написания кода меня пугает, у меня голова не работает в этом направлении. Вообще.

Пользовался ли ты рефакторингом?

Да, если я правильно понимаю, что такое рефакторинг (Фаулера не читал, собираюсь).

Понимаешь ли, что С++ абсолютно непригоден для рефакторинга?

Почему? Что из этого списка в нём нереализуемо?
From:[info]phantom
Date:October 22nd, 2008 - 12:16 am
(Link)
Правильно задавать вопрос, не что нереализуемо, а что на данный момент реализовано для С++ и почему для других из семейства (java, c#) реализовано гораздо больше. Список на википедии куцый там.

Вообще, эта дискуссия велась эн лет назад на rsdn.ru - мне не хотелось бы здесь тратить время на обсуждение этих вопросов или тем более споры.
[User Picture]
From:[info]uri
Date:October 22nd, 2008 - 01:41 am
(Link)
Правильно задавать вопрос, не что нереализуемо, а что на данный момент реализовано для С++

В смысле "реализовано"? Реализованы инструменты для того, чтобы делать это автоматически? Ну так это понятно, язык большой и бардачный, не в пример Java и C#, и неоднозначностей там дофига.

Но ведь для рефакторинга автоматизация необязательна, его можно делать и ручками в текстовом редакторе, нет?

Вообще, эта дискуссия велась эн лет назад на rsdn.ru - мне не хотелось бы здесь тратить время на обсуждение этих вопросов или тем более споры.

Спорить и я не хочу. Дискуссию поищу, спасибо.
From:[info]phantom
Date:October 22nd, 2008 - 12:18 am
(Link)
Рекомендую, однако, регулярно тратить какое-то время (вместо обычного кодинга) на изучение языков и т.п. Как миниум, это расширяет кругозор. Как максимум, позволяет прогрессировать как программисту.
[User Picture]
From:[info]uri
Date:October 22nd, 2008 - 01:45 am
(Link)
Ну, это ясно. Я время от времени экспериментирую с Erlang и Scheme, сейчас вот собираюсь с силами для очередной попытки изучения Haskell.