Java осуществляет рефакторинг к промышленным стандартам Дженериков

Кажется, существуют некоторые дебаты по рефакторингу для использования дженериков Java в моей текущей команде. Вопрос, который я имею, - то, что текущие промышленные стандарты с точки зрения рефакторинга более старого кода Java для использования в своих интересах некоторых из этих функций? Конечно, промышленными стандартами я обращаюсь к лучшим практикам. Ссылка на книгу или сайт с ними перечисленными будет награждена голосованием ответа, поскольку это - наименее субъективный способ обработать этот вопрос.

5
задан Woot4Moo 27 February 2010 в 00:46
поделиться

6 ответов

Документы этой исследовательской группы MIT могут дать вам некоторые полезные рекомендации:

4
ответ дан 18 December 2019 в 09:07
поделиться

Использование дженериков Java - определенно хорошая идея. Он обратно совместим. Таким образом, кодовая база, которую вы не можете преобразовать, будет продолжать работать с новым кодом.

РЕДАКТИРОВАТЬ : я должен был упомянуть стирание типа как причину, которая делает обратную совместимость.

3
ответ дан 18 December 2019 в 09:07
поделиться

Вы путаете два стиля CSS: стиль дисплея и стиль видимости .

Если элемент скрыт путем установки стиля видимости css, то можно получить высоту независимо от того, виден элемент или нет, поскольку элемент по-прежнему занимает место на странице .

Если элемент скрыт путем изменения стиля дисплея css на «none», то элемент не занимает места на странице, и вам придется дать ему стиль дисплея, который вызовет визуализацию элемента в некотором пространстве, в этот пункт можно получить высоту.

-121--576686-

OK, похоже, библиотека не поддерживает его, поэтому я использовал этот код:

import urllib2
import urlparse
import re

def get_hops(url):
    redirect_re = re.compile('<meta[^>]*?url=(.*?)["\']', re.IGNORECASE)
    hops = []
    while url:
        if url in hops:
            url = None
        else:
            hops.insert(0, url)
            response = urllib2.urlopen(url)
            if response.geturl() != url:
                hops.insert(0, response.geturl())
            # check for redirect meta tag
            match = redirect_re.search(response.read())
            if match:
                url = urlparse.urljoin(url, match.groups()[0].strip())
            else:
                url = None
    return hops
-121--3140555-

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

Аргументы и мнения «передовой практики» от людей, которые не понимают ваш проект и бизнес-контекст, здесь просто не актуальны.

1
ответ дан 18 December 2019 в 09:07
поделиться

Я не думаю, что слепое следование тому, что кто-то объявляет «Лучшая практика» или «отраслевой стандарт» всегда является хорошей идеей.Вы в лучшем случае можете решить, стоит ли менять код или нет.

Вам нужно ответить на следующие вопросы: какие преимущества вы получите от обновления старого кода, сколько это будет стоить и каковы риски?

Основное преимущество состоит в том, что вы улучшите проверку типов во время компиляции, что должно помочь обнаружить ошибки в новом коде, использующем обновленный код. Это может даже выявить ошибки в существующем коде. Код, который использует универсальные шаблоны, хотя иногда бывает довольно подробным, обычно более читабелен, поскольку в нем четко указано, какие типы допустимы в каких контекстах. Вам также больше не придется подавлять / игнорировать предупреждения компилятора.

Стоимость - это время, необходимое для внесения и тестирования необходимых изменений для внедрения дженериков. Каждый раз, когда вы вносите изменения в код, есть шанс внести ошибки, так что это риск. Перевешивают ли преимущества затраты? Это зависит от того, сколько у вас кода, как он используется и какие еще требования у вас есть.

8
ответ дан 18 December 2019 в 09:07
поделиться

Передовых методов не существует. Это странный термин, который предполагает, что дверь закрывается перед «лучшими качествами» конкретного решения ... Использовать дженерики? Да. Немедленно.Это неловкое путешествие, поскольку многие большие библиотеки (Hibernate, Spring) по-прежнему не могут полностью их охватить ... но, по моему опыту, работа с сочетанием дженериков и смелых приведений по-прежнему обеспечивает лучшую базу кода, чем отсутствие их вообще.

Я бы также сделал политику преобразовывать по мере касания вместо какой-то гигантской миссии по рефакторингу.

1
ответ дан 18 December 2019 в 09:07
поделиться

Лучшее практики для принятия дженериков? Первая лучшая практика - это «делать». Постарайтесь исключить из кода как можно больше приведений. Если вы хотите облегчить себе жизнь, используйте рефакторинг IntelliJ "Generify" - просто укажите его на всю кодовую базу, позвольте ему сделать свое дело, а затем выполните небольшую пост-очистку.

1
ответ дан 18 December 2019 в 09:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: