форматирование кода
От: Философ Ад http://vk.com/id10256428
Дата: 06.08.12 18:04
Оценка: 2 (2)
перечитываю "Верёвка достаточной длинны, чтобы выстрелить себе в ногу"
остановился на форматировании исходников.

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

Почему?
блин, неужели это так сложно, долбануть лишний раз энтер, или пробел после запятой?

особенно усложняет жизнь линк: люди иногда просто мозгодробительные вещи иногда пишут.
блин, у меня вот это
Автор: vorona
Дата: 01.08.12
даже на экран не помещается.
Можно ведь вот такhttp://www.rsdn.ru/forum/dotnet/4827359.1.aspx писать!?

кстати, частенько этим страдают хорошие алгоритмисты


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

Это быстро научит трём вещам:
1) тому, как писать не надо
2) форматирование облегчает чтение и понимание кода
3) (хорошие, актуальные) комментарии — весьма ценный стаф

*) в сумме это научите отличать хорошее от плохого и ценить хорошее
Всё сказанное выше — личное мнение, если не указано обратное.
Re: форматирование кода
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.08.12 19:00
Оценка:
Здравствуйте, Философ, Вы писали:

Ф>однако товарищи программисты по прежнему пренебрегают абсолютно всеми рекомендациями,

Ф>притом не только в коде, но и в тексте (пример
Автор: -rsdn-
Дата: 19.07.12
).


Что-то я не понял юмора. По ссылке одна строчка кода — атрибут. Что там можно отформатировать то?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: форматирование кода
От: Baudolino  
Дата: 06.08.12 19:08
Оценка:
VD>Что-то я не понял юмора. По ссылке одна строчка кода — атрибут. Что там можно отформатировать то?
Там после него издевательство.
Re[3]: форматирование кода
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.08.12 19:58
Оценка:
Здравствуйте, Baudolino, Вы писали:

VD>>Что-то я не понял юмора. По ссылке одна строчка кода — атрибут. Что там можно отформатировать то?

B>Там после него издевательство.

Что? Причем тут форматирование то?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: форматирование кода
От: abibok  
Дата: 06.08.12 20:45
Оценка:
Поэтому мы используем automatic coding style enforcement, когда билд ломается если код не соответствует принятому стандарту. Все остальные средства, как то вордовский документ с описанием стандарта, уговоры и проработки нарушителей на митингах, споры о правильный и неправильных стандартах — не эффективны.
Re: форматирование кода
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 07.08.12 04:16
Оценка: :)
Здравствуйте, Философ, Вы писали:

Ф>Почему?

Ф>блин, неужели это так сложно, долбануть лишний раз энтер, или пробел после запятой?

Может, потому, что вопрос не в "долбануть энтер", а в эстетике текста? А представления о ней у всех разные.

Ф>кстати, частенько этим страдают хорошие алгоритмисты


Именно. Хороший алгоритмист видит красоту алгоритма, но ему нужна и красота текста кода.

Ф>мне иногда кажется, что было бы неплохо некоторых бывших студентов сразу садить на сопровождение,

Ф>но перед тем как им выдавать код, форматировать его вот так:

Ваша реакция показывает, что Вы вместо поиска причин заняты решением задачи "как бы посильнее наступить на больную мозоль".
The God is real, unless declared integer.
Re: форматирование кода
От: MTD https://github.com/mtrempoltsev
Дата: 07.08.12 12:50
Оценка: 10 (3) +1
Я студентов учил так:

1. Пишу код без выделения структуры отступами и переносами:

int x=0;std::vector<int> y;
for(int i=0;i!=y.size();++i)if(y[i]>100)++x;std::cout<<x;


2. Рядом его же с отступами:

int x = 0;
std::vector<int> y;

for (int i = 0; i != y.size(); ++i)
    if (y[i] > 100) ++x;

std::cout<<x;


— Всем понятно насколько важно форматирование?

2. Начинаю писать комментарии в коде, типа

int x = 0; // здесь будет количество книг дороже 100 рублей
std::vector<int> y; // y - это список со стоимостью книг

for (int i = 0; i != y.size(); ++i) // проходим по всему списку книг
    if (y[i] > 100) ++x; // если книга стоит больше 100 рублей увеличиваем счетчик

std::cout << x;


— Комментарии это хорошо?
— Да!

3. Переписываю код:

int CountBooksMoreExpensive(const BookList& books, int price)
{
    int count = 0;
    for (int i = 0; i != books.size(); ++i)
        if (books[i] > price) ++count;
    return count;
}

std::cout << CountBooksMoreExpensive(books, 100);


— А нужны ли комментарии, если код написан понятно?
Re[2]: форматирование кода
От: SV.  
Дата: 07.08.12 21:36
Оценка: -5
Здравствуйте, MTD, Вы писали:

MTD>3. Переписываю код:


MTD>
MTD>int CountBooksMoreExpensive(const BookList& books, int price)
MTD>{
MTD>    int count = 0;
MTD>    for (int i = 0; i != books.size(); ++i)
MTD>        if (books[i] > price) ++count;
MTD>    return count;
MTD>}

MTD>std::cout << CountBooksMoreExpensive(books, 100);
MTD>


MTD>- А нужны ли комментарии, если код написан понятно?


Типичный тяжеловесный устаревший код, читать который — то еще удовольствие. Я бы предпочел что-нибудь такое:

Console.Writeln(books.Count(b => b.Price > 100)); // Output 100+ USD books count.

Нужны ли тут комментарии? Я бы предпочел их видеть, поскольку функция-то точно не нужна.

P.S. В ветке про ООП отвечу завтра, если кто потерял.
Re: форматирование кода
От: Pzz Россия https://github.com/alexpevzner
Дата: 07.08.12 21:41
Оценка: -1
Здравствуйте, Философ, Вы писали:

Ф>Это быстро научит трём вещам:

Ф>1) тому, как писать не надо
Ф>2) форматирование облегчает чтение и понимание кода
Ф>3) (хорошие, актуальные) комментарии — весьма ценный стаф

Не, они решат, что именно так и надо писать.

Проблема, на самом деле, в отсутствии уважения к другим людям — тем бедолагам, которые будут этот код (или текст) читать. И решать ее, если это в принципе возможно, нужно через то место, через которое прививается уважение и прочие общечеловеческие ценности, а не через то, через которое прививаются технические навыки.
Re[3]: форматирование кода
От: minorlogic Украина  
Дата: 07.08.12 21:55
Оценка:
Здравствуйте, SV., Вы писали:

SV.>
SV.>Console.Writeln(books.Count(b => b.Price > 100)); // Output 100+ USD books count.
SV.>


И потеряли описание функции. Теперь из кода не видно что он делает , и надо хорошо вчитываться
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[2]: форматирование кода
От: мыщъх США http://nezumi-lab.org
Дата: 07.08.12 23:31
Оценка: :)))
Здравствуйте, MTD, Вы писали:

MTD>Я студентов учил так:


MTD>1. Пишу код без выделения структуры отступами и переносами:

MTD>2. Рядом его же с отступами:
MTD>- Всем понятно насколько важно форматирование?
студентом никогда не был, а теперь уже и не буду, но малым сапом дорос до архитектора и хочу сказать, что первый код я читаю быстрее второго, т.к. банально меньше движений глазами. вам никогда не рассказывали как читал книги владимир ильич ленин? странно. должны были рассказывать. ваш код (второй пример) напоминает реферат студентов, набранный 12 кеглем с двойным междустрочным интервалом и стилем "новый абзац на новой странице". помилуйте, хорошего в меру.

если следовать вашим рекомендациям, то программа в 1,000 строк запросто превратится в программу в 10,000 строк. на хрена тянуть код по вертикали?! ааа... понимаю... потому что вы листинги распечатываете на принтере. а у нормальных людей широкоугольные монтиторы и главное -- вместить единицу смыслового блока на экран. что такое "единица смыслового блока" пояснять не буду, т.к. это зависит от, но общий смысл должен быть ясен.

MTD>2. Начинаю писать комментарии в коде, типа

MTD>int x = 0; // здесь будет количество книг дороже 100 рублей
MTD>std::vector<int> y; // y — это список со стоимостью книг
MTD>- Комментарии это хорошо?
MTD>- Да!
в индустрии студентов быстро научат сначала писать документацию к еще несуществующему коду на английском языке, а после всех утверждений и согласований воплощать ее в код. по сути документация и есть комментарий.

кстати, комментарий у вас не правильный. "кол-во <имя_сущности_1>, дороже <пороговый_уровень> <валюта>". но вообще, если абстрагироваться, то в комментах нужно написать, что считаем объекты, значение которых зашкалило. при повторном использовании кода такой комментарий не поставит в тупик если вы воткнете его в телеметрическую систему, считающую сколько раз в году температура падала ниже нуля по фаренгейту.

MTD>3. Переписываю код:

MTD>int CountBooksMoreExpensive(const BookList& books, int price)
кошмар. немедленно учить английский. а вслед за английским -- программирование. извините, но это код на бейские. потому что только на бейсике повторное использование кода не предусматривалось в принципе (имеется ввиду ранний бейскик). повторяю еще раз -- данный код не имеет никакой "книжкой" специфики и может считать хоть огурцы, хоть пятна на солнце. в первородном виде (где у вас был x и y) никаких проблем не возникало. а после "перестройки" код стал неюзабельным.

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

CountBooksMoreExpensive -- это в какой разведшколе так учат? вам там не говорили, что есть такое понятие как threshold level ? а еще в более общем плане это даже не пороговый уровень, а соответствие критерию или критериям. код может меняться и обрастать новыми критериями, в которую входит не только цена, но еще и спец налог или таможня или историческая стоимость. а у вас имя функции жестко закодировано и эта функция уже вероятно попала в документацию и вызывается из 100500 мест. и теперь вы уже вынуждены писать комменты и объяснять, что в силу исторических причин имя не отражает сущности...

смотрите в корень. в корне что? в корне не цена. в корне вернуть кол-во элементов списка, отвечающих некотором критериям, причем эти критерии хардкодить может только идиот. причем хронический. нормальные люди задают критерии в виде текстовой строки (а в реальности для этих целей используются скрипты или языки запросов).

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

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

у функции, вычисляющее значение пи, может и должно быть имя pi, потому что pi оно даже на северном полюсе pi, а не sin. а CountBooksMoreExpensive это пример того как не нужно называть функции. именно такие имена и порождают необходимость в постоянном рефракторинге.

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

MTD>- А нужны ли комментарии, если код написан понятно?

когда вижу такой код, то ищу мыло и веревку.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[3]: форматирование кода
От: Трололоша  
Дата: 08.08.12 00:17
Оценка:
Здравствуйте, мыщъх, Вы писали:

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

А понимаешь что он делает с какой скоростью?
Прочитать мало, надо ещё правильно его распарсить. А когда каша на экране то куда проще пропустить какую нибудь деталь.

М>главное -- вместить единицу смыслового блока на экран.

Чего? Тебе за единицы блоков которые влазят на экран платят что ли? inverse-индусский код?

М> что такое "единица смыслового блока" пояснять не буду, т.к. это зависит от, но общий смысл должен быть ясен.

В данном случае это называется каша.

MTD>>- А нужны ли комментарии, если код написан понятно?

М>когда вижу такой код, то ищу мыло и веревку.
Найди уже скорее. Внеси свой вклад в улучшение метрики среднего качества кода.
... << RSDN@Home>>
Да, йа зелёный тролль!
Re[4]: форматирование кода
От: мыщъх США http://nezumi-lab.org
Дата: 08.08.12 00:48
Оценка:
Здравствуйте, Трололоша, Вы писали:

Т>Здравствуйте, мыщъх, Вы писали:


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

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

Т> Прочитать мало, надо ещё правильно его распарсить.

Т> А когда каша на экране то куда проще пропустить какую нибудь деталь.
там нечего пропускать. код читается влет. а вот пример кода, который читается только со второго повтора:

for ( code = GetDebuggerEvent(WFNE_ANY|WFNE_CONT, -1); // resume
        code > 0;
        code = GetDebuggerEvent(WFNE_ANY, -1) )
  {
    r_eip = GetEventEa();
    if ( r_eip >= tea1 && r_eip < tea2 )
      break;
  }


кстати, код взят отсюда:
http://www.hex-rays.com/products/ida/debugger/scriptable.shtml

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

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

М>>главное -- вместить единицу смыслового блока на экран.

Т>Чего? Тебе за единицы блоков которые влазят на экран платят что ли? inverse-индусский код?
мне платят фиксированную зарплату вообще-то.

М>> что такое "единица смыслового блока" пояснять не буду, т.к. это зависит от, но общий смысл должен быть ясен.

Т>В данном случае это называется каша.
это не каша. "единица смыслового блока" это то, что воспринимается целостно и pageup/pagedown утомляют, особенно когда это ssh на маковкской клаве.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[3]: форматирование кода
От: MTD https://github.com/mtrempoltsev
Дата: 08.08.12 06:03
Оценка: +1
Здравствуйте, мыщъх, Вы писали:

М>первый код я читаю быстрее второго, т.к. банально меньше движений глазами. вам никогда не рассказывали как читал книги владимир ильич ленин?


Я готов вам поверить, что вы талантлив как Ленин, но на одного Ленина 1 000 000 (кстати так лучше, чем 1000000?) не столь одаренных, в числе которых и я, так что для меня первый код — непонятная каша.

М>если следовать вашим рекомендациям, то программа в 1,000 строк запросто превратится в программу в 10,000 строк. на хрена тянуть код по вертикали?!


Чтобы мог прочесть и понять обычный человек.

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


Описание интерфейса != комментарии в коде

М>кстати, комментарий у вас не правильный. "кол-во <имя_сущности_1>, дороже <пороговый_уровень> <валюта>". но вообще, если абстрагироваться, то в комментах нужно написать, что считаем объекты, значение которых зашкалило. при повторном использовании кода такой комментарий не поставит в тупик если вы воткнете его в телеметрическую систему, считающую сколько раз в году температура падала ниже нуля по фаренгейту.


Уммм, копипаст — нравится (интонацией Бората)!

MTD>>3. Переписываю код:

MTD>>int CountBooksMoreExpensive(const BookList& books, int price)
М>кошмар. немедленно учить английский. а вслед за английским -- программирование. извините, но это код на бейские. .........................

Чисто для справки — код:
1. Для студентов
2. Студентов русскоязычных

Пассажи, про treshold level и обобщение кода вообще порадовали, вы в школьных задачах, не спрашивали зачем человек вышел из точки А в точку Б? Еще вот похожий подход
Автор: Handie
Дата: 22.06.12
Re[5]: форматирование кода
От: Философ Ад http://vk.com/id10256428
Дата: 08.08.12 06:38
Оценка: +1 -1
Здравствуйте, мыщъх, Вы писали:

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


М>
М>for ( code = GetDebuggerEvent(WFNE_ANY|WFNE_CONT, -1); // resume
М>        code > 0;
М>        code = GetDebuggerEvent(WFNE_ANY, -1) )
М>  {
М>    r_eip = GetEventEa();
М>    if ( r_eip >= tea1 && r_eip < tea2 )
М>      break;
М>  }

М>

Это злоупотребление структурой цикла for в C-подобных языках — цикл while, втиснутый в заголовок цикла for.
Такое написание нарушает последовательное чтение кода.

я бы написал вот так:

code = GetDebuggerEvent(WFNE_ANY|WFNE_CONT, -1);
while(code > 0)
{
    r_eip = GetEventEa();
    
    jumpedToRange = r_eip >= tea1 && r_eip < tea2;

    if ( jumpedToRange )
      break;

    code = GetDebuggerEvent(WFNE_ANY, -1);
}
Всё сказанное выше — личное мнение, если не указано обратное.
Re[4]: форматирование кода
От: SV.  
Дата: 08.08.12 06:40
Оценка:
Здравствуйте, minorlogic, Вы писали:

SV.>>
SV.>>Console.Writeln(books.Count(b => b.Price > 100)); // Output $100+ book count.
SV.>>


В комменте s лишняя. На ночь писать не надо было.

M>И потеряли описание функции. Теперь из кода не видно что он делает , и надо хорошо вчитываться


Во-первых, название функции, может быть? Во-вторых, давайте на каждый чих по функции будем заводить. Где надо и не надо. Ради названия. Вы тоже студентов учите, или как?
Re[6]: форматирование кода
От: Centaur Россия  
Дата: 08.08.12 07:03
Оценка: +1
Здравствуйте, Философ, Вы писали:

М>>for ( code = GetDebuggerEvent(WFNE_ANY|WFNE_CONT, -1); // resume
М>>        code > 0;
М>>        code = GetDebuggerEvent(WFNE_ANY, -1) )
М>>  {
М>>    r_eip = GetEventEa();
М>>    if ( r_eip >= tea1 && r_eip < tea2 )
М>>      break;
М>>  }

Ф>Это злоупотребление структурой цикла for в C-подобных языках — цикл while, втиснутый в заголовок цикла for.
Ф>Такое написание нарушает последовательное чтение кода.

Не согласен. С одного взгляда на заголовок цикла я вижу, что цикл перебирает некие debugger event’ы, и верю, что он делает это правильно (даже не заглядывая в мануал на GetDebuggerEvent). Я также могу быть уверен, что добавление внутрь тела цикла оператора continue не сломает логику перебора (как будет в варианте с while).

С другой стороны, мне не нравятся чай-один и чай-два, при попадании r_eip между которыми цикл завершается. И ещё я, вероятно, предпочёл бы, чтобы code и r_eip были локальными переменными, а r_eip ещё и константой. И вообще логика попадания в интервал, да и сам интервал адресов — хорошие кандидаты в сущности предметной области.

for (long code = GetDebuggerEvent(WFNE_ANY|WFNE_CONT, -1)
     code > 0;
     code = GetDebuggerEvent(WFNE_ANY, -1))
{
    if (breakpoint_range.contains(GetEventEa())
        break;
}
Re[5]: форматирование кода
От: minorlogic Украина  
Дата: 08.08.12 07:12
Оценка:
Здравствуйте, SV., Вы писали:

SV.>Во-первых, название функции, может быть? Во-вторых, давайте на каждый чих по функции будем заводить.


хорошая привычка.
SV.> Где надо и не надо.
где надо
SV.>Ради названия.
и ради названия тоже, это способ повышения читабельности.
SV.> Вы тоже студентов учите, или как?
нет
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[7]: форматирование кода
От: Философ Ад http://vk.com/id10256428
Дата: 08.08.12 07:26
Оценка:
Здравствуйте, Centaur, Вы писали:

C>Я также могу быть уверен, что добавление внутрь тела цикла оператора continue не сломает логику перебора (как будет в варианте с while).


continue в этом цикле (да и вообще, в таких циклах) не к месту — цикл здесь служит конкретной цели.

C>С другой стороны, мне не нравятся чай-один и чай-два

+1

C>И ещё я, вероятно, предпочёл бы, чтобы code и r_eip были локальными переменными,

+1

C> а r_eip ещё и константой.

??

C> да и сам интервал адресов — хорошие кандидаты в сущности предметной области.

C> breakpoint_range.contains()

На это я тоже обратил внимание, но я не знаю возможностей этого скриптового языка, поэтому не стал это предлагать.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[3]: форматирование кода
От: Философ Ад http://vk.com/id10256428
Дата: 08.08.12 07:28
Оценка:
Здравствуйте, SV., Вы писали:

SV.>
SV.>Console.Writeln(books.Count(b => b.Price > 100)); // Output 100+ USD books count.
SV.>


функциональный стиль я читаю и понимаю хуже (медленнее), чем императивный.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[5]: форматирование кода
От: vdimas Россия  
Дата: 08.08.12 09:33
Оценка:
Здравствуйте, SV., Вы писали:

SV.>Во-первых, название функции, может быть? Во-вторых, давайте на каждый чих по функции будем заводить.


Это ни разу не смертельно.
Re[5]: форматирование кода
От: Трололоша  
Дата: 08.08.12 11:33
Оценка:
Здравствуйте, мыщъх, Вы писали:

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

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

Т>> Прочитать мало, надо ещё правильно его распарсить.

Т>> А когда каша на экране то куда проще пропустить какую нибудь деталь.
М>там нечего пропускать. код читается влет.
Я такое обычно переформатирую в читабельный вид перед тем как браться читать.

М>и писал его выдающийся человек у которого есть чему поучиться.

У тебя когда то тоже можно было чему поучиться. Теперь же, увы.

М>>>главное -- вместить единицу смыслового блока на экран.

Т>>Чего? Тебе за единицы блоков которые влазят на экран платят что ли? inverse-индусский код?
М>мне платят фиксированную зарплату вообще-то.
Тебе её платят за "вместить единицу смыслового блока на экран" или за работающий, понятный и поддерживаемый код?
Впрочем ты ж помнится сам говорил что в production код не пишешь.
... << RSDN@Home>>
Да, йа зелёный тролль!
Re: форматирование кода
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 08.08.12 11:52
Оценка:
Здравствуйте, Философ, Вы писали:

Ф>Почему?

Ф>блин, неужели это так сложно, долбануть лишний раз энтер, или пробел после запятой?

Это нужно делать тулом а не поднимать вой.

Ф>особенно усложняет жизнь линк: люди иногда просто мозгодробительные вещи иногда пишут.

Ф>блин, у меня вот это
Автор: vorona
Дата: 01.08.12
даже на экран не помещается.

Ф>Можно ведь вот такhttp://www.rsdn.ru/forum/dotnet/4827359.1.aspx писать!?

Ф>кстати, частенько этим страдают хорошие алгоритмисты


Ну им то и так понятно
Re[6]: форматирование кода
От: мыщъх США http://nezumi-lab.org
Дата: 08.08.12 13:04
Оценка:
Здравствуйте, Трололоша, Вы писали:

Т>Здравствуйте, мыщъх, Вы писали:


Т>Просто подсчёт чего то без контекста не несёт смысловой нагрузки. Надо понять какая задача тут решается, а не просто "считаем циферки".

это только в первом классе задачки на конкретных примерах. у маши была одна книга, а у вовочки две. потом книги превращаются в a*x^2 + b*x + c = 0.
или вы хотите сказать, что если магазин начнет торговать не только книгами, но и дисками, то половину кода придется переписывать? ну-ну...

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

М>>там нечего пропускать. код читается влет.

Т>Я такое обычно переформатирую в читабельный вид перед тем как браться читать.
а потом diff'ы с ума сходят, когда пытаешься сравнить две версии одного и того же файла.

Т> Тебе её платят за "вместить единицу смыслового блока на экран"

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

Т>Впрочем ты ж помнится сам говорил что в production код не пишешь.

я говорил, что не девелопер в том смысле, что работаю в ресерче. в продакшен пишу, конечно.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[4]: форматирование кода
От: SV.  
Дата: 08.08.12 15:40
Оценка:
Здравствуйте, Философ, Вы писали:

SV.>>
SV.>>Console.Writeln(books.Count(b => b.Price > 100)); // Output 100+ USD books count.
SV.>>


Ф>функциональный стиль я читаю и понимаю хуже (медленнее), чем императивный.


Функционально здесь задан исключительно предикат, а он и есть функция. Способы задавать его иначе, в частности, через объекты, неестественны и обычно обусловлены ограничениями ЯП.

Что касается функции, лучше Криса мне не написать:

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


Только слово "кошмар" я бы написал с большой буквы и добавил после него !!!!111
Re[6]: форматирование кода
От: SV.  
Дата: 08.08.12 15:44
Оценка:
Здравствуйте, vdimas, Вы писали:

SV.>>Во-первых, название функции, может быть? Во-вторых, давайте на каждый чих по функции будем заводить.


V>Это ни разу не смертельно.


Когда у вас большой проект, и в нем 100500 разкопипащенных функций по суммированию 1) книжек дороже заданной суммы; 2) огурцов; 3) пятен на солнце, это-таки смертельный номер.
Re[8]: форматирование кода
От: Centaur Россия  
Дата: 08.08.12 17:01
Оценка:
Здравствуйте, Философ, Вы писали:

C>>Я также могу быть уверен, что добавление внутрь тела цикла оператора continue не сломает логику перебора (как будет в варианте с while).

Ф>continue в этом цикле (да и вообще, в таких циклах) не к месту — цикл здесь служит конкретной цели.

Не очевидно. В один прекрасный момент мы решаем, что текущий элемент нам больше не интересен, и надо перейти к следующему. Или мы пишем сложное условие фильтрации и, чтобы не городить монструозное выражение с ?: или аналогами, разбиваем его на несколько if (…) continue, после которых идёт собственно обработка.


C>> а r_eip ещё и константой.

Ф>??

for (…)
{
    const long r_eip = GetEventEa();
    …do something…(r_eip);
}


Ф>[…] я не знаю возможностей этого скриптового языка, поэтому не стал это предлагать.


Ой, а я не заметил, что это скриптовый язык — выше по треду был C++ и тэгом [ccode] оформлено.

В случае доморощенного скриптового языка локальных переменных в цикле и в теле цикла может принципиально не быть. Соображение о continue остаётся.
Re[5]: форматирование кода
От: Философ Ад http://vk.com/id10256428
Дата: 08.08.12 18:11
Оценка:
Здравствуйте, мыщъх, Вы писали:

а как бы ты сам отформатировал, или написал этот пример?

М>
М>for ( code = GetDebuggerEvent(WFNE_ANY|WFNE_CONT, -1); // resume
М>        code > 0;
М>        code = GetDebuggerEvent(WFNE_ANY, -1) )
М>  {
М>    r_eip = GetEventEa();
М>    if ( r_eip >= tea1 && r_eip < tea2 )
М>      break;
М>  }
М>
Всё сказанное выше — личное мнение, если не указано обратное.
Re[7]: форматирование кода
От: Трололоша  
Дата: 08.08.12 18:36
Оценка:
Здравствуйте, мыщъх, Вы писали:

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

Вообще то изначально обсуждали примеры форматирования кода.

М>>>там нечего пропускать. код читается влет.

Т>>Я такое обычно переформатирую в читабельный вид перед тем как браться читать.
М>а потом diff'ы с ума сходят, когда пытаешься сравнить две версии одного и того же файла.
А всё, есть только переформатированная версия, которая пойдёт в репу с комментом "codestyle fixed"

Т>> Тебе её платят за "вместить единицу смыслового блока на экран"

Т>> или за работающий, понятный и поддерживаемый код?
М>к моему коду претензий нет. работает на куче платформ и живет своей жизнью.
Кто кроме тебя его правит?
... << RSDN@Home>>
Да, йа зелёный тролль!
Re[2]: форматирование кода
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 08.08.12 20:30
Оценка:
Здравствуйте, abibok, Вы писали:

A>Все остальные средства, как то вордовский документ с описанием стандарта, уговоры и проработки нарушителей на митингах, споры о правильный и неправильных стандартах — не эффективны.


А у нас как то все без спецсредств единого стиля более менее придерживаются. Приходится только новичков какое то время поправлять.
... << RSDN@Home 1.2.0 alpha 5 rev. 61 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[8]: форматирование кода
От: мыщъх США http://nezumi-lab.org
Дата: 08.08.12 22:14
Оценка:
Здравствуйте, Трололоша, Вы писали:

Т>Здравствуйте, мыщъх, Вы писали:


Т>>>Я такое обычно переформатирую в читабельный вид перед тем как браться читать.

М>>а потом diff'ы с ума сходят, когда пытаешься сравнить две версии одного и того же файла.
Т>А всё, есть только переформатированная версия, которая пойдёт в репу с комментом "codestyle fixed"
а следом за ней пойдет ваше мужкое достоинство. лесом. извините за прямоту, но случайно не на мусорную корзину работаете? вполне типичная ситуация. вася написал файл foo.c, я его форкнул в bar.c и добавил кучу полезного функционала, затем вы переформатировали foo.c с комментом "codestyle fixed", попутно пофиксив пару багов и добавив тройку новых фич. и тут вася решил смержить foo.c и мой bar.c, т.к. ему мои плюшки по вкусу. вася делает diff, слегка охреневает от ваших комментов и потому делает бранч baz.c, где мержит свой старый foo.c и мой независимый bar.c, после чего вам нужно смержить baz.c, чтобы внести ваш багфикс и ваши фичи.


М>>к моему коду претензий нет. работает на куче платформ и живет своей жизнью.

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

если вы переформатируете мой код и у вас окажутся права на коммит, то я пожму плечами и сделаю свой форк, где у вас уже прав не будет и дальше дело за народом за каким из двух бранчей следовать.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[9]: форматирование кода
От: Трололоша  
Дата: 09.08.12 01:15
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>вася написал файл foo.c

Если он его написал в том стиле, который ты тут приводил то сразу после обнаружения foo.c Вася получит скипидарную клизму, чтоб больше так не делал и следовал принятым code standards. После чего будет назначен виноватый (скорее всего сам Вася) и никто ничего не будет форкать пока код не будет исправлен. Если он кому то вдруг прямо щас надо — то он отрепортит лиду/PMу о том, что Вася насрал в репу и будет ждать исправления.

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

У вас code guidelines вообще есть? Или каждый хреначит как ему больше нравится?
... << RSDN@Home>>
Да, йа зелёный тролль!
Re[10]: форматирование кода
От: мыщъх США http://nezumi-lab.org
Дата: 09.08.12 01:45
Оценка:
Здравствуйте, Трололоша, Вы писали:

Т>Здравствуйте, мыщъх, Вы писали:


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

Т>У вас code guidelines вообще есть? Или каждый хреначит как ему больше нравится?
есть, конечно. и одно из самых главных правил -- не править код из эстетических соображений. вообще, если правку можно внести, а можно и не вносить, то решение автоматически принимаются в пользу второго варианта и правка не вносится. а у вас как-то иначе?
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[9]: форматирование кода
От: MTD https://github.com/mtrempoltsev
Дата: 09.08.12 05:39
Оценка: +1 -1 :)
Здравствуйте, мыщъх, Вы писали:

М>вася написал файл foo.c, я его форкнул в bar.c и добавил кучу полезного функционала, затем вы переформатировали foo.c с комментом "codestyle fixed", попутно пофиксив пару багов и добавив тройку новых фич. и тут вася решил смержить foo.c и мой bar.c, т.к. ему мои плюшки по вкусу. вася делает diff, слегка охреневает от ваших комментов и потому делает бранч baz.c, где мержит свой старый foo.c и мой независимый bar.c, после чего вам нужно смержить baz.c, чтобы внести ваш багфикс и ваши фичи.


Жесть! Ну и бардак.

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


О! Практикуете беспорядочные половые связи в извращенной форме? Я кажется понял — когда вы говорите о сексе с негритянками, вы на самом деле имеете в виду ваш процесс разработки с неграми-кодерами
Re[11]: форматирование кода
От: Трололоша  
Дата: 09.08.12 11:16
Оценка:
Здравствуйте, мыщъх, Вы писали:

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

Т>>У вас code guidelines вообще есть? Или каждый хреначит как ему больше нравится?
М>есть, конечно. и одно из самых главных правил -- не править код из эстетических соображений. вообще, если правку можно внести, а можно и не вносить, то решение автоматически принимаются в пользу второго варианта и правка не вносится.
Какой бардак. Где ты говоришь работаешь сейчас?

М>а у вас как-то иначе?

Разумеется. Есть единый стиль, в котором все пишут. Он не очень чтобы строгий, но основное форматирование определено жёстко и обязательно к исполнению.
... << RSDN@Home>>
Да, йа зелёный тролль!
Re[11]: форматирование кода
От: grosborn  
Дата: 09.08.12 11:57
Оценка:
> есть, конечно. и одно из самых главных правил -- не править код из эстетических соображений. вообще, если правку можно внести, а можно и не вносить, то решение автоматически принимаются в пользу второго варианта и правка не вносится. а у вас как-то иначе?

Когда привыкаешь к нормальному форматированию, то пишешь сразу так что потом не нужно никаких правок из эстетических соображений. Единственный момент, это когда обрабатываешь код после того как устоялась и отлажена структура объектов. В этот момент код доводится до конечного вида, вносятся контрольные блоки, код окомментаривается. Вот тут приходится его немного менять из соображений удобочитаемости и понятности.
И главное, программист должен гордиться своей работой, а как можно гордиться неотформатированным кодом?
Posted via RSDN NNTP Server 2.1 beta
Забанен на рсдн за применение слова "Маргинал"
Re[7]: форматирование кода
От: vdimas Россия  
Дата: 09.08.12 12:49
Оценка:
Здравствуйте, SV., Вы писали:

SV.>>>Во-первых, название функции, может быть? Во-вторых, давайте на каждый чих по функции будем заводить.

V>>Это ни разу не смертельно.

SV.>Когда у вас большой проект, и в нем 100500 разкопипащенных функций по суммированию 1) книжек дороже заданной суммы; 2) огурцов; 3) пятен на солнце, это-таки смертельный номер.


В процессе адекватного развития проекта зачастую так и происходит: локальные наколенные "велосипеды" медленно но верно заменяются хорошо отлаженным повторно-используемым кодом.
Re[8]: форматирование кода
От: SV.  
Дата: 09.08.12 14:39
Оценка:
Здравствуйте, vdimas, Вы писали:

SV.>>>>Во-первых, название функции, может быть? Во-вторых, давайте на каждый чих по функции будем заводить.

V>>>Это ни разу не смертельно.

SV.>>Когда у вас большой проект, и в нем 100500 разкопипащенных функций по суммированию 1) книжек дороже заданной суммы; 2) огурцов; 3) пятен на солнце, это-таки смертельный номер.


V>В процессе адекватного развития проекта зачастую так и происходит: локальные наколенные "велосипеды" медленно но верно заменяются хорошо отлаженным повторно-используемым кодом.


...и вот мы уже написали свой хорошо отлаженный повторно-используемый STL.

http://www.cplusplus.com/reference/algorithm/count_if/

Ладно бы еще, если б именно STL, как реализация, не нравился и переписывался. Меня вот он чисто эстетически убивает, в отличие от FCL (наконец-то онтопик!). Но оформлять условный подсчет количества именно книжек, да еще по неуниверсальному предикату, в отдельную функцию... Короче, многое я узнал про некоторые местные ники.
Re[9]: форматирование кода
От: Трололоша  
Дата: 09.08.12 14:51
Оценка:
Здравствуйте, SV., Вы писали:

SV.>Короче, многое я узнал про некоторые местные ники.

Ты б перечитал как тема называется, диагност.
... << RSDN@Home>>
Да, йа зелёный тролль!
Re[9]: форматирование кода
От: MTD https://github.com/mtrempoltsev
Дата: 09.08.12 15:19
Оценка: +2 :)))
Здравствуйте, SV., Вы писали:

SV.>Ладно бы еще, если б именно STL, как реализация, не нравился и переписывался. Меня вот он чисто эстетически убивает, в отличие от FCL (наконец-то онтопик!). Но оформлять условный подсчет количества именно книжек, да еще по неуниверсальному предикату, в отдельную функцию...


Это не прикол, вы на полном серьезе? В школе проблем не было, когда решали задачу "было у вас 5 яблок, забрали 2"? Из себя при этом не выходили, типа как так яблоки забирают?
Re[10]: форматирование кода
От: SV.  
Дата: 09.08.12 15:27
Оценка:
Здравствуйте, MTD, Вы писали:

SV.>>Ладно бы еще, если б именно STL, как реализация, не нравился и переписывался. Меня вот он чисто эстетически убивает, в отличие от FCL (наконец-то онтопик!). Но оформлять условный подсчет количества именно книжек, да еще по неуниверсальному предикату, в отдельную функцию...


MTD>Это не прикол, вы на полном серьезе? В школе проблем не было, когда решали задачу "было у вас 5 яблок, забрали 2"? Из себя при этом не выходили, типа как так яблоки забирают?


Ну так шли бы вы в школу и там кормили первоклассников своими яблоками. А вы вместо этого забиваете шлаком голову студентам. Расскажите, хоть, что за ВУЗ такой, чтобы знать, чего бояться.
Re[11]: форматирование кода
От: MTD https://github.com/mtrempoltsev
Дата: 09.08.12 15:56
Оценка:
Здравствуйте, SV., Вы писали:

SV.>Ну так шли бы вы в школу и там кормили первоклассников своими яблоками.


Аааа, низкий коммуникационный навык. Мне вас жаль Всего вам доброго!
Re[12]: форматирование кода
От: SV.  
Дата: 09.08.12 17:12
Оценка:
Здравствуйте, MTD, Вы писали:

SV.>>Ну так шли бы вы в школу и там кормили первоклассников своими яблоками.


MTD>Аааа, низкий коммуникационный навык. Мне вас жаль Всего вам доброго!


Мне вас жаль, гордо сказал MTD. И каким бы низким не был мой "коммуникационный навык", такой штампище даже я распознал.

MTD, ну зачем так подставляться? Сначала с кодом, потом с сожалениями. Я ж вам не студент, отметкой не напугаете.

  Скрытый текст
Я не поклонник лукоморья, мягко говоря, но его создателям иногда не откажешь в наблюдательности.
Re[13]: форматирование кода
От: MTD https://github.com/mtrempoltsev
Дата: 10.08.12 04:18
Оценка: :)
Здравствуйте, SV., Вы писали:

SV.>Я ж вам не студент,


Сказал любитель подростковых сайтов. Еще раз — всего вам хорошего, пусть жизнь будет к вам добрее.
Re[9]: форматирование кода
От: vdimas Россия  
Дата: 10.08.12 07:16
Оценка:
Здравствуйте, SV., Вы писали:

V>>В процессе адекватного развития проекта зачастую так и происходит: локальные наколенные "велосипеды" медленно но верно заменяются хорошо отлаженным повторно-используемым кодом.

SV.>...и вот мы уже написали свой хорошо отлаженный повторно-используемый STL.

Инфраструктура STL ни разу не прикладная, в отличие от инфраструктуры конкретного проекта.


SV.>Ладно бы еще, если б именно STL, как реализация, не нравился и переписывался. Меня вот он чисто эстетически убивает, в отличие от FCL (наконец-то онтопик!). Но оформлять условный подсчет количества именно книжек, да еще по неуниверсальному предикату, в отдельную функцию...


Если ты намекаешь на уникальную уникальность задачки из твоего примера... то это какое-то нубство, "отливать из бетона" в исходниках упомянутые 100р. Причем, без учета инфляции. )))
Re[13]: форматирование кода
От: vdimas Россия  
Дата: 10.08.12 07:23
Оценка:
Здравствуйте, SV., Вы писали:

Т.е. того было мало, что даже не попытался аргументировать по обсуждаемому вопросу, а сразу перешел на личности/ники... Потом еще решил луркой прикрылся... ))
Ну, молодца.
Re[10]: форматирование кода
От: SV.  
Дата: 10.08.12 08:45
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Если ты намекаешь на уникальную уникальность задачки из твоего примера...


Из какого моего примера?
Re[14]: форматирование кода
От: SV.  
Дата: 10.08.12 08:47
Оценка: :)
Здравствуйте, MTD, Вы писали:

MTD>Сказал любитель подростковых сайтов. Еще раз — всего вам хорошего, пусть жизнь будет к вам добрее.


Когда джентльмены прощаются, они уходят, а не остаются на "еще раз".
Re[14]: форматирование кода
От: SV.  
Дата: 10.08.12 09:09
Оценка: +1
Здравствуйте, vdimas, Вы писали:

V>Т.е. того было мало, что даже не попытался аргументировать по обсуждаемому вопросу, а сразу перешел на личности/ники... Потом еще решил луркой прикрылся... ))

V>Ну, молодца.

Аргументировать что? Что для подсчета элементов в коллекциях, соответствующих некоторому условию, лучше иметь единый алгоритм и разные предикаты, чем разные функции, реализующие один и тот же алгоритм? Может, вам лучше самому что-нибудь почитать типа этого: http://en.wikipedia.org/wiki/Don%27t_repeat_yourself?
Re[3]: форматирование кода
От: SV.  
Дата: 10.08.12 10:00
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>задают критерии в виде текстовой строки (а в реальности для этих целей используются скрипты или языки запросов).


А по-моему, лучше всего, когда ЯП поддерживает разные парадигмы и сам себе и скриптовый язык, и язык запросов.
Re[15]: форматирование кода
От: MTD https://github.com/mtrempoltsev
Дата: 10.08.12 10:18
Оценка: +1
Здравствуйте, SV., Вы писали:

SV.>Аргументировать что? Что для подсчета элементов в коллекциях, соответствующих некоторому условию, лучше иметь единый алгоритм и разные предикаты, чем разные функции, реализующие один и тот же алгоритм?


Кто с этим спорил? Сам придумал врага, сам его заборол — молодец, но к доктору сходить стоит — жить в своей реальности неправильно.
Re[16]: форматирование кода
От: SV.  
Дата: 10.08.12 10:40
Оценка:
Здравствуйте, MTD, Вы писали:

SV.>>Аргументировать что? Что для подсчета элементов в коллекциях, соответствующих некоторому условию, лучше иметь единый алгоритм и разные предикаты, чем разные функции, реализующие один и тот же алгоритм?


MTD>Кто с этим спорил? Сам придумал врага, сам его заборол — молодец, но к доктору сходить стоит — жить в своей реальности неправильно.


Просто Кобзон какой-то. Дважды попрощался, но все еще на сцене.
Re[17]: форматирование кода
От: MTD https://github.com/mtrempoltsev
Дата: 10.08.12 10:48
Оценка:
Здравствуйте, SV., Вы писали:

SV.>Просто Кобзон какой-то. Дважды попрощался, но все еще на сцене.


Опять вы с своей реальности? Я вам добра пожелал и чтобы жизнь вас жалела, а не прощался. Я вам всегда рад
Re[15]: форматирование кода
От: Трололоша  
Дата: 10.08.12 20:52
Оценка:
Здравствуйте, SV., Вы писали:

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

Прочитай уже наконец название темы и угомонись.
... << RSDN@Home>>
Да, йа зелёный тролль!
Re[15]: форматирование кода
От: vdimas Россия  
Дата: 11.08.12 19:49
Оценка:
Здравствуйте, SV., Вы писали:

SV.>Аргументировать что? Что для подсчета элементов в коллекциях, соответствующих некоторому условию, лучше иметь единый алгоритм и разные предикаты, чем разные функции, реализующие один и тот же алгоритм?


Речь шла о лямбдах vs отдельные ф-ии. Лямбдой у тебя являлся сам предикат. Если посмотреть на твой пример, то аналогичное вообще маловероятно в адекватном проекте. Любая конкретика, типа твоих 100р, выносится обычно нафик из нескриптового кода.


SV.>Может, вам лучше самому что-нибудь почитать типа этого: http://en.wikipedia.org/wiki/Don%27t_repeat_yourself?


Я как-нить сам разберусь, что мне почитать. Еще с тобой не разобрались. Ты пытался поднять окружающих на смех, не? Обоснуешь по какой причине было веселье, или продолжишь бегать?
Re[11]: форматирование кода
От: vdimas Россия  
Дата: 11.08.12 19:59
Оценка: +1
Здравствуйте, SV., Вы писали:

SV.>Из какого моего примера?


Из этого:
http://www.rsdn.ru/forum/philosophy/4846900.1.aspx
Автор: SV.
Дата: 08.08.12


В исходном примере была параметризация, а в твоем варианте — бесполезная строчка прибитого гвоздями кода. Ты изменил не только синтаксис, но и семантику исходного примера. За это отгреб минусов. А потом устроил представление зачем-то, с попыткой высмеять коллег... вместо того, чтобы увидеть свою ошибку. ИМХО, какой-то дурдом.
Re[3]: форматирование кода
От: . Великобритания  
Дата: 14.08.12 16:43
Оценка: +1
Здравствуйте, SV., Вы писали:

SV.>
SV.> Console.Writeln(books.Count(b => b.Price > 100)); // Output 100+ USD books count.
SV.>

SV.> Нужны ли тут комментарии? Я бы предпочел их видеть, поскольку функция-то точно не нужна.
Есть простое правило: Если комментарии нужны, значит у тебя получается сложный код. Даже вот так:
var expensiveBookCount = books.Count(b => b.Price > 100);
Console.Writeln(expensiveBookCount);

уже избавляет от необходимости коммента.
avalon 1.0rc3 rev 0, zlib 1.2.3.4
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re: форматирование кода
От: __kot2  
Дата: 15.08.12 23:58
Оценка:
Здравствуйте, Философ, Вы писали:
Ф>поражает такая вещь: этой книжке туева хуча лет, её многие читали
Ф>и он далеко не единственный кто об этом пишет,
Ф>однако товарищи программисты по прежнему пренебрегают абсолютно всеми рекомендациями,
Ф>притом не только в коде, но и в тексте (пример
Автор: -rsdn-
Дата: 19.07.12
).

Ф>Почему?
старческое брюзжание никому не интересно

Ф>блин, неужели это так сложно, долбануть лишний раз энтер, или пробел после запятой?

как научили, так и пишут

другое дело, что обучение должно начинаться с оформления кода, потому что нагородить можно много чего, а вот сделать так, чтобы не икалось и в гробу не вертелось уже не всякий сможет
короче говоря, программист с как попало оформленным кодом это повар, который яичницу пожарить не может. может быть что-то другое он делать научился, но бесполезность и беспомощность его видна всем
Re[4]: форматирование кода
От: Кодт Россия  
Дата: 20.08.12 17:13
Оценка:
Здравствуйте, VladD2, Вы писали:

B>>Там после него издевательство.

VD>Что? Причем тут форматирование то?

При том, что и в русском техническом языке можно адски оформить текст.
Сравни

<<<
читал про то что нужно Administrative Tools ->Microsoft .Net Framework 2.0 Configuration. Under My Computer -> Runtime Security Policy -> Machine -> Code Groups -> All_Code select New… to create a new Code Group. Set a descriptive name for the group, select URL as the condition type and enter the URL of you site, for example localhost/WinControlTest*. Finally assign the FullTrust permission set to the code group. (В смысле поствавить FullTrust на созданную группу кода, однако у меня только на 1.1 .net fr есть такая настройка, но т к пишу в VS 2010, то поддержка от 2.0 до 4.5 .net framework и нету Администрирование ->Microsoft .Net Framework 2.0 Configuration).
>>>

и (моя разбивка)

<<<
читал про то что нужно

Administrative Tools ->
  Microsoft .Net Framework 2.0 Configuration. Under My Computer ->
    Runtime Security Policy ->
      Machine -> Code Groups ->
        All_Code
          select New…

to create a new Code Group.
Set a descriptive name for the group, select URL as the condition type and enter the URL of you site, for example localhost/WinControlTest*.
Finally assign the FullTrust permission set to the code group.

(В смысле поствавить FullTrust на созданную группу кода, однако у меня только на 1.1 .net fr есть такая настройка, но т.к. пишу в VS 2010, то поддержка от 2.0 до 4.5 .net framework и нету Администрирование -> Microsoft .Net Framework 2.0 Configuration).
>>>
Перекуём баги на фичи!
Re[6]: форматирование кода
От: Кодт Россия  
Дата: 20.08.12 17:40
Оценка:
Здравствуйте, Философ, Вы писали:

Ф>Это злоупотребление структурой цикла for в C-подобных языках — цикл while, втиснутый в заголовок цикла for.


Отнюдь нет.

Дело в том, что на практике есть не два, а 5 видов циклов.
1. Подлинно бесконечный цикл, с остановкой по исключению.
2. Цикл опроса (предмет цикла меняется извне; покуда он не изменился, мы молотим почти бесконечный цикл).
3. Цикл неограниченных итераций, с остановкой по условию (предмет цикла меняется в его теле, но последовательность значений нетривиальна, а то и непредсказуема — например, проблема 3X+1)
4. Цикл линейного пробега по всему диапазону.
5. Цикл линейного поиска.

К сожалению, в Си есть только три языковые конструкции: for, while/do-while и проклятая if-goto
Вот и приходится выделываться с while(true), for(;;) и break/continue.

В С++11 можно отличать 4 от 5 вот так
for_each(xs.begin(), xs.end(), [](int x)
  {
    ..... // будет выполнено для всех-всех-всех элементов
  }
);

auto found = find_if(xs.begin(), xs.end(), [](int x) -> bool
  {
    .....
    if(not_yet) return false; // аналог continue
    .....
    if(gotcha) return true; // аналог break
    .....
    return false; // концевое continue - само собой разумеющееся
  }
);


Иногда действия для линейного пробега оказываются столь тяжеловесны, что запихнуть их в заголовок for невозможно.
Например, обход двусвязного двоичного дерева.
В этом случае неискушённый и умеренно-ленивый программист замаскирует цикл четвёртого или пятого типа под третий тип. И вгонит в ступор себя же, год спустя.
Искушённый и умеренно-энергичный — конечно же, напишет тройку функций
TreeNode* get_first(WholeTree*);
bool is_end(WholeTree*, TreeNode*);
Node* get_next(WholeTree*, TreeNode*);

а дальше — если захочет различать четвёртый и пятый типы — присобачит из буста адаптер итератора, и вперёд, на for_each / find_if.
Перекуём баги на фичи!
Re[5]: форматирование кода
От: B0FEE664  
Дата: 21.08.12 17:16
Оценка:
Здравствуйте, мыщъх, Вы писали:

М> а вот пример кода, который читается только со второго повтора:


М>
М>for ( code = GetDebuggerEvent(WFNE_ANY|WFNE_CONT, -1); // resume
М>        code > 0;
М>        code = GetDebuggerEvent(WFNE_ANY, -1) )
М>  {
М>    r_eip = GetEventEa();
М>    if ( r_eip >= tea1 && r_eip < tea2 )
М>      break;
М>  }
М>


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

М>кстати, код взят отсюда:

М>http://www.hex-rays.com/products/ida/debugger/scriptable.shtml
М>и писал его выдающийся человек у которого есть чему поучиться. в том числе и тому, что в реальности приходится сталкиваться и с таким кодом, который шаблонным назвать трудно (хотя и к экзотике его не отнесешь).

Без вникания в суть кода можно сказать, что если GetDebuggerEvent(WFNE_ANY|WFNE_CONT, -1) вернёт неположительное нечто, то r_eip останется не изменённым и лови потом ошибку с не инициализированной переменной...
И каждый день — без права на ошибку...
Re[6]: форматирование кода
От: мыщъх США http://nezumi-lab.org
Дата: 24.08.12 03:17
Оценка: +1
Здравствуйте, B0FEE664, Вы писали:

BFE>Здравствуйте, мыщъх, Вы писали:


М>> а вот пример кода, который читается только со второго повтора:

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

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

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

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

BFE>Без вникания в суть кода можно сказать, что если GetDebuggerEvent(WFNE_ANY|WFNE_CONT, -1) вернёт неположительное нечто, то r_eip останется не изменённым и лови потом ошибку с не инициализированной переменной...

а как на счет -1 ? оно вообще никогда ничего не вернет. таймауты надо обрабатывать. вот повиснет оно и привет. причем, вечное ожидание это классика. понятно, что -1 это для простоты. но копипаста превращает эту простоту в тихий ужос.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[7]: форматирование кода
От: Философ Ад http://vk.com/id10256428
Дата: 27.08.12 07:26
Оценка:
Здравствуйте, мыщъх, Вы писали:

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



До сих пор, решая физические задачи, пишу нижние индексы для скоростей, сил, импульсов и масс, дабы не запутаться.
Конечная формула может получиться большой/длинной (если взаимодействующих объектов много).
Самое забавное здесь в том, что действия производятся именно со скоростями и импульсами, а не с абстрактными векторными величинами. До абсолютно абстрактного кода частенько пилить и пилить — иногда гораздо быстрее наколотить частный случай сейчас, чем сразу искать общее решение — выделить общее можно потом.
Всё сказанное выше — личное мнение, если не указано обратное.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.