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

    +72

    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
    Double extractShare(Product product, ShareExtractor extractor) {
            if (product != null) {
    
                Equity equity = product.getEquity();
    
                if (equity != null) {
                    Double shareMetric = extractor.extract(equity);
                    if (shareMetric != null) {
                        return shareMetric;
                    }
                }
            }
            return 0.0;
        }
    
        private interface ShareExtractor {
    
            ShareMetricExtractor PUBLIC_SHARE_OUTST_EXTRACTOR = new ShareExtractor() {
                @Override
                public Double extract(Equity equity) {
                    return equity.getPublicShareOutst();
                }
            };
    
            ShareMetricExtractor SHARE_OUTST_EXTRACTOR = new ShareExtractor() {
                @Override
                public Double extract(Equity equity) {
                    return equity.getShareOutst();
                }
            };
    
            Double extract(Equity equity);

    Архитектор головного мозга - это диагноз. Фанатзия нашего системного архитектора толи зашкалила, то ли дала сбой. Сей фердопердозный код был заменен следующим же коммитом, но свн помнит все! )

    Запостил: jericho, 22 Апреля 2013

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

    • а можно код на что поменяли тоже выложить?
      Ответить
    • Какой-то недоученный архитектор. Мало того, что он изобрёл Function<Equity, Double>, так ещё и запихнул реализации прямо в интерфейс.
      Конечно, мне часто не хватает автоматического преобразования методов вида Thing MyClass.getThing() в Function<MyClass, Thing>, но лишь для преобразований последовательностей, а уж точно не в таком контексте, в котором оно здесь применено.
      Ответить
    • После втрого просмотра код мне уже не кажется таким уж явным говмном. Заменен он был на:
      Double[] extractShare(Product product){
      ....
      return {equity.getPublicShareOutst(), equity.getShareOutst()};
      }
      Ответить
    • private interface ShareExtractor {
              ShareExtractor PUBLIC_SHARE_OUTST_EXTRACTOR
              ShareExtractor SHARE_OUTST_EXTRACTOR
      }

      ненавижу такое именование.
      ShareExtractor.SHARE_OUTST_EXTRACTOR - выгядит как масло масляное. ну на кой хер два раза писать extractor и share??? это как PhoneType.MOBILE_PHONE или PhoneType.MOBILE_TYPE.
      Ответить
      • Я знал человека, который во все поля в таблицах писал сначала название таблицы, а потом поля. Получалось типа select users_tbl.users_tbl_user_id from users_tbl. Ему казалось, что он что-то полезное делает. И порядок был.
        Ответить
        • А делал он это походу чтобы писать
          select users_tbl_user_id from users_tbl
          но потом забыл, и стал писать с точкой.
          Ответить
      • Smurf Naming Convention
        Ответить

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