Кресты / Говнокод #19978 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
void NewTorrent_PeersListViewCtrl::OnAttach()
{	
	WTL::CMenuHandle menu;
	BOOL menu_created = menu.LoadMenu(HAL_GENERIC_ADD_LV_MENU);
	InitialSetup(menu);	
// ...
	for (int i=0, e=3; i < e; ++i)
	{
		AddColumn(names[i].c_str(), i, visible[i], widths[i]);
	}	
// ...
}

Седьмая строка в этом огрызке вызывает сомнения.

Запостил: emanon emanon, (Updated )

Комментарии (26) RSS

    • Еблю которую нельзя увидеть, но можно услышать.
      Пользуюсь случаем Передаю соседям привет
      Ответить
    • Смутные.
      Не понятно зачем здесь используется переменная 'e' в условии выхода из цикла, когда вместо неё можно использовать константное число.
      Ответить
      • Здесь используется e из скоупа функции, а не объявляется новая. Возможно, где-то ниже она потом используется. Хотя, конечно, засирание for'а - говно.
        Ответить
        • Вообще-то нет, тут одним оператором объявляется сразу две переменные.

          Я думаю что парадигма for(int i=0; e=length) так въелась автор в мозг что он даже с константами так делает, для единообразия. Да даже по преинкременту сразу видно - упоротый.
          Ответить

            • Он быстрее. Не знал чтоли?


              int& inc1(int &a) {
                 a = a + 1;
                 return a;
              }
              
              int& inc2(int &a) {
                 int tmp = a;// дополнительная память!!!
                 a = a + 1;
                 return tmp;
              }
              Ответить
                • Наоборот. Хотя бы потому, что ++i возвращает очевидный результат.
                  Ответить
                    • Сейчас на JS.
                      В JS не надо думать. В частности - о точках следования, поэтому в сложных выражениях легче бездумно вставить присваивание, в частности - ++i, не беспокоясь, что эта фигня вернёт зачем-то предыдущее значение.
                      Ответить
                      • Вот и не пезди. В JS незя писать ++i

                        И вообще, я имел в виду
                        for(i=0;i<n;i++) против for(i=0;i<n;++i)

                        Второй вариант - говно.
                        Ответить
                        • Как минимум, в ECMAScript 2015 можно (см. ECMA-262 6th edition 12.5.7, 12.5.8 - страница 165). Конечно, и до 2015 можно было.

                          В циклах никакого преимущества ни i++, ни ++i не даёт, поэтому можно использовать для унификации тот вариант, который уместнее (судя по всему, по субъективным причинам) в остальных выражениях.
                          Ответить
          • Ой-вей, таки в глаза ебусь.

            А вопрос про преинкременты удваиваю.
            Ответить
  • другой поток ищет e на стеке и меняет, очевидно же
    Ответить
      • Автоматическая переменная же. Где она ещё может быть?

        Или e - это макрос?
        Ответить
        • А конпелятор разве не может соптимизировать и поместить её в регистр?
          Ответить
        • В C90 было такое хорошее правило -все декларации находятся в начале блока.
          Кстати, венгерка бы позволила избежать таких вопросов, однако она почему-то остаётся чем-то плохим.
          Ответить
  • А может автор просто хотел "хуй" написать?
    e=3
    Ответить

Добавить комментарий

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8