Ява: Долой Старое, Новым - PullRequest
65 голосов
/ 03 ноября 2008

Java приближается к версии 7. Мне приходит в голову, что должно быть много учебников и учебных пособий, которые обучают методам, основанным на более старых версиях Java, где преподаваемые методы будут иметь гораздо лучшие решения сейчас.

Каковы некоторые типовые ситуации с кодом, особенно те, которые, как вы видите, люди реализуют по привычке, и которые вы реорганизуете, чтобы использовать последние версии Java?

Ответы [ 30 ]

5 голосов
/ 07 марта 2009

Изменение тестов в стиле JUnit 3:

class Test extends TestCase {
    public void testYadaYada() { ... }
}

для тестов в стиле JUnit 4:

class Test {
   @Test public void yadaYada() { ... }
}
4 голосов
/ 18 сентября 2009

Улучшены синглтон-паттерны. Технически они подпадают под популярные списки ответов, но это важная подкатегория.

public enum Singleton {
    INSTANCE;

    public void someMethod() {
        ...
    }
}

чище и безопаснее

public class Singleton {
    public static final Singleton INSTANCE = new Singleton();

    private Singleton() {
        ...
    }

    public void someMethod() {
        ...
    }
}
3 голосов
/ 30 мая 2009

Использование новых DefaultRowSorter в Swing для сортировки таблиц и создания собственных с нуля.

3 голосов
/ 10 марта 2009

Преобразование классов для использования дженериков, что позволяет избежать ситуаций с ненужными приведениями.

3 голосов
/ 10 марта 2009

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

В конце концов, этот пример на самом деле не удаляет код котельной плиты , он просто использует более управляемые конструкции более новых JDK, чтобы создавал красивый код котельной плиты .

Большинство способов сделать ваш код элегантным не в JDK.

3 голосов
/ 11 марта 2009

Хорошо, теперь моя очередь кричать.

Я не рекомендую 90% этих изменений.

Дело не в том, что использовать их с новым кодом не очень хорошая идея, а взломать существующий код для замены цикла for на цикл for (:) - это просто пустая трата времени и шанс что-то сломать. (IIWDFWI) Если это работает, не исправляйте это!

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

Если бы кто-то, кто занимался подобным образом рефакторингом без причины, вызвал проблему ЛЮБОГО типа, я бы не стал им дерьмо.

С другой стороны, если вы в коде и все равно что-то меняете в этой строке, не стесняйтесь убирать его.

Также все предложения на имя «Производительность» действительно необходимо узнать о законах оптимизации. В двух словах, не надо! Когда-либо! (Google "Правила оптимизации, если вы мне не верите).

2 голосов
/ 03 ноября 2008

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

Если вы просто оставите старый код в покое, то написание нового кода с использованием новых функций не так страшно.

1 голос
/ 06 марта 2009

Использование вектора вместо новых коллекций.

Использование классов вместо перечислений

 public class Enum
  {
      public static final Enum FOO = new Enum();
      public static final Enum BAR = new Enum();
  }

Использование Thread вместо нового пакета java.util.concurrency.

Использование маркерных интерфейсов вместо аннотаций

1 голос
/ 04 ноября 2008

Сравнение строк, действительно старые программисты на Java, с которыми я встречался, могут:

String s1 = "...", s2 = "...";

if (s1.intern() == s2.intern()) {
    ....
}

(предположительно по соображениям производительности)

В то время как в наши дни большинство людей просто делают:

String s1 = "...", s2 = "...";

if (s1.equals(s2)) {
    ....
}
0 голосов
/ 30 мая 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...