Re: Запись if с несколькими || или &&
От: alexeiz  
Дата: 24.04.08 18:40
Оценка: +5 :))) :))) :))) :))) :)
Здравствуйте, igna, Вы писали:

I>
I>if (false
I>    || condition1
I>    || condition2
I>    || condition3
I>    || condition4
I>    || condition5
I>)

I>if (true
I>    && conditionA
I>    && conditionB
I>    && conditionC
I>    && conditionD
I>)
I>


I>Если записывать условие так, добавление или удаление одного подусловия показывается системой управления версиями как добавление или удаление одной строки независимо от того, добавляется или удаляется это подусловие в начале, в конце или в середине списка подусловий.


I>P.S. Если эта или похожая рекомендация дается где-нибудь в приличном месте (все-равно на бумаге или в интернете) дайте пожалуйста ссылку.


Это для того, чтобы, типа, стать самым лучшим другом системы контроля версий?

Могу дать еще один совет. Записывай функции вот так:
public
static
int
foo( int dummy  // не используется
   , char param1
   , double param2
   , int param3
   )
{
}

int bar = foo( 0
             , 'a'
             , 1.1
             , 2
             );

Тогда добавление/удаление параметров (param1...paramN) будет выглядеть, как добавление/удаление одной строки. И замена возвращаемого значения будет выглядеть, как добавление/удаление одной строки. Вот только непонятно, зачем это тебе нужно.
Re[7]: Запись if с несколькими || или &&
От: CreatorCray  
Дата: 25.04.08 14:29
Оценка: 2 (1) +1 :))) :))) :)))
Здравствуйте, igna, Вы писали:

CC>>Да замените себе diff утилиту на ту, которая будет подсвечивать не только измененные строки но и что именно в строках изменилось.

I>На какую?
Да тот же Araxis
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[7]: Запись if с несколькими || или &&
От: minorlogic Украина  
Дата: 25.04.08 14:28
Оценка: 2 (1) +1 :))) :)))
Araxis Merge ?
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[7]: Запись if с несколькими || или &&
От: Left2 Украина  
Дата: 25.04.08 14:27
Оценка: 2 (1) +2 :)))
CC>>Да замените себе diff утилиту на ту, которая будет подсвечивать не только измененные строки но и что именно в строках изменилось.
I>На какую?

Araxis Merge?
... << RSDN@Home 1.2.0 alpha rev. 717>>
Re: Запись if с несколькими || или &&
От: Erop Россия  
Дата: 25.04.08 00:22
Оценка: 1 (1) +2 :)))
Здравствуйте, igna, Вы писали:

I>P.S. Если эта или похожая рекомендация дается где-нибудь в приличном месте (все-равно на бумаге или в интернете) дайте пожалуйста ссылку.


А я вот, например, запрещаю подчинённым тратить время на оформление кода при помощи "красивостей форматирования". Толкьо отступы и всё.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[6]: Альтернатива
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 26.04.08 09:02
Оценка: +6
Здравствуйте, igna, Вы писали:

I>Здравствуйте, Erop, Вы писали:


E>>Всё-таки альтернатива с str_find_one_of намного милее моему сердцу. Тем более, что обычно функцию str_find_one_of реализовывать не надо, а можжно воспользоваться каким -нибудь стандартным средством поиска в списке...


I>Ты лучше нарисуй. Эту милую сердцу альтернативу моему:


I>
I>if (false
I>    || s == "Беларусь"
I>    || s == "Великобритания"
I>    || s == "Германия"
I>    || s == "Россия"
I>    || s == "Украина"
I>    || s == "Франция"
I>)
I>


Зачем козе баян? При нормальном проектировании эти списки никто не хранит напрямую в коде, они подгружаются из ресурсных конфигов.
А то, что Вы нарисовали — временная затычка до переписывания в нормальный режим (тогда пофиг, как она будет выглядеть те 1-2 изменения которые проживёт).
The God is real, unless declared integer.
Re[6]: Запись if с несколькими || или &&
От: Alex Alexandrov США  
Дата: 26.04.08 20:21
Оценка: +5 -1
Здравствуйте, Erop, Вы писали:

E>А можно и так:

E>
const char* str_find_one_of( const char* str, const char *const* patterns, int patterns_count )
E>}


Легкий офф-топик: имена типа patterns_count с множественным числом существительного, стоящего перед другим существительным, с головой выдают интерфейсы написанные людьми, для которых английский — не родной. И как правило — русскими. Очень для нас это ненатурально, но тем не менее — правильно будет pattern_count. Аналогично: getNodeCount (не getNodesCount), getModuleArray (не getModulesArray) и т.п.
It's kind of fun to do the impossible (Walt Disney)
Re[2]: Запись if с несколькими || или &&
От: Сергей Туленцев Россия http://software.tulentsev.com
Дата: 25.04.08 05:02
Оценка: +5
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, igna, Вы писали:


I>>P.S. Если эта или похожая рекомендация дается где-нибудь в приличном месте (все-равно на бумаге или в интернете) дайте пожалуйста ссылку.


E>А я вот, например, запрещаю подчинённым тратить время на оформление кода при помощи "красивостей форматирования". Толкьо отступы и всё.


Суров, батенька, суров.
Полсотней индусо-китайцев командуешь поди? Им что, они усидчивые, могут весь день код педалить без передыху.
... << RSDN@Home 1.2.0 alpha 4 rev. 1084>>
--
Re[7]: Обидны мне слова ваши, дяденька...
От: Alex Alexandrov США  
Дата: 27.04.08 18:14
Оценка: +5
Здравствуйте, rsn81, Вы писали:

R>Здравствуйте, Erop, Вы писали:


E>>В смысле? Если програмист изобразит что-то типа того, что обсуждается в этой ветке, то как автоформат текста мне поможет?

E>>Я уж не говорю о том, что часто читаю код подчинённых не в IDE...
R>Речь о том, что вместо того, чтобы инспектировать код подчиненных на наличие нестандартного стиля форматирования, можно просто контролировать использование единой настройки автоформатирования, которую также хранить в системе контроля версий.

Хм, то есть вместо того, чтобы простым текстом описать требования к форматирования, мы вводим требования к тому, какую IDE использует человек. Типа, демократия по-майкрософтовски? В сад. Я весь код в Vim пишу, кто-то у нас в команде Emacs использует, кто-то в редакторе Фара все пишет. Следовать правилам форматирования я нахожу весьма разумным, пересаживать всех на одну ИДЕ — нет. Настройки форматирования IDE могут быть дополнением к описанным правилом, но уж никак не заменой.
It's kind of fun to do the impossible (Walt Disney)
Re[10]: Запись if с несколькими || или &&
От: CiViLiS Россия  
Дата: 26.04.08 10:24
Оценка: 10 (1) :)))
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, CreatorCray, Вы писали:


RO>>>В фильме «Карты, деньги и два ствола» подробно рассказывалось, на какую именно.

CC>>Эээ... Это такая тонкая шутка юмора?
E>Я, кстати, её не понял
Это чиста кывтовская шутка: Афера
Автор: kan_izh
Дата: 01.06.06
(читать все ответы на первоначальное сообщение
... << RSDN@Home 1.2.0 alpha 4 rev. 1058>>
"Бог не терпит голой сингулярности" -- Роджер Пенроуз
Re[6]: Запись if с несколькими || или &&
От: Erop Россия  
Дата: 25.04.08 17:24
Оценка: +2 :))
Здравствуйте, igna, Вы писали:

I>Ну-ну. А долго ломал бы?

Ну я вот уже с 24.04 18:43 понять не могу зачем тебе это надо
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Запись if с несколькими || или &&
От: igna Россия  
Дата: 24.04.08 14:43
Оценка: 5 (2) +1
if (false
    || condition1
    || condition2
    || condition3
    || condition4
    || condition5
)

if (true
    && conditionA
    && conditionB
    && conditionC
    && conditionD
)


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

P.S. Если эта или похожая рекомендация дается где-нибудь в приличном месте (все-равно на бумаге или в интернете) дайте пожалуйста ссылку.
Re[3]: Запись if с несколькими || или &&
От: Erop Россия  
Дата: 25.04.08 15:08
Оценка: 1 (1) +2
Здравствуйте, igna, Вы писали:

I>Tortoise 1.3.2 показывает измененной всю строку, если в ней хоть что-то изменилось. Чтобы увидеть, что именно, нужно "перейти" на эту строку и посмотреть внизу.


Мне кажется, что в нормальной программе всё-таки любое изменение условия в if -- это таки изменение всего оператора!

Для того, чтобы понять тчо там делается не кисло бы ещё и тело посмотреть вообще-то.

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

Я бы постарался что-то придумать чтобы избежать такую ситуацию, а не чтобы облегчить жизнь любителям в неё попадать
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re: Запись if с несколькими || или &&
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 26.04.08 06:28
Оценка: 1 (1) +2
Здравствуйте, igna, Вы писали:

I>
I>if (false
I>    || condition1
I>    || condition2
I>    || condition3
I>    || condition4
I>    || condition5
I>)


Прочитал тред и понял, что должен присоединиться к тем, кто недоумевает относительно смысла данной реформы.

У меня нет никаких таких новомодных диффовалок, я работаю только под Unix и пользуюсь стандартным diff'ом имени Larry Wall, предком всех диффовалок, и только в unified context режиме. (Это тот, при котором перед строками плюсы и минусы.) Причём обычно даже без цвета. Действительно, иногда бывают ситуации, когда удобно увидеть целиком изменённую, добавленную или удалённую строку или группу строк — они логически группируются. Но, во-первых, для большинства случаев хватает обычного разделения на строки согласно самому стандартному стилю, применяемому ко всем языкам программирования, от алгола и бейсика до ML и лиспа. Во-вторых, когда смотришь дифф — надо всё равно проверять контекст, то есть посмотреть на показанные соседние неменяющиеся строки (и это не зависит от того, какое средство и в каком формате его показывает). Значит, в них надо смотреть и от этого построчное форматирование не избавит.

Далее, ситуации с таким простым и прямолинейным if, мне кажется, встречаются крайне редко. Значительно более вероятно объединение условий в группы (по типу if((c1&&c2)||(c3&&c4&&!c5))), перестановки блоков одновременно с изменением условий и так далее... и для них этот рецепт мало чем поможет. И даже случай, как описан здесь, с несколькими текстовыми шаблонами на которые надо проверять — вероятнее.

Думаю, автор темы пытается оптимизировать работу под свою специфику восприятия (да, у каждого она своя) и одновременно под своего VCS клиента. Но вряд ли это будет точно так же полезно для кого-то, кроме его ближайших родственников.
The God is real, unless declared integer.
Re[5]: Запись if с несколькими || или &&
От: Erop Россия  
Дата: 25.04.08 16:06
Оценка: +3
Здравствуйте, igna, Вы писали:

I>А вот более конкретный пример:


I>
I>if (strcmp(filename_extension, "exe") == 0 ||
I>    strcmp(filename_extension, "dll") == 0 ||
I>    strcmp(filename_extension, "obj") == 0 ||
I>    strcmp(filename_extension, "lib") == 0)
I>{
I>    do_something();
I>    do_somethig_else();
I>}
I>


А зачем тут изучать изменения построчно?

I>Который можно записать так:

А можно и так:
const char* str_find_one_of( const char* str, const char *const* patterns, int patterns_count )
{
    for( int i = 0; i < patterns_count; i++ )
        if( strcmp( str, patterns[i] ) == 0 )
             return patterns[i];
    return 0;
}

void foo()
{
    const char * suitable_extensions[] = { "exe", "dll", "obj", "lib" };
    if ( str_find_one_of( filename_extension, 
             suitable_extensions, lengthof( suitable_extensions ) ) != 0 ) {
        do_something();
    }
}
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[6]: Запись if с несколькими || или &&
От: andy1618 Россия  
Дата: 26.04.08 02:44
Оценка: :)))
A>>Во-во. Лично я бы голову сломал, пытаясь осознать глубину замысла аффтара

I>Ну-ну. А долго ломал бы?


Примерно 15 минут: 5 минут на чтение док (мало ли!), 5 минут на опрос коллег (мало ли!), и ещё 5 минут — на пост в bash.org.ru
Re[5]: Запись if с несколькими || или &&
От: Lloyd Россия  
Дата: 26.04.08 11:57
Оценка: :)))
Здравствуйте, andy1618, Вы писали:

GZ>>Если человек в условии пишет false, то сразу хочется узнать зачем это он делает.


A>Во-во. Лично я бы голову сломал, пытаясь осознать глубину замысла аффтара

A>Так что нужно перед такими конструкциями ещё и поясняющий коммент прилеплять — типа "Уважаемые читатели, не волнуйтесь! False в данной конструкции используется чисто из соображений удобства анализа изменений в системе контроля версий"

Да, и не забудь каждой слово в комментарии — на отдельной строке.
... << RSDN@Home 1.2.0 alpha rev. 786>>
Re[7]: Запись if с несколькими || или &&
От: sc Россия  
Дата: 26.04.08 04:36
Оценка: 2 (1) +1
Здравствуйте, igna, Вы писали:

I>Здравствуйте, CreatorCray, Вы писали:


CC>>Да замените себе diff утилиту на ту, которая будет подсвечивать не только измененные строки но и что именно в строках изменилось.


I>На какую?

Есть еще WinMerge (сам пользую и дома и на работе), делает, почти то же что и арахис, в том числе и подсвечивает изменения в строке. Да еще и бесплатна.
Re[3]: Обидны мне слова ваши, дяденька...
От: Erop Россия  
Дата: 25.04.08 09:42
Оценка: 1 (1) +1
Здравствуйте, Сергей Туленцев, Вы писали:

СТ>Суров, батенька, суров.

Зато справедлив

СТ>Полсотней индусо-китайцев командуешь поди? Им что, они усидчивые, могут весь день код педалить без передыху.

Обидны мне слова ваши, дяденька. И моим подчинённым наверное тоже.

Ну а что касается идеи (возможно это я так извратно понял фразу про "педалить без продыху"), что типа оформлять текста красиво надо заради отдыха, то мне лично больше нравится идея пойти погулять, например, или чаю попить, обсудить с коллегами что-нибцдь интересное.
А не пялится в монитор, расставляя табуляторы, а потом ещё и вести неконструктивные споры о том, как лучше извратиться.

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

При таком подходе всякие немотивированные "красивости" являются просто шумом. Ну и зачем тратить силы и здоровье на генерацию шума в исходниках?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: Запись if с несколькими || или &&
От: GlebZ Россия  
Дата: 25.04.08 14:29
Оценка: 1 (1) +1
Здравствуйте, igna, Вы писали:

I>Интересно, как оно выглядит, запрещение такое? Вот я написал if (false и так далее и commited. Что произошло бы дальше, работай я у тебя?

Если человек в условии пишет false, то сразу хочется узнать зачем это он делает. А это непроизводительное времяпровождения. Если человек начнет обращать внимание на систему управления версиями, когда оная этого не требует, то у него не будет времени на более важные вещи. Ну например, на обед. Или пофлеймить по rsdn.
Re[5]: Запись if с несколькими || или &&
От: GlebZ Россия  
Дата: 25.04.08 16:18
Оценка: 1 (1) +1
Здравствуйте, igna, Вы писали:


I>
I>if (strcmp(filename_extension, "exe") == 0 ||
I>    strcmp(filename_extension, "dll") == 0 ||
I>    strcmp(filename_extension, "obj") == 0 ||
I>    strcmp(filename_extension, "lib") == 0)
I>{
I>    do_something();
I>    do_somethig_else();
I>}
I>


IMHO Я бы сделал так:
bool IsRequiredExtension(const char* extension)
{
  return (strstr("exe dll obj lib", extension) != NULL);
}

if (IsRequiredExtension(filename_extension))
{
  do_somthing();
  do_something_else();
}

Читабельно, и набор легко меняется в конкретном месте. (возможно и быстрее, но это маловажно)
... << RSDN@Home 1.2.0 alpha rev. 789>>
Re: Запись if с несколькими || или &&
От: fmiracle  
Дата: 28.04.08 05:21
Оценка: 1 (1) +1
Здравствуйте, igna, Вы писали:

а как записать подобное условие:

if( cond3 || (cond1 && cond2) || (cond4 && cond5 ) )

?
я правильно понимаю, что это должно быть записано так:

if( false 
    || cond3 
    || (true 
        && cond1 
        && cond2
       ) 
    || (true 
        && cond4 
        && cond5 
       ) 
   )


?

А не убьешься читать такую конструкцию?

З.Ы. я использую перенос длинных строк по && или || в if, но только если они получаются слишком длинные — чтобы удобнее воспринимать строку без скроллнга, или, иногда, если условие разбитое на строчки выглядит понятнее.
Но замусоривать лишними true/false и разбивать на строки даже короткие условия — это ужасная идея...
Re: Запись if с несколькими || или &&
От: Lloyd Россия  
Дата: 24.04.08 18:08
Оценка: +2
Здравствуйте, igna, Вы писали:

I>Если записывать условие так, добавление или удаление одного подусловия показывается системой управления версиями как добавление или удаление одной строки независимо от того, добавляется или удаляется это подусловие в начале, в конце или в середине списка подусловий.


Весьма сомнительный аргумент в пользу такого форматирования.
... << RSDN@Home 1.2.0 alpha rev. 786>>
Re[2]: Запись if с несколькими || или &&
От: _FRED_ Черногория
Дата: 25.04.08 10:02
Оценка: :))
Здравствуйте, Erop, Вы писали:

I>>P.S. Если эта или похожая рекомендация дается где-нибудь в приличном месте (все-равно на бумаге или в интернете) дайте пожалуйста ссылку.


E>А я вот, например, запрещаю подчинённым тратить время на оформление кода при помощи "красивостей форматирования". Толкьо отступы и всё.


Сам за них украшаешь?
... << RSDN@Home 1 alpha 3 rev. 0>>
Help will always be given at Hogwarts to those who ask for it.
Re[3]: Зачем друг друга мучить?
От: Erop Россия  
Дата: 25.04.08 10:23
Оценка: +1 :)
Здравствуйте, igna, Вы писали:

I>Интересно, как оно выглядит, запрещение такое? Вот я написал if (false и так далее и commited. Что произошло бы дальше, работай я у тебя?


Для начал я бы попросил тебя исправить, и поинтересовался бы зачем тебе это нужно.
Если бы ситуация носила хронический характер, то я бы подумал хорошо ли это, что ты у меня работаешь.
Мы, в принципе, решаем довольно сложные и намного более интересные задачи, чем внедрение идеи писать в начале условия в if всякий мусор.
Возможно тебе просто не интересно то, чем мы тут занимаемся?
У нас были сотрудники, котрые очень не плохо знали м С++ и программирвоание вообще, но им было не интересно решать наши сложные прикладные задачи (мы, кстати, в своей области умеем это делать лучше всех в мире), а было интересно разрабатывать всякие извратные подходы к программированию.

Один из таких сотрудников, напримр, был преподавателем С++ в одном довольно пристижном месте. Да и вообще чел очень хорошо образованный и знающий наше дело. Я, скажем, до сих пор его уважаю и прислушиваюсь к его идеям. И не смотря на все его знания и умения, нам пришлось с ним расстаться, в результате и он выиграл, так как нашёл себе занятие более соответсвующее его интересам, и мы, как мне кажется.

Зачем друг другу портить жизнь? Ну нравится тебе писать
if(identity(false) 
    || true
) {
}
ну найди работодателя, которому тоже так нравится, или которому пофиг
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: Запись if с несколькими || или &&
От: Mr.Cat  
Дата: 25.04.08 13:16
Оценка: +2
Здравствуйте, igna, Вы писали:
I>Tortoise 1.3.2 показывает измененной всю строку, если в ней хоть что-то изменилось. Чтобы увидеть, что именно, нужно "перейти" на эту строку и посмотреть внизу.

Мне кажется, что проблема надуманная.
Re: Запись if с несколькими || или &&
От: GlebZ Россия  
Дата: 25.04.08 14:22
Оценка: :))
Здравствуйте, igna, Вы писали:

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

PS. Вверху написано "Философия программирования (всего сообщений — 99999, сегодня — 47) ". Просто очень захотелось написать 100000 ное сообщение.
Re[6]: Запись if с несколькими || или &&
От: igna Россия  
Дата: 25.04.08 16:15
Оценка: :))
Здравствуйте, Erop, Вы писали:

E>    const char * suitable_extensions[] = { "exe", "dll", "obj", "lib" };


Или так:

    const char * suitable_extensions[] = {
        "exe",
        "dll",
        "obj",
        "lib",
    };


Re[9]: Ну что ж. Мастер класс, так мастер класс :)
От: Left2 Украина  
Дата: 26.04.08 11:51
Оценка: +2
E>Кстати, а зачем комментировать код, если есть CSV?
Ну как сказать. Одно дело увидеть закомментированный код с комментарием типа "а вот так вот — не работает" или "было так, но так было капец как медленно" и другое дело — догадаться для этого полезть в лог VCS. Я всё же за закомментированный код. Естественно, клинические случаи (типа не удалять код вообще ) не рассматриваем.
... << RSDN@Home 1.2.0 alpha rev. 717>>
Re[9]: Запись if с несколькими || или &&
От: Alex Alexandrov США  
Дата: 26.04.08 20:26
Оценка: +2
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, Сергей Туленцев, Вы писали:


СТ>>Да ладно, это же элементарно. Он так делает, чтобы иметь возможность "выключать" отдельные куски условия простым однострочным комментарием. Я так, правда, не пишу, но зато в SQL скриптах очень часто делаю так:


E>Так понять хотя бы можно.

E>А просто редактировать ен рулит?

E>Ну типа copy-paste, оригинал комментим, а над копией изголяемся?

E>А если о системе контроля версий обратно вспомнить, то и от копипаста отказаться можно...

Главное — не забыть закомментаренный код убрать перед коммитом. За куски закомментаренного кода на код ревью ругаем, если только код не находится в стадии активной разработки. Да и в этом случае обязателен комментарий TODO/FIXME, из которого должно быть четко ясно, когда эти аппендиксы будут удалены.

Нет ничего хуже закомментаренных обрывков макарон в коде пятилетней давности, без комментариев кто, зачем и почему это выключил...
It's kind of fun to do the impossible (Walt Disney)
Re[8]: Обидны мне слова ваши, дяденька...
От: VGn Россия http://vassilsanych.livejournal.com
Дата: 27.04.08 22:49
Оценка: +2
R>>Речь о том, что вместо того, чтобы инспектировать код подчиненных на наличие нестандартного стиля форматирования, можно просто контролировать использование единой настройки автоформатирования, которую также хранить в системе контроля версий.

AA>Настройки форматирования IDE могут быть дополнением к описанным правилом, но уж никак не заменой.


Любите сложности?
... << RSDN@Home 1.2.0 alpha 4 rev. 1088>>
Re[9]: Обидны мне слова ваши, дяденька...
От: Alex Alexandrov США  
Дата: 29.04.08 20:16
Оценка: +1 :)
Здравствуйте, rsn81, Вы писали:

R>Здравствуйте, Alex Alexandrov, Вы писали:


R>Следование выбору единой IDE скорее решение конкретного человека, чем приказное наставление: человек выбирает, или ему кроме того, что с него требуют выполнения поставленных задач, еще и выделять время на форматирование кода в соответствии со стандартом команды — или использовать инструмент, который сделает это в фоне за него. Вместо того, чтобы тратить время на ручное упорядочивание бардака в условиях предоставленной мнительной свободы, мне кажется, стоит тратить время на работу.


Практика показывает, что команды держатся на энтузиастах. Как правило, энтузиасты-пользователи-доминирующих-средств разработки быстро осваивают настройки их любимой среды разработки (опять же, Vim или Emacs или что-там-еще-есть) для поддержки стиля форматирования, принятого в команде, и с удовольствием делятся ими в переиспользуемой форме с коллегами.

Разумеется, лучше не работать в командах, где любимой темой обсуждения является количество пробелов в отступе, а любимым делом — расстановка этих самых пробелов... У японцев на Тойоте есть хорошее слово, обозначающее работу, которую можно не делать, ибо можно автоматизировать — "муда". Так вот, муды должно быть поменьше в нашем деле.
It's kind of fun to do the impossible (Walt Disney)
Re[7]: А зачем подчёркивать различия? :)
От: Alex Alexandrov США  
Дата: 27.04.08 18:21
Оценка: 7 (1)
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, Alex Alexandrov, Вы писали:



AA>>Из двух других примеров Романа

AA>>я решил (вполне ожидаемо), что мы обсуждаем С++.

E>IMHO обсуждаемые проблемы и идеи универсально применимы или непременимы в С/С++/С#...


Идеи — да. Реализация идей, как обычно, имеет кучу мест, где прячутся бесы. Я лишь имел в виду, что использование хвостовых запятых в перечислениях является нарушением текущего стандарта. Когда у нас код в первый раз переводился на GCC и когда начали строго следить за ворнингами, эти хвостовые запятые пришлось в коде явно вычищать. Собственно, этим опытом и делюсь. Если все это уже знают — сорри за флуд.
It's kind of fun to do the impossible (Walt Disney)
Re[7]: Запись if с несколькими || или &&
От: Roman Odaisky Украина  
Дата: 26.04.08 12:48
Оценка: 2 (1)
Здравствуйте, igna, Вы писали:

CC>>Да замените себе diff утилиту на ту, которая будет подсвечивать не только измененные строки но и что именно в строках изменилось.


I>На какую?


Лично я испольую Vim, преимущественно из-за того, что он имеет как GUI-версию, так и консольную. Там встроен режим сравнения:


(скриншот, где-то 70 КБ)

Может, это не очень хорошо видно, но он сворачивает большие куски совпадающего кода (см. самую верхнюю строчку в консольном окне).

Из того, что другие умеют, а Vim нет, можно назвать инфоскроллер и возможность отобразить две строки одну над другой для посимвольного сравнения.
До последнего не верил в пирамиду Лебедева.
Re[7]: Запись if с несколькими || или &&
От: jazzer Россия Skype: enerjazzer
Дата: 28.04.08 08:36
Оценка: 2 (1)
Здравствуйте, igna, Вы писали:

I>Здравствуйте, CreatorCray, Вы писали:


CC>>Да замените себе diff утилиту на ту, которая будет подсвечивать не только измененные строки но и что именно в строках изменилось.


I>На какую?


tkdiff (кроссплатформенный, ибо Tk)
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[11]: Зачем друг друга мучить?
От: Alex Alexandrov США  
Дата: 29.04.08 18:17
Оценка: 2 (1)
Здравствуйте, igna, Вы писали:

I>Здравствуйте, Erop, Вы писали:


E>>Initialize, в отличии от конструктора, может вернуть результат.


I>Может. А еще может быть вызван несколько раз, что далеко не всегда имеет смысл и иногда приводит к необходимости предотвратить или каким-либо другим способом обработать эту ситуацию. Создаем себе проблему причем нередко на ровном месте, то есть там, где и конструктор работает вполне хорошо.


I>Кроме того конструктор тоже может "вернуть рузультат", тем же способом, который используется обычно, когда функция должна "вернуть" более одного "результата". Выходные параметры имеются в виду.


Ну, реально это то же самое. После того как конструктор вернул ошибку таким образом, объект находится в невалидном состоянии, то есть каждый метод этого объекта все равно должен в начале иметь "if (!m_ok) { ... }"

I>Опять кроме того, если смысл возвращения результата в сигнализации сбоя, то можно использовать статическую функцию Create, возвращающую 0, "если что".

Под 0 имеется в виду NULL, да?

I>А для того, чтобы использовать Initialize, и получить необходимость корректно поддерживать дополнительное ("пустое") состояние, и правильно реагировать на повторный вызов Initialize; нужны более веские аргументы чем необходимость что-то там вернуть.


I>Что еще важно, я не против такого подхода, я против того, чтобы его объявляли "подходом по умолчанию", тем более единственно верным подходом, тем более, чтобы указывали направление в сторону счастья подчиненным.


Реально в С++ только 3 подхода к созданию объектов:
1. Бросать исключения из конструкторов. Наибольшие требования бинарной совместимости. Наиболее удобный и краткий код для клиента. Классический C++. Как правило, имеет смысл для инфраструктурных вещей, которые используются в основном в реализации.
2. Двухфазная инициализация и различные вариации на ее тему. Менее требовательно к бинарной совместимости при условии соблюдения различных правил. Код клиента должен содержать больше кода обработки ошибок по сравнению с первым вариантом.
3. Фабричные функции возвращающие указатель (умный, как правило). Наименьшие требования к бинарной совместимости (вплоть до минимального требования простого соответствия формата vtbl при использования чисто абстрактных интерфейсов и extern "C" фабричных функций). Наиболее громоздкий код клиента. Как правило, используется для крупных подсистем.

Если кто-то знает другие подходы — буду рад просветиться.
It's kind of fun to do the impossible (Walt Disney)
Re[3]: Запись if с несколькими || или &&
От: vdimas Россия  
Дата: 30.04.08 12:10
Оценка: 2 (1)
Здравствуйте, igna, Вы писали:


I>Tortoise 1.3.2 показывает измененной всю строку, если в ней хоть что-то изменилось. Чтобы увидеть, что именно, нужно "перейти" на эту строку и посмотреть внизу.


Есть такая штука Araxis Merge, оччень рекомендую, если надо версии сравнивать.
... << RSDN@Home 1.2.0 alpha rev. 786>>
Re[4]: Зачем друг друга мучить?
От: igna Россия  
Дата: 25.04.08 13:17
Оценка: +1
Здравствуйте, Erop,

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

По поводу "друг друга мучить". Я бы не мучился, а подчинился. Как подчинился когда-то одному далеко не глупому начальнику, объяснявшему мне, что не стоит делать всю работу по созданию объекта в конструкторе, а стоит мол в конструкторе делать необходимый минимум, а все остальное перенести в специальную функцию Initialize или вроде того. Ну вот он тоже считал свой способ единственно верным. Может сейчас самому смешно.
Re[4]: Запись if с несколькими || или &&
От: igna Россия  
Дата: 25.04.08 13:21
Оценка: :)
Здравствуйте, Mr.Cat, Вы писали:

MC>Мне кажется, что проблема надуманная.


А мне нет. Возможно дело в разном количестве времени, которое мы проводим за изучением содержимого систем управления версиями.
Re[5]: Запись if с несколькими || или &&
От: CreatorCray  
Дата: 25.04.08 13:57
Оценка: +1
Здравствуйте, igna, Вы писали:

I>Здравствуйте, Mr.Cat, Вы писали:

MC>>Мне кажется, что проблема надуманная.
I>А мне нет. Возможно дело в разном количестве времени, которое мы проводим за изучением содержимого систем управления версиями.
Я надеюсь программированием ваши люди занимаются все же чаще чем туплением в diff в попытках понять, а шо тут сосед наменял такого то?
Пардон, но именно так это выглядит со стороны.
Да замените себе diff утилиту на ту, которая будет подсвечивать не только измененные строки но и что именно в строках изменилось.
А придумывать вот таких вот уродцев — последнее дело.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[4]: Запись if с несколькими || или &&
От: andy1618 Россия  
Дата: 25.04.08 16:16
Оценка: +1
GZ>Если человек в условии пишет false, то сразу хочется узнать зачем это он делает.

Во-во. Лично я бы голову сломал, пытаясь осознать глубину замысла аффтара
Так что нужно перед такими конструкциями ещё и поясняющий коммент прилеплять — типа "Уважаемые читатели, не волнуйтесь! False в данной конструкции используется чисто из соображений удобства анализа изменений в системе контроля версий"
Re[6]: Запись if с несколькими || или &&
От: igna Россия  
Дата: 25.04.08 16:46
Оценка: :)
Здравствуйте, GlebZ, Вы писали:

GZ>  return (strstr("exe dll obj lib", extension) != NULL);


Да, но все же наверное лучше так:

  return (strstr(
    "exe "
    "dll "
    "obj "
    "lib "
  , extension) != NULL);


Re[7]: Запись if с несколькими || или &&
От: Сергей Туленцев Россия http://software.tulentsev.com
Дата: 25.04.08 17:33
Оценка: +1
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, igna, Вы писали:


I>>Ну-ну. А долго ломал бы?

E>Ну я вот уже с 24.04 18:43 понять не могу зачем тебе это надо

Да ладно, это же элементарно. Он так делает, чтобы иметь возможность "выключать" отдельные куски условия простым однострочным комментарием. Я так, правда, не пишу, но зато в SQL скриптах очень часто делаю так:
SELECT FirstName, LastName FROM Customers
WHERE 1 = 1
    AND City LIKE 'Mo%'
    AND Age > 21
... << RSDN@Home 1.2.0 alpha 4 rev. 1084>>
--
Re: И совсем не для того
От: Roman Odaisky Украина  
Дата: 25.04.08 18:07
Оценка: +1
Здравствуйте, igna, Вы писали:

I>Если записывать условие так, добавление или удаление одного подусловия показывается системой управления версиями как добавление или удаление одной строки независимо от того, добавляется или удаляется это подусловие в начале, в конце или в середине списка подусловий.


VCS тут ни при чем. Я тоже часто так делаю, но по другой причине: так намного проще добавлять и удалять (комментировать) строки. Например, в Vim нажал «ddp» и две строки поменялись местами. И не приходится беспокоиться по поводу пунктуации.

Поэтому же я сильно не люблю сановские «} else {»: как закомментировать весь блок else, спрашивается?

Аналогично:

enum SomeEnum
{
    value1,
    value2, // <-- лопата
};

std::cout
    << "hello"
    << boost::format("%3% - %1% = %2%")
        % something
        % somethingElse()
        % yetAnotherExpression
    << "world"
;

Query q("SELECT * FROM table WHERE x = ? AND y = ?")
    (getSomeX())
    (42)
;

if false { }
elsif address :is "From" "forum@rsdn.ru"
{
        fileinto "INBOX.Lists.RSDN";
}
elsif header :contains "X-Mailing-List" "qt-interest@trolltech.com"
{
        fileinto "INBOX.Lists.qt-interest";
}
elsif header :contains "List-Id" "<stringtemplate-interest.antlr.org>"
{
        fileinto "INBOX.Lists.ST-interest";
}
elsif header :contains "List-Id" "<kdepim-users.kde.org>"
{
        fileinto "INBOX.Lists.kdepim-users";
}
...

P. S. Низость моего падения не знает границ...
До последнего не верил в пирамиду Лебедева.
Re[3]: Не стреляйте в пианиста, он играет как умеет... :)
От: Roman Odaisky Украина  
Дата: 25.04.08 18:38
Оценка: :)
Здравствуйте, Erop, Вы писали:

RO>>VCS тут ни при чем. Я тоже часто так делаю, но по другой причине: так намного проще добавлять и удалять (комментировать) строки. Например, в Vim нажал «ddp» и две строки поменялись местами. И не приходится беспокоиться по поводу пунктуации.

E>А может того, найти удобный редактор? :)

Пусть у тебя:
if(someQuiteLongCondition1 &&
    someQuiteLongCondition2 &&
    someQuiteLongCondition3)
{
}

Как ты в своем любимом редакторе поменяешь местами второе и третье условия?
До последнего не верил в пирамиду Лебедева.
Re[8]: Запись if с несколькими || или &&
От: igna Россия  
Дата: 26.04.08 06:24
Оценка: :)
Здравствуйте, sc, Вы писали:

sc>Есть еще WinMerge (сам пользую и дома и на работе), делает, почти то же что и арахис, в том числе и подсвечивает изменения в строке. Да еще и бесплатна.


Порадовали начинающиеся с запятой строки на скриншоте.
Re[2]: Запись if с несколькими || или &&
От: igna Россия  
Дата: 26.04.08 06:47
Оценка: :)
Здравствуйте, netch80, Вы писали:

N>Далее, ситуации с таким простым и прямолинейным if, мне кажется, встречаются крайне редко.


Ну так я же не написал, что использую такую запись всегда. Более того, до сих пор я использовал ее в двух местах. Что-то вроде:

if (false
    || s == "Беларусь"
    || s == "Великобритания"
    || s == "Германия"
    || s == "Россия"
    || s == "Украина"
    || s == "Франция"
)


Теперь можно добавить Австралию и Японию сохранив алфавитный порядок и не изменив никакой другой строки:

if (false
    || s == "Австралия"
    || s == "Беларусь"
    || s == "Великобритания"
    || s == "Германия"
    || s == "Россия"
    || s == "Украина"
    || s == "Франция"
    || s == "Япония"
)
Re[7]: Альтернатива
От: igna Россия  
Дата: 26.04.08 11:18
Оценка: :)
Здравствуйте, Erop, Вы писали:

E>1) Я уже рисовал тебе тут пример с функцией str_find_one_of


Да. Хотел посмотреть, запишешь ли ты и названия стран в одну строку.
Re[11]: Ну что ж. Мастер класс, так мастер класс :)
От: Left2 Украина  
Дата: 26.04.08 14:40
Оценка: +1
E>А словами/в сопроводительно йдокументации описать принятые решения не судьба?
Кинь камнем кто слышал как я говорил что-то против документации
Документация — это всегда хорошо
Но иногда проще оставить кусок кода который не работает + дописать одну строку чем долго рассказывать как и что было сделано не так
... << RSDN@Home 1.2.0 alpha rev. 717>>
Re[12]: Ну что ж. Мастер класс, так мастер класс :)
От: Erop Россия  
Дата: 26.04.08 17:16
Оценка: +1
Здравствуйте, Left2, Вы писали:

L>Но иногда проще оставить кусок кода который не работает + дописать одну строку чем долго рассказывать как и что было сделано не так

1) IMHO излагать мысли в виде связанного текста на русском языке полезно и для мыслей и для языка. Так что "проще" не значит "лучше"
2) В совсем совсем исключительных случаях такая форма объяснений конечно тоже возможна. Но это совсем не мейнстрим. Странно под такой редкий случай стандарты кодирования подстраивать.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[2]: И совсем не для того
От: Alex Alexandrov США  
Дата: 26.04.08 20:35
Оценка: +1
Здравствуйте, Roman Odaisky, Вы писали:

RO>Аналогично:


RO>
RO>enum SomeEnum
RO>{
RO>    value1,
RO>    value2, // <-- лопата
RO>};
RO>


Это нелегальный C++ код. Если кратко — некоторые компиляторы (GCC) будут ругаться предупреждениями, а иногда (gcc -pedantic) и ошибками. Более подробно — например, здесь
It's kind of fun to do the impossible (Walt Disney)
Re[3]: И совсем не для того
От: igna Россия  
Дата: 27.04.08 08:05
Оценка: -1
Здравствуйте, Alex Alexandrov, Вы писали:

AA>Это нелегальный C++ код.


Да, к сожалению. При инициализации массива запятая после последнего значения допускается; а тут, в синтаксически подобном месте — нет. Мне нравится, что C99 разрешил запятую после последнего члена перечисления, все-таки кому-то еще это надо, раз в C такая возможность появилась. Надеюсь появится и в C++. Кроме того можно было бы разрешить запятую после последнего аргумента/параметра и может быть даже такое:

logical-or-expression:
        logical-and-expression
        logical-and-expression ||
        logical-or-expression || logical-and-expression
Re[3]: И совсем не для того
От: Roman Odaisky Украина  
Дата: 27.04.08 08:43
Оценка: +1
Здравствуйте, Alex Alexandrov, Вы писали:

RO>>Аналогично:


RO>>
RO>>enum SomeEnum
RO>>{
RO>>    value1,
RO>>    value2, // <-- лопата
RO>>};
RO>>


AA>Это нелегальный C++ код.


Причем здесь C++?!
До последнего не верил в пирамиду Лебедева.
Re[4]: Обидны мне слова ваши, дяденька...
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 27.04.08 11:55
Оценка: +1
Здравствуйте, Erop, Вы писали:

[skipped]
Странные какие-то проблемы... ваша IDE не умеет автоматически форматировать текст кода?
Re[5]: Зачем друг друга мучить?
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 27.04.08 12:02
Оценка: +1
Здравствуйте, igna, Вы писали:

I>По поводу "друг друга мучить". Я бы не мучился, а подчинился. Как подчинился когда-то одному далеко не глупому начальнику, объяснявшему мне, что не стоит делать всю работу по созданию объекта в конструкторе, а стоит мол в конструкторе делать необходимый минимум, а все остальное перенести в специальную функцию Initialize или вроде того. Ну вот он тоже считал свой способ единственно верным. Может сейчас самому смешно.

А что в этом смешного?
Ваш начальник был прав, непонятно только, почему он не смог объяснить вам причины.
Re[5]: А зачем подчёркивать различия? :)
От: Alex Alexandrov США  
Дата: 27.04.08 13:39
Оценка: :)
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, Roman Odaisky, Вы писали:



AA>>>Это нелегальный C++ код.

RO>>Причем здесь C++?!
E>+1
E>Насколько я понимаю, первоначально обсуждался C#. Но и в С/С++ есть схожие обстоятельства...
E>Так что то, что это "не легальный С++" код, тоже не совсем не в тему сообщение IMHO

Из двух других примеров Романа

RO>
RO>std::cout
RO>    << "hello"
RO>    << boost::format("%3% - %1% = %2%")
RO>        % something
RO>        % somethingElse()
RO>        % yetAnotherExpression
RO>    << "world"
RO>;
RO>

RO>
RO>Query q("SELECT * FROM table WHERE x = ? AND y = ?")
RO>    (getSomeX())
RO>    (42)
RO>;
RO>


я решил (вполне ожидаемо), что мы обсуждаем С++.
It's kind of fun to do the impossible (Walt Disney)
Re[6]: И совсем не для того
От: Alex Alexandrov США  
Дата: 27.04.08 14:17
Оценка: +1
Здравствуйте, Roman Odaisky, Вы писали:

RO>Здравствуйте, Alex Alexandrov, Вы писали:


AA>>>>Это нелегальный C++ код.


RO>>>Причем здесь C++?!


AA>>Хм, а почему не? Ты привел 3 примера, помеченных тагами "c" (заметь не c#). Второй пример использует boost::format. Третий — тоже явно на C++ похож. Явных указаний о языке ты не даешь. Здравая логика подсказала мне, что ты имеешь в виду C++ во всех трех случаях.


AA>>Просвети тогда, каким должен был быть ход моей мысли на самом деле?


RO>


RO>Этот код соответствует стандарту C99 и (наверное) будет соответствовать C++09.


RO>В любом случае, мы не обсуждаем конкретный язык, а только стиль, который подходит почти к любому языку программирования (кроме Python .


ОК, просто как человек, постоянно проверяющий код, который пишет команда, я по привычке обращаю внимание на "непортабельные" места. И сразу хочется написать комментарий, чтобы сэкономить кому-нибудь пару минут при компиляции другими компиляторами. Может, и это сообщение прочитает кто-нибудь и запомнить, что пока в коде C++ лучше не ставить "хвостовую" запятую в перечислениях, дабы не плодить ворнинги...

Кстати, в Питоне хвостовые запятые разрешены синтаксисом. И мне это нравится.
It's kind of fun to do the impossible (Walt Disney)
Re[15]: Ну что ж. Мастер класс, так мастер класс :)
От: Cyberax Марс  
Дата: 27.04.08 15:46
Оценка: +1
Здравствуйте, Erop, Вы писали:

C>>Это почему? Для реализации — вполне нормально. Документируется интерфейс и важные для его пользователя детали. Внутренний код документировать обычно не обязательно — его проще и удобнее просто посмотреть.

E>Ну, то есть тебе кажется нормальным, например, если в комментах к интерфейсу будут закомментированные ошмётки четырёх предыдущих его версий?
В Doxygen комментах — вряд ли. А вот в теле — вполне нормально.
Sapienti sat!
Re[9]: Обидны мне слова ваши, дяденька...
От: Erop Россия  
Дата: 27.04.08 15:49
Оценка: +1
Здравствуйте, rsn81, Вы писали:

R>Эти художества может инспектировать и не допускать алгоритм.

Какая разница кто их будет инспектировать?
Тут же обсуждается их целесообразность? IMHO они не целесообразны.
А кто будет контролировать -- алгоритм или сами разработчики вопрос не особо важный.
IMHO нет никакого смысла в доп. формализации этих всех дел. Сил тратится много, а толку мало. Если кто-то хочет тратить силы на борьбу с системой, а не на конструктивную деятельность, то нафига бы он нужен?

R>Ничего не надо компенсировать: когда программист жмет Save, код автоматически форматируется в соответствии с принятом в команде стилем. Конкретно у меня Resharper в Visual Studio или встроенный форматтер в Eclipse JDT в данном случае выстроит предикаты в одну строку и сделает перенос, только если строка превысит 78 символов. Это было настроено один раз, закинуто в SVN, указано всем пользоваться этой настройкой — и забыто.

Так можно жить. Но можно и так, что код форматируют люди, в процессе разработки.
Правда у нас используют настройки редактора по автоформатированию, но не все. Главное -- приемлемый результат.

R>Во-во, не понимаю ваши проблемы в упор.

А у нас нет проблем. Просто все стандарты кодирования соблюдают и всё
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[8]: Обидны мне слова ваши, дяденька...
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 28.04.08 03:52
Оценка: +1
Здравствуйте, Alex Alexandrov, Вы писали:

AA>Хм, то есть вместо того, чтобы простым текстом описать требования к форматирования, мы вводим требования к тому, какую IDE использует человек. Типа, демократия по-майкрософтовски? В сад. Я весь код в Vim пишу, кто-то у нас в команде Emacs использует, кто-то в редакторе Фара все пишет. Следовать правилам форматирования я нахожу весьма разумным, пересаживать всех на одну ИДЕ — нет. Настройки форматирования IDE могут быть дополнением к описанным правилом, но уж никак не заменой.

Следование выбору единой IDE скорее решение конкретного человека, чем приказное наставление: человек выбирает, или ему кроме того, что с него требуют выполнения поставленных задач, еще и выделять время на форматирование кода в соответствии со стандартом команды — или использовать инструмент, который сделает это в фоне за него. Вместо того, чтобы тратить время на ручное упорядочивание бардака в условиях предоставленной мнительной свободы, мне кажется, стоит тратить время на работу.
Re[7]: Зачем друг друга мучить?
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 28.04.08 03:52
Оценка: +1
Здравствуйте, igna, Вы писали:

I>Ну это было давно, но если не ошибаюсь главным аргументом было то, что конструктор якобы не должен бросать исключений.

Мимо. Единственный способ отменить создание объекта (а это достаточно часто нужно, при формировании некорректных входных данных) — выбросить из конструктора исключение. Насколько понял, вы пишете на Java — посмотрите конструкторы классов JDK, практически каждый бросает исключение в соответствующем случае.
Re[8]: Альтернатива
От: fmiracle  
Дата: 28.04.08 05:13
Оценка: +1
Здравствуйте, igna, Вы писали:

N>>Зачем козе баян? При нормальном проектировании эти списки никто не хранит напрямую в коде, они подгружаются из ресурсных конфигов.


I>Верно. Но у такого подхода есть и недостатки. Например надо обрабатывать ситуацию, когда файл не найден. Или еще иногда нужно запретить пользователю изменять список. Не думаю, что предлагаемый тобой подход является предпочтительным в 100% всех случаев. Бывает, что предпочтительнее хранить список в исходном коде.


Еще можно хранить в ресурсном файле. Или заполнять список в коде и искать по нему потом...
Re[14]: Ну что ж. Мастер класс, так мастер класс :)
От: Roman Odaisky Украина  
Дата: 28.04.08 10:34
Оценка: +1
Здравствуйте, fmiracle, Вы писали:

C>>>А документация пишется тут же — в исходном коде с помощью Doxygen/JavaDoc.

E>>Кстати, в сложных, наукоёмких проектах такой подход совершенно не работает. В таких проектах документация -- довольно сложные и свосем предментыне статьи :)

F>К каждому методу??? Ой ли?

F>Может быть все же отдельная большая документация с подробными описаниями, которая все равно нужна, и общий reference по классам и методам, который как раз прекрасно генерится по JavaDoc?

Уж сколько раз твердили миру. В документации должно быть описано не то, что делает код (точнее, не только то), а зачем он там, какую проблему решает.
До последнего не верил в пирамиду Лебедева.
Re[9]: Зачем друг друга мучить?
От: Alex Alexandrov США  
Дата: 29.04.08 05:06
Оценка: +1
Здравствуйте, igna, Вы писали:

I>Здравствуйте, rsn81, Вы писали:


R>>Мимо. Единственный способ отменить создание объекта (а это достаточно часто нужно, при формировании некорректных входных данных) — выбросить из конструктора исключение. Насколько понял, вы пишете на Java — посмотрите конструкторы классов JDK, практически каждый бросает исключение в соответствующем случае.


I>Тогда это был C++. И почему-то было популярно создавать "пустой" объект и лишь затем заполнять его содержанием. Вот пример: CFileVersionInfo.


При том, что современные компиляторы гораздо лучше поддерживают исключения по сравнению со своими предшественниками 10-летней давности, тем не менее исключения, путешествующие через границы модулей, по-прежнему преподносят сюрпризы иногда. Имеются в виду прежде всего реализации, основанные на таблицах раскрутки — не-Windows-x86 то есть.

Так что во многих больших проектах (у нас, например) запрещено выбрасывать исключения через границу интерфейса модуля. Внутри — пожалуйста, на границе модуля — транслируй в коды ошибок. Соответсвенно, для конструирования объектов используются либо фабричные функции, либо двухфазная инициализация.
It's kind of fun to do the impossible (Walt Disney)
Re[5]: С++ всё ещё *слишком простой и понятный*? :)))
От: Left2 Украина  
Дата: 29.04.08 12:13
Оценка: :)
E>Не, ЛЮДИ! Вам правда кажется, что синтаксис С++ всё ещё *слишком простой и понятный*?

А что такого страшного в том чтобы разрешить запятую после последнего мембера? Реально удобно строки местами менять Я бы двумя руками за. Более того, сдаётся мне что и компилятору будет проще игнорировать её наличие чем проверять.

PS. Кстати, в ECMAScript (более известный широким кругам как JavaScript) в новый стандарт добавили возможность ставить запятую после последнего мембера при инициализации массивов и (по-моему) обьектов. Так что даёшь возможность ставить запятую после последнего мембера во все языки!
... << RSDN@Home 1.2.0 alpha rev. 717>>
Re: Запись if с несколькими || или &&
От: Mr.Cat  
Дата: 24.04.08 22:31
Оценка:
Здравствуйте, igna, Вы писали:
I>Если записывать условие так, добавление или удаление одного подусловия показывается системой управления версиями как добавление или удаление одной строки независимо от того, добавляется или удаляется это подусловие в начале, в конце или в середине списка подусловий.

А зачем? ИМХО, если есть проблемы с системой контроля версий (даже не представляю, какими они должны быть, чтобы начать применять такое... разве что отсутствие всякого merge), стоит менять систему контроля версий, а не стиль кодирования.

Простите за сарказм, конечно, но если записывать код в одну строчку и без пробелов и использовать при этом только однобуквенные идентификаторы, компилятор будет быстрее компилировать, а линкер — линковать. Да и исходники меньше места занимать будут.
Re[2]: Запись if с несколькими || или &&
От: igna Россия  
Дата: 25.04.08 10:08
Оценка:
Здравствуйте, Erop, Вы писали:

E>А я вот, например, запрещаю подчинённым тратить время на оформление кода при помощи "красивостей форматирования".


Интересно, как оно выглядит, запрещение такое? Вот я написал if (false и так далее и commited. Что произошло бы дальше, работай я у тебя?
Re[2]: Запись if с несколькими || или &&
От: igna Россия  
Дата: 25.04.08 12:51
Оценка:
Здравствуйте, Mr.Cat, Вы писали:


MC>А зачем? ИМХО, если есть проблемы с системой контроля версий (даже не представляю, какими они должны быть, чтобы начать применять такое... разве что отсутствие всякого merge), стоит менять систему контроля версий, а не стиль кодирования.


Tortoise 1.3.2 показывает измененной всю строку, если в ней хоть что-то изменилось. Чтобы увидеть, что именно, нужно "перейти" на эту строку и посмотреть внизу.
Re[6]: Запись if с несколькими || или &&
От: igna Россия  
Дата: 25.04.08 14:07
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Да замените себе diff утилиту на ту, которая будет подсвечивать не только измененные строки но и что именно в строках изменилось.


На какую?
Re[5]: Зачем друг друга мучить?
От: Erop Россия  
Дата: 25.04.08 15:04
Оценка:
Здравствуйте, igna, Вы писали:

I>странное представление, что работу программиста можно регламентировать до таких мелочей. Свободы никакой, зато "лучше всех в мире", хм...

Ну вы "хм", а мы просто знаем...
А мелочи тут не при чём. Важно то, что человек делает на работе и чего он не делает.

I>По поводу "друг друга мучить". Я бы не мучился, а подчинился.

Ну так и правильно это, IMHO. Следовать станадартам кодирования всегда правильнее, чем их нарушать.

I>Как подчинился когда-то одному далеко не глупому начальнику, объяснявшему мне, что не стоит делать всю работу по созданию объекта в конструкторе, а стоит мол в конструкторе делать необходимый минимум, а все остальное перенести в специальную функцию Initialize или вроде того. Ну вот он тоже считал свой способ единственно верным. Может сейчас самому смешно.

Я, кстати, в некоторых случаях
Автор: Graf Alex
Дата: 23.04.08
тоже считаю такой подход более чем оправданным...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[4]: Запись if с несколькими || или &&
От: igna Россия  
Дата: 25.04.08 15:22
Оценка:
Здравствуйте, Erop, Вы писали:

E>А такой стиль кодирования, что есть многосторчный if в котором несколько программистов меняют набор коньюнктов, и потом эти изменения мержат -- это как-то нехорошо у меня в голове укладывается.


Не обязательно несколько программистов, можно и свои изменения 5-тилетней давности изучать.

А вот более конкретный пример:

if (strcmp(filename_extension, "exe") == 0 ||
    strcmp(filename_extension, "dll") == 0 ||
    strcmp(filename_extension, "obj") == 0 ||
    strcmp(filename_extension, "lib") == 0)
{
    do_something();
    do_somethig_else();
}


Который можно записать так:

if (
    strcmp(filename_extension, "exe") == 0 ||
    strcmp(filename_extension, "dll") == 0 ||
    strcmp(filename_extension, "obj") == 0 ||
    strcmp(filename_extension, "lib") == 0 ||
false)
{
    do_something();
    do_somethig_else();
}


, или так:

if (false
    || strcmp(filename_extension, "exe") == 0
    || strcmp(filename_extension, "dll") == 0
    || strcmp(filename_extension, "obj") == 0
    || strcmp(filename_extension, "lib") == 0
){
    do_something();
    do_somethig_else();
}
Re[6]: Запись if с несколькими || или &&
От: GlebZ Россия  
Дата: 25.04.08 16:22
Оценка:
Здравствуйте, GlebZ, Вы писали:


Ошибочка вкралась...
bool IsRequiredExtension(const char* extension)
{
  ASSERT(strlen(extension)!=0);
  return (strstr("exe dll obj lib", extension) != NULL);
}

if (IsRequiredExtension(filename_extension))
{
  do_somthing();
  do_something_else();
}
... << RSDN@Home 1.2.0 alpha rev. 789>>
Re[7]: Запись if с несколькими || или &&
От: Erop Россия  
Дата: 25.04.08 16:28
Оценка:
Здравствуйте, igna, Вы писали:

I>Или так:


I>
I>    const char * suitable_extensions[] = {
I>        "lib",
I>    };
I>


I>

Выделенное не совсем стандартно.
А вообще-то у меня вот какой вопрос возник. Ты вообще все слова в прогамме в столбик пишешь? Или для каких-то делаешь таки исключения?

вот скажем слово const можно на отдельное строке писать, а то вдруг его убрать надо будет?

А вообще-то смени diff на нормальный и не мучайся
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[5]: Запись if с несколькими || или &&
От: igna Россия  
Дата: 25.04.08 16:48
Оценка:
Здравствуйте, andy1618, Вы писали:

A>Во-во. Лично я бы голову сломал, пытаясь осознать глубину замысла аффтара


Ну-ну. А долго ломал бы?
Re[8]: Запись if с несколькими || или &&
От: Erop Россия  
Дата: 25.04.08 18:04
Оценка:
Здравствуйте, Сергей Туленцев, Вы писали:

СТ>Да ладно, это же элементарно. Он так делает, чтобы иметь возможность "выключать" отдельные куски условия простым однострочным комментарием. Я так, правда, не пишу, но зато в SQL скриптах очень часто делаю так:


Так понять хотя бы можно.
А просто редактировать ен рулит?

Ну типа copy-paste, оригинал комментим, а над копией изголяемся?
А если о системе контроля версий обратно вспомнить, то и от копипаста отказаться можно...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[2]: Не стреляйте в пианиста, он играет как умеет... :)
От: Erop Россия  
Дата: 25.04.08 18:14
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>VCS тут ни при чем. Я тоже часто так делаю, но по другой причине: так намного проще добавлять и удалять (комментировать) строки. Например, в Vim нажал «ddp» и две строки поменялись местами. И не приходится беспокоиться по поводу пунктуации.

А может того, найти удобный редактор?

RO>P. S. Низость моего падения не знает границ...

Ну все программируют как могут.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[4]: Ну что ж. Мастер класс, так мастер класс :)
От: Erop Россия  
Дата: 25.04.08 18:48
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Пусть у тебя:

RO>
RO>if(someQuiteLongCondition1 &&
RO>    someQuiteLongCondition2 &&
RO>    someQuiteLongCondition3)
RO>{
RO>}
RO>

RO>Как ты в своем любимом редакторе поменяешь местами второе и третье условия?
Давай у меня будет так, как обычно бывает у меня?
if( someQuiteLongCondition1 && someQuiteLongCondition2 && someQuiteLongCondition3 )
{
}
тогда не только в любимом, но вообще почти в любом я смогу сделать так (это если только с клавы):
1) перейти на начало строки и при помощи ctrl + -> встать курсором сюда:
if( someQuiteLongCondition1 |&& someQuiteLongCondition2 && someQuiteLongCondition3 )

2) Нажму дважды ctrl+shift+->
3) ctrl+X
4) дважды ctrl+->
5) ctrl+V

При некотором навыке это занимает сильно меньше секунды.


А теперь ты поясни зачем уметь быстро делать такую операцию, как обмен местами членов списков?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[5]: Ну что ж. Мастер класс, так мастер класс :)
От: Roman Odaisky Украина  
Дата: 25.04.08 20:44
Оценка:
Здравствуйте, Erop, Вы писали:

RO>>Как ты в своем любимом редакторе поменяешь местами второе и третье условия?

E>Давай у меня будет так, как обычно бывает у меня? :)
E>
if( someQuiteLongCondition1 && someQuiteLongCondition2 && someQuiteLongCondition3 )
E>{
E>}
E>
тогда не только в любимом, но вообще почти в любом я смогу сделать так (это если только с клавы):

E>1) перейти на начало строки и при помощи ctrl + -> встать курсором сюда:
if( someQuiteLongCondition1 |&& someQuiteLongCondition2 && someQuiteLongCondition3 )

E>2) Нажму дважды ctrl+shift+->
E>3) ctrl+X
E>4) дважды ctrl+->
E>5) ctrl+V

E>При некотором навыке это занимает сильно меньше секунды.


Естественно. Дело-то нехитрое. В правильных редакторах пп. 1—5 вообще делаются за O(1) — «f&d2W$P» ;-). Только песня совсем не о том.

E>


E>А теперь ты поясни зачем уметь быстро делать такую операцию, как обмен местами членов списков?

Переставлять надо не так уж часто. А вот закомментировать? Речь ведь о том, что работать с отдельными строками намного проще, чем с подстроками. Та же MSVS позволяет двумя клавишами — ^K^C — закомментировать строку. А подстроку еще надо выделить, да и многие стандарты кодирования запрещают /*—*/.
До последнего не верил в пирамиду Лебедева.
Re[7]: Запись if с несколькими || или &&
От: Roman Odaisky Украина  
Дата: 25.04.08 20:47
Оценка:
Здравствуйте, igna, Вы писали:

CC>>Да замените себе diff утилиту на ту, которая будет подсвечивать не только измененные строки но и что именно в строках изменилось.


I>На какую?


В фильме «Карты, деньги и два ствола» подробно рассказывалось, на какую именно.
До последнего не верил в пирамиду Лебедева.
Re[6]: Ну что ж. Мастер класс, так мастер класс :)
От: Erop Россия  
Дата: 26.04.08 00:35
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Переставлять надо не так уж часто. А вот закомментировать? Речь ведь о том, что работать с отдельными строками намного проще, чем с подстроками. Та же MSVS позволяет двумя клавишами — ^K^C — закомментировать строку. А подстроку еще надо выделить, да и многие стандарты кодирования запрещают /*—*/.


Обычно стандарты кодирования запрещають иметь закомментированный код...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[7]: Ну что ж. Мастер класс, так мастер класс :)
От: Cyberax Марс  
Дата: 26.04.08 01:44
Оценка:
Здравствуйте, Erop, Вы писали:

RO>>Переставлять надо не так уж часто. А вот закомментировать? Речь ведь о том, что работать с отдельными строками намного проще, чем с подстроками. Та же MSVS позволяет двумя клавишами — ^K^C — закомментировать строку. А подстроку еще надо выделить, да и многие стандарты кодирования запрещают /*—*/.

E>Обычно стандарты кодирования запрещають иметь закомментированный код...
Жестокие стандарты...
Sapienti sat!
Re[8]: Ну что ж. Мастер класс, так мастер класс :)
От: Erop Россия  
Дата: 26.04.08 03:07
Оценка:
Здравствуйте, Cyberax, Вы писали:

E>>Обычно стандарты кодирования запрещають иметь закомментированный код...

C>Жестокие стандарты...
Зато удобно читать из чего-то вроде NotePad или с распечатки.

Кстати, а зачем комментировать код, если есть CSV?
Комментарии по идее должны бы для читателя поясненя содержать, а не мусор всякий...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[6]: Ну что ж. Мастер класс, так мастер класс :)
От: sc Россия  
Дата: 26.04.08 04:31
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

>...Та же MSVS позволяет двумя клавишами — ^K^C — закомментировать строку. А подстроку еще надо выделить, да и многие стандарты кодирования запрещают /*—*/.


А у меня студия + виж. ассист позволяет одной *
У кого кроче/длиннее?
Re[8]: Запись if с несколькими || или &&
От: igna Россия  
Дата: 26.04.08 06:14
Оценка:
Здравствуйте, Erop, Вы писали:

I>>    const char * suitable_extensions[] = {
I>>        "lib",
I>>    };


E>Выделенное не совсем стандартно.


Что такое "не совсем"? Грамматика позволяет:

A.7 Declarators

. . .


initializer-clause:
        assignment-expression
        { initializer-list ,opt }
        { }

Re[2]: офф-топик
От: igna Россия  
Дата: 26.04.08 06:31
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Поэтому же я сильно не люблю сановские «} else {»: как закомментировать весь блок else, спрашивается?


Может я неверно тебя понял, но наверное так:

if (condition) {
    expression1;
    expression2;
} else {
//    expression3;
//    expression4;
}
Re[7]: Ну что ж. Мастер класс, так мастер класс :)
От: igna Россия  
Дата: 26.04.08 06:50
Оценка:
Здравствуйте, Erop, Вы писали:

E>Обычно стандарты кодирования запрещають иметь закомментированный код...


Вот с этим запретом я согласен. Но возможность быстро закомментировать код бывает нужна при тестировании и отладке.
Re[3]: Альтернатива
От: igna Россия  
Дата: 26.04.08 06:56
Оценка:
Те, кому не нравится слово false в начале, могут переместить его в конец:

if (
    s == "Беларусь" ||
    s == "Великобритания" ||
    s == "Германия" ||
    s == "Россия" ||
    s == "Украина" ||
    s == "Франция" ||
false)
Re[9]: Запись if с несколькими || или &&
От: sc Россия  
Дата: 26.04.08 07:54
Оценка:
Здравствуйте, igna, Вы писали:

I>Здравствуйте, sc, Вы писали:


sc>>Есть еще WinMerge (сам пользую и дома и на работе), делает, почти то же что и арахис, в том числе и подсвечивает изменения в строке. Да еще и бесплатна.


I>Порадовали начинающиеся с запятой строки на скриншоте.

Рад что понравилась
Я тоже так пишу, когда членов класса много. А когда мало в строчку. Также и с if'ами (когда короткие — в строчку).
Мне только не понятно зачем false?
Re[8]: Ну что ж. Мастер класс, так мастер класс :)
От: Erop Россия  
Дата: 26.04.08 08:39
Оценка:
Здравствуйте, igna, Вы писали:

E>>Обычно стандарты кодирования запрещають иметь закомментированный код...

I>Вот с этим запретом я согласен. Но возможность быстро закомментировать код бывает нужна при тестировании и отладке.
Ну при тестировании и отладке можно и
/* совершенно некашерными комментариями */
пользоваться
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[4]: Альтернатива
От: Erop Россия  
Дата: 26.04.08 08:43
Оценка:
Здравствуйте, igna, Вы писали:

I>
I>if (
I>false)
I>


Всё-таки альтернатива с str_find_one_of намного милее моему сердцу. Тем более, что обычно функцию str_find_one_of реализовывать не надо, а можжно воспользоваться каким -нибудь стандартным средством поиска в списке...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[8]: Запись if с несколькими || или &&
От: CreatorCray  
Дата: 26.04.08 08:51
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

CC>>>Да замените себе diff утилиту на ту, которая будет подсвечивать не только измененные строки но и что именно в строках изменилось.

I>>На какую?
RO>В фильме «Карты, деньги и два ствола» подробно рассказывалось, на какую именно.
Эээ... Это такая тонкая шутка юмора?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[10]: Запись if с несколькими || или &&
От: igna Россия  
Дата: 26.04.08 08:54
Оценка:
Здравствуйте, sc, Вы писали:

sc>Мне только не понятно зачем false?


Чтобы первое и последнее подусловия не отличались от остальных. Здесь
Автор: igna
Дата: 26.04.08
.
Re[5]: Альтернатива
От: igna Россия  
Дата: 26.04.08 08:58
Оценка:
Здравствуйте, Erop, Вы писали:

E>Всё-таки альтернатива с str_find_one_of намного милее моему сердцу. Тем более, что обычно функцию str_find_one_of реализовывать не надо, а можжно воспользоваться каким -нибудь стандартным средством поиска в списке...


Ты лучше нарисуй. Эту милую сердцу альтернативу моему:

if (false
    || s == "Беларусь"
    || s == "Великобритания"
    || s == "Германия"
    || s == "Россия"
    || s == "Украина"
    || s == "Франция"
)
Re[9]: Запись if с несколькими || или &&
От: Erop Россия  
Дата: 26.04.08 09:25
Оценка:
Здравствуйте, CreatorCray, Вы писали:

RO>>В фильме «Карты, деньги и два ствола» подробно рассказывалось, на какую именно.

CC>Эээ... Это такая тонкая шутка юмора?
Я, кстати, её не понял
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[11]: Запись if с несколькими || или &&
От: Erop Россия  
Дата: 26.04.08 09:26
Оценка:
Здравствуйте, igna, Вы писали:

I>Чтобы первое и последнее подусловия не отличались от остальных. Здесь
Автор: igna
Дата: 26.04.08
.

А это для чео?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[6]: Альтернатива
От: Erop Россия  
Дата: 26.04.08 09:32
Оценка:
Здравствуйте, igna, Вы писали:

I>Ты лучше нарисуй. Эту милую сердцу альтернативу моему:


I>
I>if (false
I>    || s == "Беларусь"
I>    || s == "Великобритания"
I>    || s == "Германия"
I>    || s == "Россия"
I>    || s == "Украина"
I>    || s == "Франция"
I>)
I>


1) Я уже рисовал тебе тут пример с функцией str_find_one_of
2) В реальности, у нормальных пацанов, это всё выглядит примерно так:
config.Load();
// ... тут многочего делается, входим в функции и т. д.
if( config.GetCountries().Find( s ) != NotFound ) {
    // тут обрабатываем s
}

3) Я вообще не понимаю подхода. Я понимаю если бы ты пропагандировал патч или плагин к какой-то популярной IDE, который позволяет удобно смотреть дифф и редактировать списки, записанные естественным способом, а не издевался бы над мозгом читателей твоего кода...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[7]: Альтернатива
От: igna Россия  
Дата: 26.04.08 11:11
Оценка:
Здравствуйте, netch80, Вы писали:

N>Зачем козе баян? При нормальном проектировании эти списки никто не хранит напрямую в коде, они подгружаются из ресурсных конфигов.


Верно. Но у такого подхода есть и недостатки. Например надо обрабатывать ситуацию, когда файл не найден. Или еще иногда нужно запретить пользователю изменять список. Не думаю, что предлагаемый тобой подход является предпочтительным в 100% всех случаев. Бывает, что предпочтительнее хранить список в исходном коде.
Re[10]: Ну что ж. Мастер класс, так мастер класс :)
От: Erop Россия  
Дата: 26.04.08 14:18
Оценка:
Здравствуйте, Left2, Вы писали:

E>>Кстати, а зачем комментировать код, если есть CSV?

L>Ну как сказать. Одно дело увидеть закомментированный код с комментарием типа "а вот так вот — не работает" или "было так, но так было капец как медленно" и другое дело — догадаться для этого полезть в лог VCS. Я всё же за закомментированный код. Естественно, клинические случаи (типа не удалять код вообще ) не рассматриваем.

А словами/в сопроводительно йдокументации описать принятые решения не судьба?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[7]: Запись if с несколькими || или &&
От: Erop Россия  
Дата: 26.04.08 20:27
Оценка:
Здравствуйте, Alex Alexandrov, Вы писали:

AA>Легкий офф-топик: имена типа patterns_count с множественным числом существительного, стоящего перед другим существительным, с головой выдают интерфейсы написанные людьми, для которых английский — не родной. И как правило — русскими. Очень для нас это ненатурально, но тем не менее — правильно будет pattern_count. Аналогично: getNodeCount (не getNodesCount), getModuleArray (не getModulesArray) и т.п.


Это не английский. Это глупый довольно сопи-пасте. типа ХХХ и ХХХ_count
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[4]: С++ всё ещё *слишком простой и понятный*? :)))
От: Erop Россия  
Дата: 27.04.08 10:08
Оценка:
Здравствуйте, igna, Вы писали:

I>
I>logical-or-expression:
I>        logical-and-expression
I>        logical-and-expression ||
I>        logical-or-expression || logical-and-expression
I>


Не, ЛЮДИ! Вам правда кажется, что синтаксис С++ всё ещё *слишком простой и понятный*?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[4]: А зачем подчёркивать различия? :)
От: Erop Россия  
Дата: 27.04.08 10:10
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:


AA>>Это нелегальный C++ код.

RO>Причем здесь C++?!
+1
Насколько я понимаю, первоначально обсуждался C#. Но и в С/С++ есть схожие обстоятельства...
Так что то, что это "не легальный С++" код, тоже не совсем не в тему сообщение IMHO
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[4]: И совсем не для того
От: Alex Alexandrov США  
Дата: 27.04.08 13:35
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Здравствуйте, Alex Alexandrov, Вы писали:


RO>>>Аналогично:


RO>>>
RO>>>enum SomeEnum
RO>>>{
RO>>>    value1,
RO>>>    value2, // <-- лопата
RO>>>};
RO>>>


AA>>Это нелегальный C++ код.


RO>Причем здесь C++?!


Хм, а почему не? Ты привел 3 примера, помеченных тагами "c" (заметь не c#). Второй пример использует boost::format. Третий — тоже явно на C++ похож. Явных указаний о языке ты не даешь. Здравая логика подсказала мне, что ты имеешь в виду C++ во всех трех случаях.

Просвети тогда, каким должен был быть ход моей мысли на самом деле?
It's kind of fun to do the impossible (Walt Disney)
Re[5]: И совсем не для того
От: Roman Odaisky Украина  
Дата: 27.04.08 14:07
Оценка:
Здравствуйте, Alex Alexandrov, Вы писали:

RO>>>>
RO>>>>enum SomeEnum
RO>>>>{
RO>>>>    value1,
RO>>>>    value2, // <-- лопата
RO>>>>};
RO>>>>


AA>>>Это нелегальный C++ код.


RO>>Причем здесь C++?!


AA>Хм, а почему не? Ты привел 3 примера, помеченных тагами "c" (заметь не c#). Второй пример использует boost::format. Третий — тоже явно на C++ похож. Явных указаний о языке ты не даешь. Здравая логика подсказала мне, что ты имеешь в виду C++ во всех трех случаях.


AA>Просвети тогда, каким должен был быть ход моей мысли на самом деле?


:-)

Этот код соответствует стандарту C99 и (наверное) будет соответствовать C++09.

В любом случае, мы не обсуждаем конкретный язык, а только стиль, который подходит почти к любому языку программирования (кроме Python :-).
До последнего не верил в пирамиду Лебедева.
Re[5]: Обидны мне слова ваши, дяденька...
От: Erop Россия  
Дата: 27.04.08 14:34
Оценка:
Здравствуйте, rsn81, Вы писали:

R>Странные какие-то проблемы... ваша IDE не умеет автоматически форматировать текст кода?

В смысле? Если програмист изобразит что-то типа того, что обсуждается в этой ветке, то как автоформат текста мне поможет?
Я уж не говорю о том, что часто читаю код подчинённых не в IDE...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[6]: А зачем подчёркивать различия? :)
От: Erop Россия  
Дата: 27.04.08 14:39
Оценка:
Здравствуйте, Alex Alexandrov, Вы писали:


AA>Из двух других примеров Романа

AA>я решил (вполне ожидаемо), что мы обсуждаем С++.

IMHO обсуждаемые проблемы и идеи универсально применимы или непременимы в С/С++/С#...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[11]: Ну что ж. Мастер класс, так мастер класс :)
От: Cyberax Марс  
Дата: 27.04.08 14:43
Оценка:
Здравствуйте, Erop, Вы писали:

E>А словами/в сопроводительно йдокументации описать принятые решения не судьба?

А документация пишется тут же — в исходном коде с помощью Doxygen/JavaDoc.
Sapienti sat!
Re[12]: Ну что ж. Мастер класс, так мастер класс :)
От: Erop Россия  
Дата: 27.04.08 14:44
Оценка:
Здравствуйте, Cyberax, Вы писали:

E>>А словами/в сопроводительно йдокументации описать принятые решения не судьба?

C>А документация пишется тут же — в исходном коде с помощью Doxygen/JavaDoc.

Тем хуже загрязнять комменты ненужным кодом...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[12]: Ну что ж. Мастер класс, так мастер класс :)
От: Erop Россия  
Дата: 27.04.08 14:45
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>А документация пишется тут же — в исходном коде с помощью Doxygen/JavaDoc.

Кстати, в сложных, наукоёмких проектах такой подход совершенно не работает. В таких проектах документация -- довольно сложные и свосем предментыне статьи
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[13]: Ну что ж. Мастер класс, так мастер класс :)
От: Cyberax Марс  
Дата: 27.04.08 14:55
Оценка:
Здравствуйте, Erop, Вы писали:

C>>А документация пишется тут же — в исходном коде с помощью Doxygen/JavaDoc.

E>Тем хуже загрязнять комменты ненужным кодом...
Это почему? Для реализации — вполне нормально. Документируется интерфейс и важные для его пользователя детали. Внутренний код документировать обычно не обязательно — его проще и удобнее просто посмотреть.

Да, и к общей архитектурной документации это не относится — она вообще идёт отдельно и к коду не привязана.
Sapienti sat!
Re[6]: Обидны мне слова ваши, дяденька...
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 27.04.08 15:11
Оценка:
Здравствуйте, Erop, Вы писали:

E>В смысле? Если програмист изобразит что-то типа того, что обсуждается в этой ветке, то как автоформат текста мне поможет?

E>Я уж не говорю о том, что часто читаю код подчинённых не в IDE...
Речь о том, что вместо того, чтобы инспектировать код подчиненных на наличие нестандартного стиля форматирования, можно просто контролировать использование единой настройки автоформатирования, которую также хранить в системе контроля версий.
Re[7]: Обидны мне слова ваши, дяденька...
От: Erop Россия  
Дата: 27.04.08 15:21
Оценка:
Здравствуйте, rsn81, Вы писали:

R>Речь о том, что вместо того, чтобы инспектировать код подчиненных на наличие нестандартного стиля форматирования, можно просто контролировать использование единой настройки автоформатирования, которую также хранить в системе контроля версий.


Код инспектируется не заради проверки форматирования. А заради контроля и для дальнейшего развития. Просто когда в коде есть "художества" это затрудняет работу с ним.

Как наличие конструкции вроде
if( false
    || cond1
    || cond2
) {
}
может быть скомпенсированно настройками автоформатера я не понимаю.
Ещё я не понимаю сути проблемы. Какие проблемы всем соблюдать стандарт кодирования? Если ты не в состоянии обеспечить даже такую ерунду, как отступы, то как ты вообще можешь работать в команде?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[14]: Ну что ж. Мастер класс, так мастер класс :)
От: Erop Россия  
Дата: 27.04.08 15:22
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Это почему? Для реализации — вполне нормально. Документируется интерфейс и важные для его пользователя детали. Внутренний код документировать обычно не обязательно — его проще и удобнее просто посмотреть.

Ну, то есть тебе кажется нормальным, например, если в комментах к интерфейсу будут закомментированные ошмётки четырёх предыдущих его версий?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[8]: Обидны мне слова ваши, дяденька...
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 27.04.08 15:40
Оценка:
Здравствуйте, Erop, Вы писали:

E>Код инспектируется не заради проверки форматирования. А заради контроля и для дальнейшего развития. Просто когда в коде есть "художества" это затрудняет работу с ним.

Эти художества может инспектировать и не допускать алгоритм.

E>Как наличие конструкции вроде
if( false
E>    || cond1
E>    || cond2
E>) {
E>}
может быть скомпенсированно настройками автоформатера я не понимаю.

Ничего не надо компенсировать: когда программист жмет Save, код автоматически форматируется в соответствии с принятом в команде стилем. Конкретно у меня Resharper в Visual Studio или встроенный форматтер в Eclipse JDT в данном случае выстроит предикаты в одну строку и сделает перенос, только если строка превысит 78 символов. Это было настроено один раз, закинуто в SVN, указано всем пользоваться этой настройкой — и забыто.

E>Ещё я не понимаю сути проблемы. Какие проблемы всем соблюдать стандарт кодирования? Если ты не в состоянии обеспечить даже такую ерунду, как отступы, то как ты вообще можешь работать в команде?

Во-во, не понимаю ваши проблемы в упор.
Re[6]: Зачем друг друга мучить?
От: igna Россия  
Дата: 27.04.08 18:56
Оценка:
Здравствуйте, rsn81, Вы писали:

R>Ваш начальник был прав, непонятно только, почему он не смог объяснить вам причины.


Ну это было давно, но если не ошибаюсь главным аргументом было то, что конструктор якобы не должен бросать исключений.
Re[7]: Зачем друг друга мучить?
От: Erop Россия  
Дата: 27.04.08 20:59
Оценка:
Здравствуйте, igna, Вы писали:

I>Ну это было давно, но если не ошибаюсь главным аргументом было то, что конструктор якобы не должен бросать исключений.

Это заваит от того, в каком случае бросает исключение конструктор. Если часто, то н едолжен.
А ещё "давно" было много реализаций С++, на которых исключения действительно было лучше не бросать
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[9]: Обидны мне слова ваши, дяденька...
От: Alex Alexandrov США  
Дата: 28.04.08 04:44
Оценка:
Здравствуйте, rsn81, Вы писали:

R>Здравствуйте, Alex Alexandrov, Вы писали:


R>Следование выбору единой IDE скорее решение конкретного человека, чем приказное наставление: человек выбирает, или ему кроме того, что с него требуют выполнения поставленных задач, еще и выделять время на форматирование кода в соответствии со стандартом команды — или использовать инструмент, который сделает это в фоне за него. Вместо того, чтобы тратить время на ручное упорядочивание бардака в условиях предоставленной мнительной свободы, мне кажется, стоит тратить время на работу.


Почему "ручное упорядочивание"? Есть масса способов сделать это автоматически. Возможностей Вима хватает с головой, да еще и остается. У Visual Studio возможности куда беднее. Есть, конечно, Visual Assist и прочие, но ведь их покупать надо.
It's kind of fun to do the impossible (Walt Disney)
Re[13]: Ну что ж. Мастер класс, так мастер класс :)
От: fmiracle  
Дата: 28.04.08 05:09
Оценка:
Здравствуйте, Erop, Вы писали:

C>>А документация пишется тут же — в исходном коде с помощью Doxygen/JavaDoc.

E>Кстати, в сложных, наукоёмких проектах такой подход совершенно не работает. В таких проектах документация -- довольно сложные и свосем предментыне статьи


К каждому методу??? Ой ли?

Может быть все же отдельная большая документация с подробными описаниями, которая все равно нужна, и общий reference по классам и методам, который как раз прекрасно генерится по JavaDoc?
Re[2]: Запись if с несколькими || или &&
От: igna Россия  
Дата: 28.04.08 05:50
Оценка:
Здравствуйте, fmiracle, Вы писали:

F>А не убьешься читать такую конструкцию?


Не надо убиваться, я ведь не утверждал, что if(false нужно использовать всегда.
Re[8]: Зачем друг друга мучить?
От: igna Россия  
Дата: 28.04.08 06:56
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, igna, Вы писали:


E>Это заваит от того, в каком случае бросает исключение конструктор. Если часто, то н едолжен.

А если часто, но не конструктор, а Initialize?

E>А ещё "давно" было много реализаций С++, на которых исключения действительно было лучше не бросать

Это был VC++ 6.0.
Re[8]: Зачем друг друга мучить?
От: igna Россия  
Дата: 28.04.08 07:03
Оценка:
Здравствуйте, rsn81, Вы писали:

R>Мимо. Единственный способ отменить создание объекта (а это достаточно часто нужно, при формировании некорректных входных данных) — выбросить из конструктора исключение. Насколько понял, вы пишете на Java — посмотрите конструкторы классов JDK, практически каждый бросает исключение в соответствующем случае.


Тогда это был C++. И почему-то было популярно создавать "пустой" объект и лишь затем заполнять его содержанием. Вот пример: CFileVersionInfo.
Re[9]: Зачем друг друга мучить?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 28.04.08 08:31
Оценка:
Здравствуйте, igna, Вы писали:

I>Здравствуйте, rsn81, Вы писали:


R>>Мимо. Единственный способ отменить создание объекта (а это достаточно часто нужно, при формировании некорректных входных данных) — выбросить из конструктора исключение. Насколько понял, вы пишете на Java — посмотрите конструкторы классов JDK, практически каждый бросает исключение в соответствующем случае.


I>Тогда это был C++. И почему-то было популярно создавать "пустой" объект и лишь затем заполнять его содержанием. Вот пример: CFileVersionInfo.


Это и сейчас "популярно" в том случае, если штатно предусматривается возможность создания группы объектов десериализацией потока. Тогда пустой конструктор создаёт "мёртвый", но готовый к принятию потокового представления объект.

Альтернативы этому подходу фактически нет. Можно, конечно, извращаться — построить частный (private) конструктор, который готовит к десериализации, и дружественную функцию, которая его вызывает с комплектом нужных аргументов. Но это то же с видом сбоку, если не сложнее.
The God is real, unless declared integer.
Re[10]: Зачем друг друга мучить?
От: igna Россия  
Дата: 28.04.08 09:46
Оценка:
Здравствуйте, netch80, Вы писали:

N>Это и сейчас "популярно" в том случае, если штатно предусматривается возможность создания группы объектов десериализацией потока. Тогда пустой конструктор создаёт "мёртвый", но готовый к принятию потокового представления объект.


Ну тогда это было популярнее, в том смысле, что кое-кто всегда выносил "реальную" инициализацию из конструктора. Просто на всякий случай, как в приведенном мной выше примере.
Re[10]: Обидны мне слова ваши, дяденька...
От: Roman Odaisky Украина  
Дата: 28.04.08 10:40
Оценка:
Здравствуйте, Alex Alexandrov, Вы писали:

R>>Следование выбору единой IDE скорее решение конкретного человека, чем приказное наставление: человек выбирает, или ему кроме того, что с него требуют выполнения поставленных задач, еще и выделять время на форматирование кода в соответствии со стандартом команды — или использовать инструмент, который сделает это в фоне за него. Вместо того, чтобы тратить время на ручное упорядочивание бардака в условиях предоставленной мнительной свободы, мне кажется, стоит тратить время на работу.


AA>Почему "ручное упорядочивание"? Есть масса способов сделать это автоматически. Возможностей Вима хватает с головой, да еще и остается. У Visual Studio возможности куда беднее. Есть, конечно, Visual Assist и прочие, но ведь их покупать надо.


Vim — это очень хороший текстовый редактор, но всё равно «d\t.pb\t(gse\t;» удобнее, чем «data.push_back(getSomeElement());».

P. S. Брам произносит его как «Фим».
До последнего не верил в пирамиду Лебедева.
Re[11]: Offtop: vim & Bram Moolenaar
От: Андрей Коростелев Голландия http://www.korostelev.net/
Дата: 28.04.08 11:12
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>P. S. Брам произносит его как «Фим».


К голландском звук 'v' произносится как нечто среднее между нашим 'ф' и 'в'.
-- Андрей
Re[9]: Зачем друг друга мучить?
От: Erop Россия  
Дата: 28.04.08 22:02
Оценка:
Здравствуйте, igna, Вы писали:

E>>Это заваит от того, в каком случае бросает исключение конструктор. Если часто, то н едолжен.

I>А если часто, но не конструктор, а Initialize?

Initialize, в отличии от конструктора, может вернуть результат.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[11]: Обидны мне слова ваши, дяденька...
От: Alex Alexandrov США  
Дата: 29.04.08 04:57
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Здравствуйте, Alex Alexandrov, Вы писали:


RO>Vim — это очень хороший текстовый редактор, но всё равно «d\t.pb\t(gse\t;» удобнее, чем «data.push_back(getSomeElement());».


Раскрытие аббревиатур типа gse в getSomeElement это фишка VisualAssist-а? Работает по принципу longest common sequence или по первым буквам такого_стиля, ТакогоСтиля и такогоСтиля?
It's kind of fun to do the impossible (Walt Disney)
Re[10]: Зачем друг друга мучить?
От: igna Россия  
Дата: 29.04.08 06:41
Оценка:
Здравствуйте, Erop, Вы писали:

E>Initialize, в отличии от конструктора, может вернуть результат.


Может. А еще может быть вызван несколько раз, что далеко не всегда имеет смысл и иногда приводит к необходимости предотвратить или каким-либо другим способом обработать эту ситуацию. Создаем себе проблему причем нередко на ровном месте, то есть там, где и конструктор работает вполне хорошо.

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

Опять кроме того, если смысл возвращения результата в сигнализации сбоя, то можно использовать статическую функцию Create, возвращающую 0, "если что".

А для того, чтобы использовать Initialize, и получить необходимость корректно поддерживать дополнительное ("пустое") состояние, и правильно реагировать на повторный вызов Initialize; нужны более веские аргументы чем необходимость что-то там вернуть.

Что еще важно, я не против такого подхода, я против того, чтобы его объявляли "подходом по умолчанию", тем более единственно верным подходом, тем более, чтобы указывали направление в сторону счастья подчиненным.

PS. Что касается конкретного рассказанного мной случая, то замечу, что претензий к бывшему моему руководитель у меня нет. В конце концов это был единственный случай за тот год или два, когда я был у него в подчинении, и ничего похожего на "из принципа стоять на своем" там не было.
Re[11]: Зачем друг друга мучить?
От: Erop Россия  
Дата: 29.04.08 08:39
Оценка:
Здравствуйте, igna, Вы писали:


I>PS. Что касается конкретного рассказанного мной случая, то замечу, что претензий к бывшему моему руководитель у меня нет. В конце концов это был единственный случай за тот год или два, когда я был у него в подчинении, и ничего похожего на "из принципа стоять на своем" там не было.


Ну так может и этотзапрт бы осмысленным в ваших условиях?
Сейчас, конечно, строочку так создавать не стоит, но вот элемент какой-то полиморфной иерархии -- очень даже
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[12]: Обидны мне слова ваши, дяденька...
От: Roman Odaisky Украина  
Дата: 30.04.08 14:23
Оценка:
Здравствуйте, Alex Alexandrov, Вы писали:

AA>Раскрытие аббревиатур типа gse в getSomeElement это фишка VisualAssist-а? Работает по принципу longest common sequence или по первым буквам такого_стиля, ТакогоСтиля и такогоСтиля?


Да. По первым буквам, насколько я помню. Я только один раз использовал Visual Assist.
До последнего не верил в пирамиду Лебедева.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.