Nick Hodges / Ник Ходжес - More Coding in Delphi [2015, PDF, ENG]

Страницы:  1
Ответить
 

sag2007

Стаж: 15 лет 2 месяца

Сообщений: 15


sag2007 · 11-Окт-16 12:06 (8 лет 8 месяцев назад, ред. 14-Окт-16 12:43)

More Coding in Delphi
Год издания: 2015
Автор: Nick Hodges / Ник Ходжес
Жанр или тематика: Учебник
Издательство: Nepeta Enterprises
ISBN: 978-1941266106
Язык: Английский
Формат: PDF
Качество: Издательский макет или текст (eBook)
Количество страниц: 229
Описание: Больше кодинга на Дельфи
Эта книга посвящена исключительно написанию кода в Дельфи. Конечно, здесь говорится и о написании компонентов, но основной акцент сделан на код. Она преимущественно о том, как использовать язык с максимальной эффективностью для написания чистого, тестируемого и поддерживаемого кода. Она содержит описание разных особенностей и технологий языка Дельфи, включая паттерны, потоки, параллельное программирование, аспектно-ориентированное программирование, написание SOLIDного кода (конечно, это акроним от Single responsibility, Open-closed, Liskov substitution, Interface segregation и Dependency inversion).
Примеры страниц
Оглавление
Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ii
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iv
Frameworks Used in this Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v
Spring for Delphi Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v
DuckDuckDelphi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v
Six Thoughts Before We Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Thoughts on Encapsulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Thoughts on Coupling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Thoughts on Cohesion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Thoughts on Command Query Principle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Thoughts on Postel’s Law . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Thoughts on Composition over Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Writing SOLID Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
What SOLID Is . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Single Responsibility Principle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Open/Closed Principle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Liskov’s Substitution Principle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Interface Segregation Principle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Dependency Inversion Principle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Factory Pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
An Informal Look at Factories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
A More Formal Look at Factories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Factory Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Abstract Factory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Observer Pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Baseball Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Generic Observer with Spring4D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
The Adapter Pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
A Simple Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
A More Practical Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Decorator Pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Decorator and Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
A Simple Example: An Auto Key Fob . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Undoing Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
A Simple Queue of Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Operator Overloading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
An Example: TFraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Implicit vs. Explicit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Using TFraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Multi-Threading and Parallelism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
About These Three Chapters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
What is a Thread? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Think Differently . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Why Should I Care About Multi-threaded and Parallel Programming? . . . . . . . . . . . . . . . . 102
Multi-threading with TThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Descending from TThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Thread Termination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Handling Exceptions in Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
TThread Class Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Abstracting the Notion of Synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
The Perils of Multi-threading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Parallel Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Parallel Programming Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Parallel For Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Aspect-Oriented Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
An Illustration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
The Basics: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
A More Useful Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
AOP in a Single Place . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
AOP via Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Component Writing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
TSmiley – A Brief History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Start from Scratch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Appendix A: Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Source Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Appendix B: Duck Typing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
What is Going on Here? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Duck Typing with DSharp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Duck Typing with DuckDuckDelphi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Duck Typing in the VCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
Why Use Duck Typing? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Problems with Duck Typing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Appendix C: Stuff Nick Does When Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Formatting Stuff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Spacing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Coding Stuff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Appendix D: Sources Used in Writing This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Books . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Web Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Videos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Download
Rutracker.org не распространяет и не хранит электронные версии произведений, а лишь предоставляет доступ к создаваемому пользователями каталогу ссылок на торрент-файлы, которые содержат только списки хеш-сумм
Как скачивать? (для скачивания .torrent файлов необходима регистрация)
[Профиль]  [ЛС] 

sag2007

Стаж: 15 лет 2 месяца

Сообщений: 15


sag2007 · 11-Окт-16 12:22 (спустя 15 мин., ред. 11-Окт-16 12:22)

Надеюсь, обе книжки будут полезными. Мне помогло поставить мозги на место ))
Начало (первая часть) тут.
[Профиль]  [ЛС] 

Osco do Casco

VIP (Заслуженный)

Стаж: 15 лет 11 месяцев

Сообщений: 13514

Osco do Casco · 13-Окт-16 07:38 (спустя 1 день 19 часов)

sag2007!
Пожалуйста:
1. Измените скриншоты - они должны быть от 750 до 1000 пикселей по большей тороне
2. Переименуйте файл по модели
Цитата:
Автор - Название - Год.расширение
и перезалейте торрент-файл
[Профиль]  [ЛС] 

sag2007

Стаж: 15 лет 2 месяца

Сообщений: 15


sag2007 · 14-Окт-16 12:48 (спустя 1 день 5 часов)

Превьюшки поправил, файл переименовал, перезалил.
[Профиль]  [ЛС] 

Osco do Casco

VIP (Заслуженный)

Стаж: 15 лет 11 месяцев

Сообщений: 13514

Osco do Casco · 22-Окт-16 23:44 (спустя 8 дней)

sag2007!
П.1 не сделан.
[Профиль]  [ЛС] 

День знаний

Стаж: 10 лет 10 месяцев

Сообщений: 2125

День знаний · 13-Ноя-16 02:14 (спустя 21 день)

Цитата:
Какие иностранные языки вы знаете
sag2007, решили с программных языков перейти на естественные?
[Профиль]  [ЛС] 

sag2007

Стаж: 15 лет 2 месяца

Сообщений: 15


sag2007 · 24-Ноя-16 01:17 (спустя 10 дней)

void main() писал(а):
71667423sag2007!
П.1 не сделан.
1080х1408???? Вроде соответствует...
[Профиль]  [ЛС] 

TheParanoid

Стаж: 18 лет

Сообщений: 102


TheParanoid · 08-Июн-18 14:22 (спустя 1 год 6 месяцев)

Хорошая книга для тех, кто программирует только на Delphi.
[Профиль]  [ЛС] 
 
Ответить
Loading...
Error