От Java к Kotlin: Руководство по рефакторингу

От Java к Kotlin: Руководство по рефакторингу

От Java к Kotlin: Руководство по рефакторингу
Автор: Макгрегор Дункан, Прайс Нэт
Дата выхода: 2023
Издательство: БХВ-Петербург
Количество страниц: 450
Размер файла: 9,1 МБ
Тип файла: PDF
Добавил: codelibs
 Проверить на вирусы

Оглавление....6

Предисловие....12

Как устроена эта книга?....13

Как были выбраны темы?....13

Уровень сложности....14

Идеальный код....15

Форматирование кода....15

Условные обозначения....16

Использование примеров кода....17

Платформа онлайн-обучения O’Reilly....18

Как с нами связаться?....18

Благодарности....19

Благодарности Дункана....19

Благодарности Нэта....20

Глава 1. Введение....22

Сущность языка программирования....22

История стилей программирования на Java (на наш взгляд)....25

Первобытный стиль....25

Стиль JavaBeans....26

Корпоративный стиль....27

Инверсия абстракции....28

Современный стиль....30

Будущее....30

Сущность Kotlin....30

Рефракторинг на Kotlin....32

Принципы рефакторинга....33

Подразумеваем хорошее покрытие тестами....34

Фиксации изменений рассчитаны на Git Bisect....34

Над чем мы работаем?....35

Приступим!....35

Глава 2. Перевод проектов с Java на Kotlin....36

Стратегия....36

Добавление поддержки Kotlin в сборку Java....38

Другие системы сборки....41

Двигаемся дальше....41

Глава 3. От классов Java к классам Kotlin....42

Исходный код....42

Простой тип значений....42

Ограничения классов данных....49

Двигаемся дальше....53

Глава 4. От необязательных типов к обнуляемым....55

Как представить отсутствие чего-либо?....55

Рефракторинг от необязательных типов к обнуляемым....57

Итерация и цикл for....59

Рефракторинг с помощью Expand-and-Contract....65

Рефракторинг в код, характерный для Kotlin....65

Двигаемся дальше....72

Глава 5. От объектов JavaBeans к значениям....73

JavaBeans....73

Значения....74

Почему следует выбирать значения?....75

Рефакторинг экземпляров JavaBeans в значения....75

Равенство объектов....82

Двигаемся дальше....83

Глава 6. От коллекций Java к коллекциям Kotlin....84

Коллекции Java....84

Не изменяйте разделяемые коллекции....87

Коллекции Kotlin....87

Рефакторинг от коллекций Java к коллекциям Kotlin....90

Подправим код на Java....91

Преобразование в Kotlin....96

Двигаемся дальше....100

Глава 7. От действий к вычислениям....101

Функции....101

Вычисления....102

Вычисляемое свойство или функция?....103

Действия....103

Почему это должно нас волновать?....104

Процедурное программирование....105

Почему предпочтение отдается вычислениям?....105

Рефракторинг действий в вычисления....106

Существующий код....106

2015 был концом времени....110

Улучшенный проект....110

Конец игры....116

Двигаемся дальше....119

Глава 8. От статических методов к функциям верхнего уровня....120

Модификатор Static в Java....120

Статическое состояние....120

Функции верхнего уровня в Kotlin, объекты и объекты-компаньоны....121

Рефракторинг от статических методов к функциям верхнего уровня....123

Удобные функции....124

Перемещение на верхний уровень....127

Kotlin'изация....128

Перемещение функций верхнего уровня....130

Двигаемся дальше....130

Глава 9. От многострочных функций к однострочным....131

Попытка № 1: Замена встроенным выражением....133

Попытка № 2: Ввести функцию....134

Попытка № 3: Блок Let....139

Попытка № 4: Отступление....141

Что должен возвращать метод Parse?....144

Двигаемся дальше....144

Глава 10» От функций к функциям-расширениям....146

Функции и методы....146

Функции-расширения....148

Расширения и типы функций....149

Свойства-расширения....150

Преобразования....150

Как именовать преобразования?....151

Обнуляемые параметры....152

Обнуляемые получатели....153

Обобщенные расширения....155

Функции-расширения в качестве методов....156

Рефракторинг к функциям-расширениям....156

Двигаемся дальше....172

Глава 11. От методов к свойствам....173

Поля, акцессоры и свойства....173

Как выбрать?....177

Мутирующие свойства....179

Рефракторинг к свойствам....179

Двигаемся дальше....185

Глава 12. От функций к операторам....186

Базовый класс: Money....186

Добавление определяемого пользователем оператора....188

Вызов нашего оператора из существующего кода Kotlin....190

Операторы для существующих классов Java....192

Соглашения для аннотаций значений....192

Двигаемся дальше....196

Глава 13. От потоков к итерируемым объектам и последовательностям....197

Потоки в Java....197

Итераторы в Kotlin....199

Последовательности в Kotlin....200

Замена итераций и последовательностей....200

Множественные итерации....201

Выбор между потоками, итераторами и последовательностями....204

Алгебраическая трансформация....205

Рефракторинг от потоков к итераторам и последовательностям....208

Сначала итераторы....211

Последовательности....215

Извлечение части конвейера....219

Итоговая уборка....221

Двигаемся дальше....222

Глава 14. От накопления объектов к преобразованиям....223

Вычисление с использованием параметров накопления....223

Рефакторинг функций над немутирующими данными....228

Давайте проделаем это снова....234

Обогащение обнаруженной нами абстракции....238

По поводу имен....239

Двигаемся дальше....240

Глава 15. От инкапсулированных коллекции к псевдонимам типов....242

Защитные копии....243

Создание коллекций доменов....244

Коллекции с другими свойствами....245

Рефракторинг инкапсулированных коллекций....246

Преобразование операций в расширения....247

Замена псевдонима типа....249

Рефракторинг коллекций с другими свойствами....255

Двигаемся дальше....258

Глава 16. От интерфейсов к функциям....260

Объектно-ориентированная инкапсуляция....261

Функциональная инкапсуляция....264

Функциональные типы в Java....267

Сочетание и совмещение....270

Выразительные типы функций....272

Сравнение подходов....273

Соединение....276

Объектно-ориентированный или функциональный?....277

Наследие Java....280

Прослеживаемость....281

Рефракторинг от интерфейсов к функциям....281

Введение функций....285

Двигаемся дальше....289

Глава 17. От мокинга к маппингу....290

Повреждение теста, вызванное моком....291

Замена мокинга маппингом....293

Но действительно ли мы хотим уйти от моков?....298

Двигаемся дальше....302

Глава 18. От открытых классов к запечатанным....303

Полиморфизм или запечатанные классы?....307

Преобразование интерфейса в запечатанный класс....308

Двигаемся дальше....316

Глава 19. От проверяемых исключений к типам результатов....317

Перезагрузка интернет-соединения....317

Обработка ошибок до появления методов, основанных на исключениях....319

Обработка ошибок с исключениями....320

Java и проверяемые исключения....321

Как должен быть оформлен сбой parselnt?....322

Kotlin и исключения....323

За пределами исключений: функциональная обработка ошибок....323

Обработка ошибок в Kotlin....327

Рефракторинг от исключений к обработке ошибок....328

HTTP....329

Наша стратегия преобразования....330

Начнем с самого низа....331

Именование....332

Контракт....336

Отступление....340

Еще исправления....344

Слои....350

Двигаемся дальше....352

Глава 20. От выполнения ввода/вывода к передаче данных....354

Прослушивание тестов....354

Ввод/вывод данных....357

Рефакторинг для удобства чтения....362

Эффективное написание....362

Еще о стимулах к работе....362

Эффективное считывание....366

Двигаемся дальше....371

Глава 21. От исключений к значениям....372

Определение того, что может пойти не так....372

Представление ошибок....380

А как насчет ввода/вывода?....388

Двигаемся дальше....389

Глава 22. От классов к функциям....390

Приемочный тест....390

Модульное тестирование....395

Заголовки....400

Различные разделители полей....409

Последовательности....416

Считывание из файла....422

Сравнение с Commons CSV....427

Двигаемся дальше....433

Глава 23. Продолжение путешествия....434

О сущностях....434

Функциональное мышление....435

Простая конструкция....437

Функциональное программирование и текстуальные рассуждения....438

Рефакторинг....439

Рефакторинг и функциональное мышление....440

Предметный указатель....442

Об авторах....444

Об изображении на обложке....445

Книга описывает практические приемы рефакторинга и переноса кода написанных на Java мобильных приложений для Android  на язык Kotlin с сохранением совместимости. Приведено подробное сравнение этих двух языков, даны примеры перевода проектов с Java на Kotlin, добавления поддержки Kotlin в сборку Java. Показан переход от классов Java к классам Kotlin, от коллекций Java к коллекциям Kotlin, от объектов JavaBeans к значениям, от статических методов к функциям верхнего уровня. Подробно рассматривается обработка ошибок, приведены практические приемы управления проектами со смешанной кодовой базой. Даны советы по рефакторингу кода и функциональному программированию на Kotlin.

Для программистов

Расстояние от острова Ява до острова Котлин составляет 9892 километра по прямой. Чтобы преодолеть его, не пользуясь воздушным транспортом, понадобится как минимум неделя. Если вы — опытный Java-разработчик, который решил перейти на Kotlin, вам потребуется примерно столько же времени. Вы обнаружите, что в Kotlin все делается по-другому, он требует иных подходов к программированию. Этот язык более функционален, у него больше возможностей, поэтому перенос кода ваших проектов с Java на Kotlin — отличная идея.

Ваши гиды Дункан и Нэт уже проделали этот путь в 2015 году, и с тех пор помогли многим командам и отдельным разработчикам повторить его. Путешествуйте вместе с ними по проверенному маршруту, включающему такие промежуточные остановки, как переход от объектов JavaBeans к значениям, от коллекций Java к коллекциям Kotlin и от классов Java к классам Kotlin.

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


Похожее:

Список отзывов:

Нет отзывов к книге.