1. Java / Говнокод #230

    −53.2

    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
    private void setTims( String project )
    {
        int endIndex = project.indexOf( "-" );
        boolean isNumber = false;
        if ( endIndex != -1 )
        {
            try
            {
                Integer.parseInt( project.substring( 0, endIndex ) );
                isNumber = true;
            }
            catch ( NumberFormatException e )
            {
                //ignore
            }
        }
        if ( isNumber )
        {
            runtimeContext.put( RuntimeContext.TIMS_NUMBER, project.substring( 0, endIndex ) );
        }
        else
        {
            runtimeContext.put( RuntimeContext.TIMS_NUMBER, project );
        }
    }

    Запостил: guest, 20 Декабря 2008

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

    • funny-java.blogspot.com:
      Да, с одной стороны, вроде и выглядит криво.
      Но с другой стороны, а как это сделать лучше?
      Ответить
    • Дмитрий Левчук:
      Из видимых улучшений можно сказать только про убирание повторного вызова substring, да вынести проверку строки на формат в подфункцию.

      Функции, которая определяет интежер это или нет - вроде как в стандартной жаве не существует. А регулярные выражения, скорее всего, сольют по производительности. Так что код как код. Вполне неплохой, пусть и внешне не сияющий совершенством.
      Ответить
    • Лучше сделать так:

      private String getNumberStr(String str)
      {
      ... // тут все понятно, если не число - вернем null
      }

      private void setTims( String project )
      {
      String num = getNumberStr(project);
      String res = ( num != null ) ? num : project;
      runtimeContext.put( RuntimeContext.TIMS_NUMBER, res);
      }

      Достаточно вспомнить принцип ООП: "каждый метод должен выполнять ровно одну функцию и быть настолько простым, насколько это возможно, но не проще".

      А вообще советую почитать книжку "Совершенный код". После этого подобные решения видишь почти сразу )
      Ответить

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