Показаны сообщения с ярлыком java. Показать все сообщения
Показаны сообщения с ярлыком java. Показать все сообщения

Не работает автодополнение в Eclipse

Иногда случается, что какой-то воркспейс использовался с одной версией Eclipse, потом стал использоваться с другой версией Eclipse и тут сломалось автодополнение (autocompletion) в Java. Решение в таком случае очень простое — надо создать новый воркспейс и импортировать туда проекты из старого, при этом отметив «Copy projects into workspace».

Effective Java: Concurrency

Напоминаю, что данная серия постов — кратчайшее изложение основных мыслей книги Effective Java 2nd edition. Они не заменят книги, но помогут освежить кое-что в памяти.


Item 66. Синхронизируйте доступ к общим (shared) изменяемым (mutable) данным.

Параграф о применении ключевых слов synchronized и volatile. Автор делает следующие выводы: лучше всего избегать межпоточной синхронизации использованием immutable объектов. Если это невозможно, всегда нужна синхронизация, иначе результат работы программы будет непредсказуем. В случаях, когда блокировки (ключевое слово synchronized) не нужны, допустимо использовать volatile. Но и с ним не всё так просто — надо помнить, что не все операции атомарны (++ и -- не атомарны, операции чтения и записи для long и double тоже).

Effective Java: Exceptions

Продолжаем. Сегодня речь о 9-й главе «Exceptions».


Item 57. Используйте exception-ы только для исключительных (exceptional) ситуаций.

Автор приводит пример применения исключений не по назначению для итерации по массиву без проверки выходна за границу.

// Horrible abuse of exceptions. Don't ever do this!
try {
    int i = 0;
    while(true)
        range[i++].climb();
} catch(ArrayIndexOutOfBoundsException e) {
}

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

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

Effective Java: General Programming (2/2)


Item 51. Конкатенация строк медленна.
Конкатенация ("+") n строк выполняется за время n2 - следствие того, что строки в Java неизменяемы (immutable); когда соединяются две строки, содержимое обеих полностью копируется в новую. Поэтому если требуется объединить большое или заранее неизвестное количество строк, рекомендуется использовать StringBuilder (есть ещё StringBuffer, но он синхронизован, поэтому медленнее).

Effective Java: General Programming (1/2)

Эта глава книги Effective Java собрала более общие советы по написанию кода на Java (и не только). Параграфов довольно много, поэтому я разбил свой сжатый пересказ на две части.

Item 45. Минимизируйте область видимости локальных переменных.
Это улучшает читабельность кода и уменьшает число потенциальных ошибок.
Прежде всего, по возможности объявлять локальную переменную надо там, где она впервые используется. Далее, почти все объявления локальных переменных должны содержать инициализацию. Исключение - когда инициализацию нужно поместить в try/catch блок, а сама переменная нужна снаружи него.
Отдельно следует отметить циклы. Цикл for предоставляет возможность объявлять переменные цикла (loop variables) доступными только для тела самого цикла, что делает его более предпочтительным, нежели циклы while.

Effective Java: Методы

Переходим к следующей главе книги.

Item 38. Проверяйте параметры на корректность.
Большинство методов и конструкторов имеют некоторые ограничения на передаваемые им параметры. Проверка корректности этих параметров позволяет обнаруживать проблемы как можно раньше, что облегчает её исправление.

Effective Java: Enums and Annotations


Item 30. Используйте enum-ы вместо целочисленных контант.
В Java 1.5 был введён новый тип - enum (перечисление). Перечисление имеет фиксированный набор допустимых значений: это могут быть времена года, планеты солнечной системы, масти игральных карт и т. п. Основная идея enum-ов: это классы, экпортирующие по одному экземпляру для каждого своего значения. Enum-ы - это обобщение синглотонов.

Effective Java: Generics

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

Item 23. Не используйте raw классы в новом коде.

Effective Java: Классы и интерфейсы

Продолжение серии постов об основных идеях книги Effective Java (2-е издание).

Effective Java: Общие для всех объектов методы

Следующая глава книги.

Item 8. Соблюдайте контракт метода equals, переопределяя его.

Effective Java: Создание и уничтожение объектов

Дочитал книгу Effective Java 2nd ed. и решил выделить основные идеи каждого из её параграфов. Прочтение этого никак не может заменить прочтения самой книги, но может послужить, например, для повторения материала.
Итак, первая после введения глава, Создание и уничтожение объектов (Creating and Destroying Objects).

Элементарный графический движок на Java



Disclaimer. Данный "движок" написан исключительно for fun и вряд ли сможет найти реальное применение.