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

    −43.8

    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
    private Map<Class<?>, Map<String, String[]>> compressDependencies(
          Map<Class<?>, Map<String, List<String>>> dependencies) {
        final Map<Class<?>, Map<String, String[]>> result =
            new FastMap<Class<?>, Map<String, String[]>>(dependencies.size());
        final Set<Entry<Class<?>, Map<String, List<String>>>> entrySet = dependencies.entrySet();
        for (Entry<Class<?>, Map<String, List<String>>> entry : entrySet) {
          final Map<String, List<String>> value = entry.getValue();
          final Map<String, String[]> desc = new FastMap<String, String[]>(value.size());
          final Set<Entry<String, List<String>>> subEntries = value.entrySet();
          for (Entry<String, List<String>> valueEntry : subEntries) {
            final List<String> list = valueEntry.getValue();
            if (list != null && !list.isEmpty()) {
              desc.put(valueEntry.getKey(), list.toArray(new String[list.size()]));
            }
          }
          result.put(entry.getKey(), desc);
        }
        return result;
      }

    Код от "мега разработчика", архитектора очень большого проекта.

    PS Будьте осторожны в использовании java generics :)

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

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

    • CTAPbIu_MABP:
      чувак нереально крут
      Ответить
    • funny-java.blogspot.com:
      Не могу согласиться насчёт generics. Без них его код был бы вообще смертельным.
      Ответить
    • Джедай
      Ответить
    • Map<Class<?>, Map<String, String[]>> - это сильно )
      Хотя если оно ДЕЙСТВИТЕЛЬНО надо, то код вполне нормальный.
      Более того, при подцветке синтаксиса он вполне даже нормально читается.

      Единственное, к чему бы я действительно придрался - это к проверкам ключей на null.
      Ответить
    • У меня бывало и больше generic'ов ) аж до 5-6 параметризуемых типов для одного класса. Прикол в том, что конкретные наследники их определяют, и для них уже не нужно писать код - все есть в суперклассах.
      Так что много - не значит плохо. Главное - грамосто использовать.
      P.S. Я бы еще к форматированию придрался - для generic'ов оно имеет довольно большой вес.
      Ответить
      • показать все, что скрытоvanished
        Ответить
        • показать все, что скрытоvanished
          Ответить
          •   ____                                                                                     
             |___ \                                                                                    
               __) | __ _  ___  ___ _     __  __  ___  ___    __ _   ___ _    _   ___ _    _ _____ _   
              |__ < / _` |/ _ \/ __| |_  |  \/  |/ _ \| ._/\ / _` | | __| |_ | | | __| |_ | |_. ._| |_ 
              ___) | (_| |  __/ (__| _ \ | \  / | (_) | |/  \ (_| | | _ \ _ \| | | _ \ _ \| | | | | _ \
             |____/ \__, |\___|\___|___/ |_|\/|_|\___/|_/_/\_\__,_| |___/___/|_| |___/___/|_| |_| |___/
                     __/ |                                                                             
              ___  _|___/   _   _  __ _   _ __   ___ _  __      __ _ __  __  __ _                      
             | _ \/ _` | | | | | |/ _` | | '_ \ / _ \ |/ /  /\ / _` |  \/  |/ _` |                     
             | _ ( (_| | |_| |_| | (_| | | |_) |  __/   <  /  \ (_| | \  / | (_| |_                    
             |___/\__,_|_________|\__,_| | .__/ \___|_|\_\/_/\_\__,_|_|\/|_|\__,_(_)                   
                                         | |                                                           
                                         |_|
            Ответить

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