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

    +82

    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
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    @ValidationExpression(value = "if (inn != null && !\"\".equals(inn)) {\n" +
                                  "char[] st = inn.toCharArray();\n" +
                                  "for(int i=0; i < st.length; i++) {\n" +
                                  "if (!Character.isDigit(st[i])) { return false; }\n" +
                                  "}\n" +
                                  "}" +
                                  "return true;", message = Messages.WRONG_INN_FORMAT)
    @Expression(value = "if (inn != null && !\"\".equals(inn)) {\n" +
                        "char[] st = inn.toCharArray();\n" +
                        "for(int i=0; i < st.length; i++) {\n" +
                        "if (!Character.isDigit(st[i])) { return false; }\n" +
                        "}\n" +
                        "}" +
                        "return true;", messageKey = Messages.WRONG_INN_FORMAT)
    public String getinn() {
    	return getPerson().getinn();
    }
    
    @Required(messageKey = Messages.REQUIRED)
    @DictEntityExists(dictId = MDictionaries.DICT_CURRENCY, message = Messages.NO_DICT_ENTITY)
    @Expression(value = "SystemCounter.DICTCURRENCY__RUR_CURRENCY_TYPE.equals(agentStatementCurrencyId) ? " +
                        "   (" +
                        "       SystemCounter.DICTCURRENCY__RUR_CURRENCY_TYPE.equals(currency_id) ? " +
                        "           true : " +
                        "           SystemCounter.DICTCONTRACTCLASS__CONTRACT_CLASS_XXX.equals(contract_class_id) ? " +
                        "               false : " +
                        "               is_currency_equivalent == 1" +
                        "   ) : (" +
                        "       SystemCounter.DICTCONTRACTCLASS__CONTRACT_CLASS_GENERIC.equals(contract_class_id) &&" +
                        "       is_currency_equivalent == 0 &&" +
                        "       agentStatementCurrencyId.equals(currency_id)" +
                        "   )", messageKey = Messages.CURRENCY_NOT_EQUIVALENT_WITH_AGENT_STATEMENT)
    public String getcurrency_id() {return getContract().getcurrency_id();}

    нет слов

    Запостил: borka, 21 Июля 2010

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

    • мля. вот это как раз то, чего я боялся с введением в яву аннотаций. нео-классика, млять!
      Ответить
      • Да ладно, любую фичу можно довести до абсурда.
        Ответить
      • по ходу, предполагалось что нечто скриптово-декларативное будет жить в конфигурациях, а в результате аффтаром был реализован чистый java-императив да еще и в аннотациях.
        Ответить
        • целый код валидации. а на самом то деле, код надо было выносить в классы и писать обработчик аннотации так, что бы по аннотациям код не интерпретировался а вызывались нужные методы нужных проверочных классов
          Ответить
          • Это было ясно всем кроме аффтара. Только лучше было бы указывать на классы валидаторов, а не на методы валидации.
            Ответить
          • Это пиздец, товарищи
            а) Писать надо для стороннего движка валидации (OVal, Hibernate Validator, Spring Validation etc). Судя по @DictEntityExists и другим аннотациям, тут делается для самопальнольного движка
            б) Expressions лучше вообще не использовать. Во всех движках есть аннотации типа оваловского @ValidateWithMethod
            в) имена геттеров наверное вводилось вручную ?!
            г) имена констант - жопа (чего только стоит DICTCONTRACTCLASS__CONTRACT_CLASS_XXX)
            Ответить
    • вау, да это ж по сути evalы
      Ответить
      • эти аннотации потом обрабатываются скриптовым движком, понимающим синтаксис java
        Ответить
      • ebal'ы это сплошные.
        Ответить
    • эта пять!
      Ответить
    • да, и почему то не public String getInn(), public String getCurrencyId(). аффтар точна третий как с ветки пхп слез
      Ответить
      • ну подобный стиль еще в C использовался
        Ответить
        • Капетан очевидность сообщает:

          в си использовался вот_такой_стиль.

          А в джаве -- кемел кейс: вотТакойСтиль.

          а в C# -- паскаль стайл: ВотТакойСтиль.
          Ответить
          • о_0 у нас контора пишет на c/c++ java-like style?
            Ответить
            • в данном случае названия полей и методов соответствуют названиям колонок в базе
              Ответить
              • Это понятно, я про
                >> А в джаве -- кемел кейс: вотТакойСтиль.
                Ответить
              • а у нас в конторе было принятно писать:
                @Entity 
                public class ExEntity
                {
                
                @Column(name="COLUMN_NAME")
                private String columnName;
                
                public String getColumnName()
                {
                 return this.columnName;
                }
                
                public void setColumnName(String columnName)
                {
                 this.columnName=columnName;
                }
                
                }


                то есть не надо привязывать стиль именования в базе к стилю написания классов (в данном случае пример Hibernate entity)
                Ответить
                • Конечно, обычно так и делают. Но проект бородатый - он писался еще до Java 1.5.
                  Ответить
            • ))я говорил об обычном C.

              хотя например api у винды ВТакомСтиле (CreateProcess), а у никсов обычно в_таком_стиле (fork)
              Ответить
    • Да уж, жестянуха!
      Только я всё-таки не понимаю, как это работает. Видимо, я ещё не всё знаю о Яве.. :(
      Ответить
      • эти аннотации потом обрабатываются скриптовым движком, понимающим синтаксис java
        Ответить
    • Сижу за перевернутым столом с ружьем, жду прихода с++0x
      Это ж сколько кала из новых фич полезет... Сначала за собой начну это замечать, потом за другими...
      Это страшно, господа.
      PS: это насчет первого каммента
      Ответить
      • блин, а ты прав... зато тут на сайте скучно не будет
        PS и эта ждем наплыва где здесь C++0xников? )))
        Ответить
      • зато сайт говнокод.ру будет ждать целая туча не-бойянов! )))
        Ответить
        • Сдается мне, недолго будет это интересно. Ну что там? Пустая лямбда... Пицот лямбд в каждой строчке со срачем "как это скомпилит компилятор"... Автотип, который ВНЕЗАПНО окажется не тем типом.. Это Уже Сейчас бояны.
          Питонобояны еще частично переместятся в сибояны (смешное слово получилось, с "долбоебом" немного созвучно).
          Ну и раз в месяц обсуждение "а в гцц оно будет не так как у мелкомягких" с последующими проклятиями в адрес тех, кто что-нибудь не допилил.
          Еще будут холивары трусишеров (сокр. трусишек), которые сейчас вдруг стали появляться и тех, кто за Малах++0_X (это смайлик).
          Боюсь, что не будет это весело. Это будет куча навоза, произведенная нами и окружающими.
          Грустно это всё, грустно. И несет меня чето. Наверно потому, что грустно. Весна началась, хуле.
          Ответить
    • Ад
      Ответить

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