Jawa / Говнокод #4354 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
List<String> el=parseList();
		Theme th=new Theme(id);

		th.setScore=Integer.parseInt(el.get(1));
		th.setComments=Integer.parseInt(el.get(2));
		th.setAuthor=el.get(3);
		th.setVisitors=Integer.parseInt(el.get(4));
		th.setVisitorsLastWeek=Integer.parseInt(el.get(5));
		th.eMail=el.get(5);
		return th;

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

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

  • какую-то херню по памяти запостил. вот нашел исходник
    List<String> el=parseList();
    Theme th=new Theme(id);
    th.setScore (Integer.parseInt(el.get(1)));
    th.setComments  (Integer.parseInt(el.get(2)));
    th.setAuthor (el.get(3));
    th.setVisitors (Integer.parseInt(el.get(4)));
    th.setVisitorsLastWeek(Integer.parseInt(el.get(5)));
    th.setEMail (el.get(6));
    return th;
    Ответить
    • мне такого народ в прошлом много показывал. один универский препод сидел исключительно на Жабе и в принципе обработку ошибок не делал, чему и студентов учил. он из цикла перебора массива по эксепшену выходил.... o_O
      Ответить
      • в жабе это тоже не бестпрактис между прочим. Блох (один из авторов жабы как бы) писал что exception это исключительная, неожиданная ситуация, и строить на ней логику не нужно.
        Кроме того в старых жабах это была еще и медленная операция, потому что считается что в нормальной программе исключений или нет совсем или очень мало
        Ответить
        • насколько я понял пост Dummy00001. он тоже не в восторге от такого уебанства, что косвенно подтверждает смайлo_O
          Ответить
            • отчасти ИМО виновата и сама Жаба.

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

              а Жабе чего не городи, все
              catch(Exception e)
              фиксится.
              Ответить
              • Это может быть не таким уж и плохим приемом, если в этом месте выводится лог.
                Лог можно направить на мыло разработчику. Это лучше, чем просто упавшая программа.

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

                Это единственный случай в мире, когда catch(Exception) является не говнокодом.
                Правда нужно быть осторожным, что бы не поймать ThreadInterruptedException например.

                В конце концов в винде тоже есть SEH 🙂
                Ответить
                • альтернатива эксепшнам есть, это флаги, и, как вариант, мэтчи. Особенностью (как преимуществом, так и недостатком) эксепшнов является отложенная обработка. Т.е., эксепшн я могу тут же словить и обработать, или дать ему полетать по стеку вплоть до креша проги. Тогда как флаги и мэтчи я обязан проверять сразу.
                  Плюс мэтчингового подхода в том, что мне не дадут написать программу, которая просто вылетит.
                  Минус состоит в том, что код необоснованно распухает.

                  Поэтому catch(Exception) не является говнокодом, но его употребление обязано привлекать внимание каждый раз, с вопросом - а не раздробить ли его для более тщательного анализа ошибок.


                  но вообще, кажись, мы приехали к проблеме языкового проектирования. Опыт показывает, что есть решения хорошие, есть не очень, но идеального быть не может - поэтому каждый подход имеет право кому-то нравиться.
                  Главное: что бы программист знал узкие места своего любимого приема и не лажался.
                  Ответить
        • имеется ввиду, что
          if(a!=null) a.b() else a.c();

          и яснее, и быстрее, чем
          try {
           a.b();
          } catch(NullPointerException e) {
           a.c();
          }

          на примере сразу видно какое-то внеземное мышление.

          по описанию "он из цикла перебора массива по эксепшену выходил.... o_O" самый наивный код
          int[] a=new int[10];
           int i=0;
           while(true) {
            try {
             b=a[i];
            } catch(ArrayIndexOutOfBoundsException e) {
              break;
            }
            i++;
           }

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

            щас ссылочкой на говнокод заделюсь.
            Ответить
            • пардон, пример должен быть
              if(a!=null) a.b(); else с.b();
              
              try {
               a.b();
              } catch(NullPointerException e) {
               c.b();
              }


              иначе ко мне придерутся, что пример нерабочий, эксепшн вылетает
              Ответить
  • Нужно было использовать фабрику? или что-то другое?
    Ответить
    • думаю, что по-хорошему декларативную валидацию средствами какого-нибудь фреймворка, типа Стратсов.
      или тут говно в том, что захардкожен порядок параметров, и следует заюзать hashMap для параметров?
      Ответить
    • 2 Dummy00001
      >сидел исключительно на Жабе и в принципе обработку ошибок не делал
      а причем тут это? проверка может стоять в методе, который дергает сие.

      2 medb
      >Нужно было использовать фабрику? или что-то другое?
      а причем тут фабрика? если работаем с SQL-ником - ORM.

      2 Мистер Хэнки
      >говно в том, что захардкожен порядок параметров
      да в том что они распихиваются именно таким тупым способом

      >и следует заюзать hashMap для параметров?
      а вот отсюда поподробнее - я не понял.

      ЗЫ походу Страйкер домен проплатил.
      Ответить

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

Переведи на "PHP", guest!

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


    8