Начать новую тему Ответить на тему
Статистика раздачи
Размер: 1.11 МБ | | Скачали: 14
Сидеров: 14  [0 байт/сек]    Личеров: 4  [0 байт/сек]
Пред. тема | След. тема 

Автор
Сообщение

Ответить с цитатой 

Coding in Delphi

Год издания: 2014
Автор: Nick Hodges / Ник Ходжес
Жанр или тематика: Учебник

Издательство: Nepeta Enterprises
ISBN: 978-1941266038
Язык: Английский

Формат: PDF
Качество: Издательский макет или текст (eBook)
Интерактивное оглавление: Да
Количество страниц: 236

Описание: Кодинг на Дельфи

Эта книга посвящена исключительно написанию кода в Дельфи. Она не об использовании компонентов VCL или организацию доступа к базам данных. Она преимущественно о том, как использовать язык с максимальной эффективностью для написания чистого, тестируемого и поддерживаемого кода. Она содержит описание разных особенностей и технологий языка Дельфи, включая дженерики, интерфейсы, обработку исключений, анонимные методы, коллекции, RTTI, перечисления, признаки, внедрение зависимостей и тестирование библиотек.
Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iii
Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v
Frameworks used in Coding in Delphi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi
Delphi Spring Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi
DUnitX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi
Delphi Mocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
DSharp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
1 Exceptions and Exception Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Structured Exception Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 How Not to Use Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 How to Use Exceptions Properly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2 Using Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Decoupling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3 What are Interfaces? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4 Interfaces Everywhere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.5 A Simple Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.6 Implementing an Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.7 Some Further Things to Note: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.8 Interface Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.9 Other Things to Think About . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.10 About TInterfacedObject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.11 How to Actually Use Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.12 Why Should You Be Using Interfaces? . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3 Understanding Generics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.1 Generics to the Rescue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2 Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.3 Generic Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.4 Generic Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.5 Generic Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.6 Thinking Generically . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.7 A Contrived, Simple Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.8 A Practical Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.9 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.10 An Interview with Generics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4 Understanding Anonymous Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.2 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3 Why? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.4 Closures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.5 Standard Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.6 A Practical Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.7 Another, Cooler Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.8 Anonymous methods in the RTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.9 Predicates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.10 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.11 An Interview with Anonymous Methods . . . . . . . . . . . . . . . . . . . . . . . . 63
5 Delphi Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.2 General Notions about Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.3 The Delphi-Provided Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.4 TQueue<T> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.5 Collections in the Delphi Spring Framework . . . . . . . . . . . . . . . . . . . . . . 75
5.6 Why you should be using the Spring4D Collections . . . . . . . . . . . . . . . . . . . 76
5.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6 Enumerators in Delphi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
6.2 IEnumerator<T> Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.3 Specialized Enumerators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
6.4 TEnumerable<T> in Generics.Collections . . . . . . . . . . . . . . . . . . . . . . . . . 85
6.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
7 IEnumerable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
7.1 IEnumerable<T> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
7.2 Predicates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
7.3 An Interview with IEnumerable<T> (IEoT): . . . . . . . . . . . . . . . . . . . . . . . 94
8 Run-time Type Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
8.2 TValue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
8.3 RTTI on Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
8.4 Using RTTI to Affect Instances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
8.5 General Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
8.6 RTTI for Non-classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
8.7 Miscellaneous Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
8.8 RTTI Compiler Directives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
8.9 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
9 Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
9.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
9.2 What are Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
9.3 A Simple Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
9.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
9.5 An Interview with Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
10 Using TVirtualInterface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
10.1 A Slightly Better TVirtualInterface . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
10.2 An Actually Useful Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
10.3 ISimpleStub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
10.4 TSimpleMock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
10.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
11 Introduction to Dependency Injection . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
11.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
11.2 What is a Dependency? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
11.3 The Law of Demeter (LoD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
11.4 A Design Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
11.5 Law of Demeter in Delphi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
11.6 A Step-by-Step Code Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
11.7 The Dependency Injection Container . . . . . . . . . . . . . . . . . . . . . . . . . . 153
11.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
12 A Deeper Look at Dependency Injection . . . . . . . . . . . . . . . . . . . . . . . . . . 159
12.1 Optional Dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
12.2 Setter Injection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
12.3 Method Injection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
12.4 The Delphi Spring Container and Service Locator . . . . . . . . . . . . . . . . . . . . 164
12.5 Registering via attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
12.6 ServiceLocator as Anti-pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
12.7 Dependency Injection Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
13 Unit Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
13.1 So What is Unit Testing? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
13.2 Why Do Unit Testing? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
13.3 Unit Testing in Delphi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
13.4 General Rules for Unit Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
13.5 Test Driven Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
13.6 A Basic Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
14 Testing with an Isolation Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
14.1 A Quick Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
14.2 Isolation Frameworks for Delphi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
14.3 Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
14.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Appendix A: Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Dependency Injection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Unit Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Source Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
General Good Stuff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Appendix B: My Delphi Story . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Правила, инструкции, FAQ!!!
Торрент   Скачать торрент Магнет ссылка
Скачать торрент
[ Размер 1.85 КБ / Просмотров 104 ]

Статус
Проверен 
 
Размер  1.11 МБ
Приватный: Нет (DHT включён)
.torrent скачан  14
Как залить торрент? | Как скачать Torrent? | Ошибка в торренте? Качайте магнет  


     Отправить личное сообщение
   
Страница 1 из 1
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему


Сейчас эту тему просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Ресурс не предоставляет электронные версии произведений, а занимается лишь коллекционированием и каталогизацией ссылок, присылаемых и публикуемых на форуме нашими читателями. Если вы являетесь правообладателем какого-либо представленного материала и не желаете чтобы ссылка на него находилась в нашем каталоге, свяжитесь с нами и мы незамедлительно удалим её. Файлы для обмена на трекере предоставлены пользователями сайта, и администрация не несёт ответственности за их содержание. Просьба не заливать файлы, защищенные авторскими правами, а также файлы нелегального содержания!