Методы
В этой главе обсуждаются несколько аспектов разработки методов: как обрабатывать параметры и возвращаемые значения, как проектировать сигнатуры методов и как писать документацию для методов. Большая часть содержания этой главы применима к конструкторам и методам. Как и в четвёртой главе, здесь основное внимание уделяется доступности, надёжности и гибкости.
Универсальное программирование
Эта глава в основном посвящена конкретным деталям языка Java, включая локальные переменные, управляющие структуры, библиотеки классов, типы данных и два механизма, которые не предоставляются самим языком (отражение и нативный метод). Наконец, обсуждаются оптимизация и соглашения об именах.
Исключения
Обычно исключения могут повысить читаемость, надёжность и удобство сопровождения программы. Неправильное использование может привести к противоположному эффекту. В этой главе представлены рекомендации по эффективному использованию исключений.
Пункт: стараться делать так, чтобы сбои оставались атомарными.
[Пункт 77: не игнорировать исключения](https://gitee.com/lin-mt/effective-java-third-edition/blob/master/Глава 10: Исключения/Пункт 77: Не игнорировать исключения.md)
Параллельное программирование позволяет выполнять несколько действий одновременно. Параллельное программирование намного сложнее последовательного, потому что может произойти множество ошибок, которые трудно воспроизвести. Вы не можете избежать параллелизма. Он уже существует на платформе Java, и если вы хотите получить лучшую производительность от многоядерных процессоров, то параллелизм является необходимым условием, и это становится всё более распространённым. В этой главе представлены рекомендации, которые помогут вам написать ясные, правильные и хорошо документированные параллельные программы.
[Пункт 78: Синхронный доступ к общим изменяемым данным] [Пункт 79: Избегать чрезмерной синхронизации] [Пункт 80: Предпочитать executor, task и stream потокам] [Пункт 81: Предпочесть параллельные инструменты wait и notify] [Пункт 82: Документировать безопасность потоков] [Пункт 83: Осторожно использовать ленивую инициализацию] [Пункт 84: Не полагаться на планировщик потоков]
В этой главе рассматривается объектная сериализация, которая представляет собой структуру в Java для кодирования объектов в поток байтов (сериализации) и восстановления объектов из этого потока (десериализации). Как только объект был сериализован, его кодировка может быть отправлена из одной виртуальной машины в другую или сохранена на диске для последующей десериализации. Эта глава фокусируется на том, как минимизировать риски, связанные с сериализацией.
[Пункт 85: Предпочесть другие методы Java-сериализации] [Пункт 86: Осмотрительно реализовывать интерфейс Serializable] [Пункт 87: Рассмотреть использование пользовательской сериализации] [Пункт 88: Защищённо писать метод readObject] [Пункт 89: Для контроля экземпляров использовать перечисления вместо readResolve] [Пункт 90: Рассмотреть замену сериализуемых экземпляров сериализационными прокси]
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.