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

    +136

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    string delnbsp(string str)
            {
                int k;
                while (str.IndexOf(" ") >= 0)
                {
                    k = str.IndexOf(" ");
                    str = str.Remove(k, 6);
                }
    
                while (str.IndexOf(",") >= 0)
                {
                    k = str.IndexOf(",");
                    str = str.Remove(k, 1);
                }
                while (str.IndexOf("results") >= 0)
                {
                    k = str.IndexOf("results");
                    str = str.Remove(k, 7);
                }
                while (str.IndexOf(" ") >= 0)
                {
                    k = str.IndexOf(" ");
                    str = str.Remove(k, 1);
                }
    
                return str;
    
            }

    Кандидат решал тестовое задание на с#.

    Запостил: dima054, 19 Июля 2014

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

    • показать все, что скрытоПереписал Replace. А что плохого? Вы имеете наглядно убедится, что логика у него хорошая.

      Въебал минус.
      Ответить
      • Логика есть а вот книжку о стандартной библиотеке не мешало бы дочитать.
        Ответить
      • Так выглядит приятнее:
        String[] ReplaceCodes = new String[] { " ", ",", "results", " ", };
        Int32 k;
        String str = "The quick brown fox jumps over the lazy dog";
        foreach(String code in ReplaceCodes)
        	while((k = str.IndexOf(code)) > -1)
        		str = str.Remove(k, code.Length);
        Ответить
        • var ReplaceCodes = new [] { " ", ",", "results", " ", };
          int k;
          var str = "The quick brown fox jumps over the lazy dog";
          foreach(var code in ReplaceCodes)
          	while((k = str.IndexOf(code)) > -1)
          		str = str.Remove(k, code.Length);

          fixed

          А не смущает что в память врывается хренова туча ненужных строк?
          Ответить
          • https://ideone.com/ymTJPy

            Итак, я прошел собеседование?
            Ответить
          • >fixed
            1) ReplaceCodes, естественно, должен быть статик.
            2) Тем более var'ы не для этого в .NET добавлены. Так что выброси это глупое правило из решарпера, пока никто не увидел.
            3) Типа int в .NET'е нет. Поработаешь в комманде, где используется несколько языков программирования - поймёшь.
            4) Ты во время рефакторинга потерял " ". Так что код не "fixed", а "broken" ;)

            >А не смущает что в память врывается хренова туча ненужных строк?
            Регулярка уже была. Не интересно. :)
            Ответить
            • >> Тем более var'ы не для этого в .NET добавлены.

              О, да, код с варами менее читабелен, тратит больше ресурсов, бла-бла-бла.

              >> Типа int в .NET'е нет.

              Нам для того синонимы даны, что юзать вдоль и поперек их. Ты небось и string только с большой буквой пишешь, и в хаски [char] вместо string.

              >>Ты во время рефакторинга потерял "nbsp;".

              не моя в том вина, что браузер вырезает, экранировать впадлу

              >>ReplaceCodes, естественно, должен быть статик

              Как у тебя?)
              Ответить
              • > не моя в том вина, что браузер вырезает, экранировать впадлу
                Это скорее всего при редактировании комментария все "&хрень;" превращаются в символы.

                 
                Ответить
              • >О, да, код с варами менее читабелен, тратит больше ресурсов, бла-бла-бла.
                А то. 1 раз напиши, 100 раз прочитай...

                >Ты небось и string только с большой буквой пишешь
                Ага. Как-то меня напрягает что в шарповой нотации только Enum не переопределили.
                - enum.Parse?
                - Хрен...
                Вот в MCPP, призме или в вб всё ясно и понятно. Без всякого коммерческого диабета.

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

                >Как у тебя?)
                Ты-ж фиксишь ;)
                Ответить
                • http://govnokod.ru/16381#comment240557

                  я зафиксил
                  Ответить
                  • Красиво!
                    Мне со SB лень было писать, а про Aggregate - я не додумался.

                    Я даже твой код протестил.
                    В результате получилось что регулярка работает быстрее, но лопает больше памяти.
                    Ответить
                    • https://ideone.com/ySXPl0

                      Чутка сократил. Я специально писал на 0-лишних-строк. Либо скорость, либо память
                      Ответить
                      • Что-то я сразу не подумал... Не работает такой вариант.
                        Аж в 2х кейсах:
                        https://ideone.com/QTRe4M
                        И предыдущий не работает.
                        Ответить
                        • http://govnokod.ru/16381#comment240575
                          Ответить
                        • https://ideone.com/xx13i1

                          как то так. хотя возможно у меня глаза застилает пена от кодханта
                          Ответить
                          • Так "brown" всё равно остался, а он у тебя в ReplaceCodes'ах ;)
                            Ответить
                            • так и не должен. А если хочется - вычитай из i длину паттерна при удалении и норм

                              https://ideone.com/vF6uqf
                              Ответить
                • Нбсп у всех вырезает (ну по крайней мере на фф и хроме). Это скорее всего баг движка ГК. Пишешь в комменте его, нажимаешь редактировать - а он пропал.
                  Ответить
                •  
                  Ответить
    • s/ //g уже не катит?
      Ответить
    • static string CleanString(String input)
      {
      var deletedItems = (new String[]{" ", ",", "results", " "}).ToList();
      deletedItems.ForEach(eachItem =>{
      input = input.Replace(eachItem, "");
      });
      return input;
      }
      Ответить
      • Говно этот ваш C#, то ли дело PHP:
        function CleanString($input) {
            return str_replace(array(" ", ",", "results", " "), "", $input);
        }
        Ответить

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