Си диез / Говнокод #6684 Ссылка на оригинал

0

  1. 1
long.Parse(Convert.ToString(Convert.ToSingle(Item.Value.ToString())))

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

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

      • тогда я присоединяюсь к непонимающим, зачем нужна передергивающая конвертация object->string->single->string->long вместо object->string->long.
        Ответить
        • потому что без сингла кидает exception, что число в неправильном формате.
          Ответить
            • Неа. Там число может быть дробным и разделитель точка/запятая зависит от локали на сервере, что само пос ебе прекрасно.
              Ответить
              • ебе прекрасно!
                мелкософт, как всегда, прекрасен, что бы конвертировать в строку в зависимости от локали.

                на Java я бы сделал так:
                long l=0;
                try { l=Long.parseLong(String.valueOf(obj));} catch(NumberFormatException e) {Log.log(e);}
                Ответить
                • Ну exception то поймать не проблема. Но надо извернуться чтобы работало на всей фигне кроме совсем нечисловых значений. Сцука энтерпрайз...
                  Ответить
                  • берем самый широкий подходящий тип. Если оно в него влезает, прекрасно, если нет - ловим эксепшн и либо обламываем юзеря, либо втихую прописываем наиболее ожидаемое значение идем дальше.
                    Как иначе, я не понимаю
                    Ответить
                    • Обламывать нельзя же, могут и канделябром-с. Там в разных местах ещё эту запятую реплейсят в строке чтобы наверняка.
                      Ответить
                      • значит юи недопилили - что там такое вводитися что так приходится парсить ?
                        Ответить
                        • Это сервера между собой обмениваются. С учётом настроек системной локали блеять. Локали могут быть (и таки бывают) разные.
                          Ответить
                          • да и хер бы сней если оно между флоат и лонгом то максимум один труексепшн и усе. Да и потом не сильно они отличабтся эти "локали блеать".
                            Ответить
                            • Дык в том-то и дело, что на входе упакованый в object стринг, в который сериализовалось значение с учётом локали.
                              Ответить
                              • протокол предачи иксмл ? я для соапа просто класс накатал который все сам проверял и выдавал
                                Ответить
                                • Протокол передачи тупотекст... Впрочем, недолго ему жить осталось (надеюсь) и мы свалим наконец на няшненький питончик, где такая хуйня рядом не лежала.
                                  Ответить
                                  • Правильно, сам люблю питон потомучно нанем много поточные сервера и протоколы легко пишустя. И все таки какой протокол планируете использовать (иксмл, жисон ...)
                                    Ответить
                                    • Для умеренно-сложных данных мне больше всего симпатичен JSON.

                                      Через XML легко делать запросы, но принимать его и парсить - очень муторно, селекторы-фигекторы...

                                      А вообще надо конечно пользоваться минимально-достаточной штукой. Но и не забывать думать на пару шагов вперёд. Тоесть можно тупо делать urlencode, но если есть возможность не-плоских данных, то проще сразу забиться на JSON и не трахать в будущем мозги.
                                      Ответить
                  • А потом кто-то номер телефона вместо суммы прописью впишет...
                    Ответить
  • Код говно. Вообще не понимаю, зачем всё это нужно?
    Раз уж на то пошло, и на CultureInfo насрать, то это всё делается так:
    long val = 0;
    if(long.TryParse(Item.Value.ToString(), out val)) {
      //всё ок
    }
    else {
      //введи нормальное число, падла!
    }


    А вообще, конечно же, надо использовать System.Globalization.NumberStyles и System.Globalization.CultureInfo.
    Ответить
      • Думаю, те программисты, что пишут такой код, не входят в Golden Billion.
        Ответить
        • Входят. Иначе бы они не планктонили в своих офисах-аквариумах выдавая такой код.
          Ответить
          • планктон - это та мелочь, которой питается крупная рыба. здесь аналогия полная
            Ответить
            • Каннибализм в среде разработчиков побежден! По крайней мере, мы держим проблему под контролем.
              Ответить
              • офисный планктон - это те люди, которые не добиваются хороших результатов. Они отдают успех(и деньги) другим
                Ответить
  • В MSDN английским по белому написано, что обязательно следует использовать настройки глобализации при работе со строками! Анализатор кода в Студии выдаёт предупреждения, если таковых нет. Развели тут сыр-бор...
    Ответить
  • Если до упаковки в object, тип был long, то он им и остается:
    Item.Value as long? ?? default(long);
    и только так :Р
    если это string, то
    long.TryParse((string)Item.Value, out l);
    Ответить
  • ЖMABHIOGOKWQTZSCFPFLBDMIYELLUCNQULSNATCTFPYWGBYIJGJENPIWIZAVQYXPXRIAWSVMFCBMLVUSFPNQMDQVILAWBFIIYAZKQYUWKALLPECCTMZZGDNLUFJANVOLCDKUYMZNFHPHVMBBZVOQQJVMTQONLHIRRNMNNJBCMLUQHYEOPFIYJNDBDXCDZYUSBXEQKVGHUVBKQTEXOTLHRYEQYLMZZKHSOCJGWOBSYPHQWQATSIDSRKEENTQOEUTGOCVMQLWGDSEPUNHICILBIRUIQTXAUJMOBRMSHIPRRVPDYFBNTXPBYTRSPCQAUGAWCYVEXMTAJYLLRHYPQQLZUZHUIHJAKCVGRBDYYHLXZIZHSHHVIOJIPRUJRTFHZHOMTJIYFGKZCHIGAEVDQXWKEKVYMJLPWOGEWKMHQTWFKLOPXPXCDEGOVXIOFEVZCOCWITEBMHHEFGFDTECHVQXWXOTZQATQRWJMBBYYUNMWILDJCXVMDZYQXCFBVXDHBODIVTFRTJSGOHCLAEATDFATHZSRBBZRHPACYQBGEZUKHTTNRIOZOZIHWYAMXBLXNOTIIPYCOIVSEZEYGAAGKH
    Ответить

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

Помни, guest, за тобой могут следить!

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


    8