1. C# / Говнокод #1507

    +131

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    List<int> arr = new List<int>();
    List<int> tmpArr = new List<int>();
    
    for (int i = 0; i < arr.Count; i++)
    {
    	if (arr[i] > 100)
    	{
    	}
    	else
    		tmpArr.Add(arr[i]);
    }
    arr = tmpArr;

    Удаляем плохие элементы со списка или кто создал дурацкий for???

    Запостил: 62316e, 10 Августа 2009

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

    • Ну и где тут говнокод (не считаю пустой ветки if)?
      Ответить
      • Да суть очень проста.. видал такой код когда нужно было удалить из списка только некоторые илементы.. хотя можно обойтись обернутым циклом или фишками .нет 3.
        Ответить
    • а так нельзя было?
      List<int> arr = new List<int>() {100, 95, 68, 12, 102, 10};

      for (int i = arr.Count - 1; i > -0; i--)
      {
      if (arr[i] <= 100)
      arr.RemoveAt(i);
      }
      Ответить
      • Ну зная все API, и не заботясь об эффекстивности можно конечно. Но оригинал лучше.

        Можно и так сократить (зная List<> и всякую херню):
        arr.RemoveAll(100.Equals);
        Ответить
    • опечатался
      List<int> arr = new List<int>() {100, 95, 68, 12, 102, 10};

      for (int i = arr.Count - 1; i >=0; i--)
      {
      if (arr[i] <= 100)
      arr.RemoveAt(i);
      }
      Ответить
    • а если срочно понадобится делать что-то когда arr[i] > 100? что тогда??? дописывать else???? :)
      Ответить
    • И проход по списку от i к N быстрее чем от N к i... вероятно
      Ответить
    • arr = arr.Where( elem => elem < 100 );
      Ответить
    • внутри ИФа был код который потом кудыто убрали
      это нормально тут нет говнокода
      говнопостер лохабот
      Ответить
      • Если код убрали, то и if надо поменять. Ранее показано, как то же самое сделать в одну строчку, которую можно понять одним взглядом. А этот цикл с временной переменной нужно вдумчиво читать.
        Ответить
        • Опять задроты
          человек потратил 0.01 секунду на удаление кода из ифа
          код при этом хуже не сталю По кр мере он избежал тестирования и прочей хуйни
          А тут доброжелатели предлагают переписать все.

          за переписывание рабочего кода ребята вам никто не будет $$$ платить.
          Ответить
          • иопт, давай ещё рефакторинг отменим. и посмотрим как ты увязнешь в собственных говнах.
            Ответить
            • Пиздец я не призываю отменять рефакторинг
              Но если встречается код типа
              if(hyi){
              //some commented code
              }else{
              DoJob();
              }

              То это не говнокод просто тот кто его писал не ЗАДРОТ и понимает что переписывание ИФа в 100 раз опаснее коментариев внутри
              Ответить
              • Что опасного в переписывании кода? Если правишь часть - правь всё, чтобы всё было согласованным. Это рефакторинг. Не могу себе представить программиста, который заблудился в четырёх строчках и боится их упростить "А вдруг чего испортит." В любом случае, юнит тесты никто не отменял.
                Ответить
                • переписал туда 3 часа потом назад еще 3 часа потом снова туда

                  а рядом индус 1 секунду закоментил 1 секунду раскоментил 1 секунду снова закоментил

                  Поэтому переписывальщиков и не любят среди них 99% задротов которые будут по 1000 раз рефакторить то где нахер рефакторинг не нужен а чсерьезные ошибки не заметят....
                  Ответить
                  • Да, а потом каждый, кто будет этот код смотреть (включая автора), потратит по 5 минут чтобы понять – какого хрена здесь имелось в виду ? :)
                    Ответить
                    • ну потом и перепишет главное коментить типа
                      //todo переписать !!! :) и нормуль

                      просто это не говнокод а типа заглушка
                      Ответить
                      • Идите работать, говнокодеры...

                        // .NET 2.0
                        List<int> intList = IntListFactory.GetRandom();
                        intList.RemoveAll(delegate(int number) { return number > 100; });

                        РаФакторинг сила! ^_^
                        Ответить
    • Сраные быдлокодеры, убейтесь:
      arr = arr.FindAll (item => item <= 100)
      Ответить

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