avva: (Default)
avva ([personal profile] avva) wrote2009-04-20 10:00 am

ссылки для программистов

Эта запись будет интересна только программистам.

1. (специально для веб-разработчиков) Прекрасная чашка:



2. Отличная подборка на stackoverflow: What is the best comment in source code you have ever encountered?.

Много хорошего (см. также комментарии на реддит). Отмечу такие шедевры, как

1. try {

} finally { // should never happen

}

2. return 1; # returns 1

3. // I'm sorry.

4. вот этот

[identity profile] arno1251.livejournal.com 2009-04-20 07:10 am (UTC)(link)
Бесткомменты жгут :)

[identity profile] mochalkina.livejournal.com 2009-04-20 10:59 am (UTC)(link)
о да. ;-)

Из своего опыта - в одной программе у меня образовался примерно следующий коммент:

// this line was changed on 23.03.2002.
// ... but what for? I don't remember. 30.09.2005

[identity profile] arno1251.livejournal.com 2009-04-20 11:00 am (UTC)(link)
Прелестно :)

[identity profile] javax-slr.livejournal.com 2009-04-20 07:13 am (UTC)(link)
Когда мы делали проект на ассемблере (ун. Бен Гурион, 1996), мы не успели написать комментарии, что могло сильно повлиять на оценку.

Тогда мы написали программку на Паскале, которая писала комментарии сама.
если видела ADD, добавляла ;ADDING
если видела MOVE, писала ;MOVING

и т.д.

Мы получили 100

[identity profile] avva.livejournal.com 2009-04-20 07:14 am (UTC)(link)
отличная история :)
Edited 2009-04-20 07:15 (UTC)

[identity profile] vladimirgin.livejournal.com 2009-04-20 07:48 am (UTC)(link)
Кстати, о комментах. Буквально на днях задумался над этим (ибо надо было дебаггировать очередной чужой код) и вдруг понял, что на моей текущей фирме ПРАКТИЧЕСКИ НИКТО не пишет их (кроме меня). На прошлой фирме писали максимум процентов 20% народа. И это меня угнетает - неужели это я такой тупой, что мне необходимо писать комментарии хотя бы для того, чтобы не было проблемой разобраться в собственном коде через полгода?..

Так что интересно - а как у вас, принятно писать их

[identity profile] javax-slr.livejournal.com 2009-04-20 07:50 am (UTC)(link)
Код должен быть понятен без комментов.

Пишем много javadoc - заголовки методов и классов, чтобы объяснить что метод делает, когда и что возвращает.

Внутри кода у нас почти нет комментов

[identity profile] vladimirgin.livejournal.com 2009-04-20 08:00 am (UTC)(link)
Ну, я не пишу на java, поэтому javadoc не актуально. Насчет "Код должен быть понятен без комментов" в принципе соглашусь, если это не подразумевает, что надо отказаться от комментов как класса. Зачастую они необходимы. Хотя бы для того, чтобы дать понять, как именно этот кусок кода связан с предметной областью.

[identity profile] javax-slr.livejournal.com 2009-04-20 08:04 am (UTC)(link)
Комменты для public API
Комменты для сложных алгоритмов и вычислений
Комменты в условиях
if (parent == null) { // happens for empty data sets

В других местах если хорошие имена переменных и методов - редко нужно

[identity profile] vladimirgin.livejournal.com 2009-04-20 08:10 am (UTC)(link)
К этому нет вопросов, примерно такую же policy и я применяю.

[identity profile] dimrub.livejournal.com 2009-04-20 11:10 am (UTC)(link)
> Ну, я не пишу на java, поэтому javadoc не актуально.

RTFM: Doxygen.

[identity profile] megla.livejournal.com 2009-04-20 01:48 pm (UTC)(link)
eto i est komentarii :)
alon_68: (Default)

[personal profile] alon_68 2009-04-20 08:24 am (UTC)(link)
Вы не тупой.
Вы зануда :)
spamsink: (Default)

[personal profile] spamsink 2009-04-20 07:29 am (UTC)(link)
Что-то с нумерацией: после пункта 2. снова пункт 1. :)

[identity profile] avva.livejournal.com 2009-04-20 07:31 am (UTC)(link)
вложенный список :)
spamsink: (Default)

[personal profile] spamsink 2009-04-20 07:44 am (UTC)(link)
Ты знаешь, что в Алголе нельзя было писать if condition1 then if condition2 then ... else... ? Так же и тут - неоднозначность вложенности пунктов 3. и 4.
vinsent_ru: (Default)

[personal profile] vinsent_ru 2009-04-20 07:32 am (UTC)(link)
options.BatchSize = 300; //Madness? THIS IS SPARTA!

Ухахаха :))
vinsent_ru: (Default)

[personal profile] vinsent_ru 2009-04-20 07:34 am (UTC)(link)
long long ago; /* in a galaxy far far away */

Гыыыы :)) Парвало

[identity profile] vladimirgin.livejournal.com 2009-04-20 07:42 am (UTC)(link)
Разбирал один код, и мне понравился там один кусочек , точнее, наименование объекта в нем. Было это примерно так:
try
{
...
}
catch ( Exception HoustonWeHaveAProblem )
{
writeLog( HoustonWeHaveAProblem.ToString() );
}

[identity profile] utnapishti.livejournal.com 2009-04-20 07:43 am (UTC)(link)
Помнится, один наш общий знакомый рассказывал, как он (в институте, ещё в России) дал одной девушке скопировать программу - домашнее задание, и её на этом поймали, так как она не стёрла комментарий "Я - конь-огонь".

[identity profile] reut.livejournal.com 2009-04-20 08:13 am (UTC)(link)
ааааа, класс! спасибо. :)

[identity profile] yms.livejournal.com 2009-04-20 08:16 am (UTC)(link)
насчет комментов - там высказана очень здравая идея по поводу google codesearch. адаптирую её:
http://www.google.com/codesearch?q=%D0%BF%D0%B8%D0%B7%D0%B4%D0%B5%D1%86

[identity profile] cema.livejournal.com 2009-04-20 09:08 am (UTC)(link)
Хм, пожалуй.

[identity profile] savvich.livejournal.com 2009-04-20 08:41 am (UTC)(link)
Exception up = new Exception("Something is really wrong.");
throw up; //ha ha

Ха ха ха
alon_68: (Default)

[personal profile] alon_68 2009-04-20 08:51 am (UTC)(link)
О, какой класс! :)))
Немало вполне знакомых ситуаций :)

[identity profile] cema.livejournal.com 2009-04-20 09:05 am (UTC)(link)
Чашка правильная.

[identity profile] mikev.livejournal.com 2009-04-20 09:16 am (UTC)(link)
А что сейчас вместо CSS полагается использовать?

[identity profile] cema.livejournal.com 2009-04-20 10:34 am (UTC)(link)
Сейчас полагается его использовать с умом. Впрочем, см. пункты про комментарии.

[identity profile] putj.livejournal.com 2009-04-20 10:28 am (UTC)(link)
Кружка хороша.)

[identity profile] dimrub.livejournal.com 2009-04-20 11:08 am (UTC)(link)
Мне очень понравилась чашка, которую я видел у Вагифа:

Cup<T>

Я серьезно подумываю такую себе заказать. Но твоя тоже хороша для тех, кто много с веб-дизайном трахается.

[identity profile] shure.livejournal.com 2009-04-20 01:38 pm (UTC)(link)
const long* getPtr() {
return &*m_vect.begin(); /* sorry, stepanov */
}

[identity profile] flaass.livejournal.com 2009-04-20 05:09 pm (UTC)(link)
> /* You are not meant to understand this */
Однажды я стал виновником почти такого же комментария.
Делали генерацию переходов. Проблема была, что длина команды JMP зависит от длины прыжка, которая в том числе зависит от длин команд JMP. Я сочинил что-то и диктовал (на русском), а друзья-программеры синхронно переводили на Модулу.
Перевод заработал, но после его прочтения они добавили комментарий: "DONT change anything! Flaass knows why it works"

[identity profile] ygam.livejournal.com 2009-04-20 05:16 pm (UTC)(link)
Я несколько лет назад учил юного индийца программистскому уму-разуму на примере такого нарочито бесполезного комментария:

k++; // Increment k.

[identity profile] alex-inside.livejournal.com 2009-04-20 05:45 pm (UTC)(link)
АААА. Я в осадок выпал от чашки!!!

[identity profile] olegstepanov.livejournal.com 2009-04-22 05:53 am (UTC)(link)
http://msmvps.com/blogs/brianmadsen/archive/2009/04/21/funniest-code-comment-ever.aspx