Гринзоу - Философия программирования Windows 95/NT
5-89051-005-3
Великолепная книга в великолепном переводе. Она не является ни учебником, ни вводным курсом и рассчитана на программисто
295
83
20MB
Russian
Pages 628
Year 1997
Report DMCA / Copyright
DOWNLOAD DJVU FILE
Table of contents :
Что ждет вас в WWW-библиотеке? ......Page 14
Благодарность ......Page 15
Что такое «программирование»? ......Page 17
Мой подход ......Page 20
Мои предположения относительно вас ......Page 21
Что вы найдете в этой книге ......Page 23
Чего вы не найдете в этой книге ......Page 25
Не оставайтесь в стороне ......Page 26
Часть I. Основы ......Page 28
Глава 1. Добро пожаловать в реальный мир ......Page 29
Windows 95 крупным планом ......Page 30
Публичные и приватные программы ......Page 31
Насколько публичное публично? ......Page 32
Этика и метафоры ......Page 33
Знакомьтесь: это ваши пользователи ......Page 34
Игры, в которые играют люди ......Page 35
Любовь приходит и уходит, а программы остаются ......Page 38
Как не следует относиться к пользователям-новичкам ......Page 39
Как нужно относиться к пользователям — новичкам и гуру ......Page 41
Стиль ......Page 45
Математики и ювелиры ......Page 47
Корректность ......Page 49
Разумность ......Page 51
Услужливость ......Page 53
Примеры с придирками: что такое «хорошо» и что такое «плохо» ......Page 55
Десять макроуровневых рекомендаций ......Page 61
0. Имейте широкий взгляд на мир и планируйте на будущее ......Page 62
1. Стремитесь к балансу во всех решениях ......Page 70
2. Сделайте принцип KISS вашей религией ......Page 75
3. You(Now) != You(Later) ......Page 77
4. Уважайте ресурсы вашего пользователя ......Page 83
6. Придерживайтесь широкого взгляда на инструментарий ......Page 88
7. Не забывайте о производительности ......Page 90
8. Не забывайте о тестировании ......Page 95
9. Думайте о повторном использовании кода ......Page 98
Глава 3. Философия разработки программного обеспечения для Windows: микропроблемы ......Page 102
Шесть микроуровневых рекомендаций ......Page 103
10. Абстрагируйтесь, абстрагируйтесь и снова абстрагируйтесь (и не беспокойтесь о цене вызова функции, пока программа сама не заявит об этом) ......Page 105
Что такое «оборонительное программирование»? ......Page 106
Природа предположений ......Page 107
«Доверяй, но проверяй» ......Page 109
Оборонительное программирование и повторное использование кода ......Page 114
12. Выделяйте код, отвечающий за пользовательский интерфейс вашей программы ......Page 133
13. Используйте умные файлы данных ......Page 135
14. Элегантно реагируйте на сюрпризы со стороны ......Page 137
15. Остерегайтесь противоестественных действий ......Page 139
Глава 4. Инструменты ......Page 144
Что такое «инструмент программирования» и почему он так важен ......Page 145
0. Исследуйте и эксплуатируйте ......Page 147
1. Добивайтесь симбиоза ваших инструментов ......Page 150
2. Не разбрасывайтесь и не переоценивайте свои силы ......Page 152
3. Не будьте слишком доверчивы к вашим поставщикам ......Page 153
4. Разумно эксплуатируйте публичные исходные коды ......Page 154
5. Не влюбляйтесь в ваш новый блестящий молоток ......Page 156
Типы инструментов ......Page 157
Справочные материалы ......Page 158
Компиляторы и языки программирования ......Page 161
C/C++: системный язык, используемый в качестве прикладного ......Page 163
Миф о переносимости ......Page 166
C/C++ и определяемые пользователем типы ......Page 167
Аттестации, аттестации и еще раз аттестации ......Page 168
И чтобы не забыть ......Page 170
Если Pascal так прекрасен ......Page 172
Как жить с C++? ......Page 174
Каркасные библиотеки ......Page 175
Третьесторонние библиотеки и компоненты ......Page 176
Системы управления версиями ......Page 177
Инсталляционные программы ......Page 178
Часть II. Практика ......Page 190
Глава 5. Идиома локальной функции ......Page 191
Локальные функции: Pascal реализует их так, как надо ......Page 192
Шаг 1: грубый перенос на С ......Page 195
Шаг 2: C++ и идиома локальной функции ......Page 197
Реальное применение идиомы ......Page 202
Альтернативы и надежды ......Page 204
Глава 6. Как жить с DLL ......Page 205
Отчаянный поиск DLL ......Page 206
Кто загружается первым? ......Page 209
Спасет ли нас Win32? ......Page 211
Этикет разумного применения динамических библиотек ......Page 213
Используйте DLL только при необходимости ......Page 214
Правильно располагайте DLL ......Page 215
Старые времена ......Page 216
Новые времена ......Page 219
Загружайте все DLL явно ......Page 223
Пример: Hello ......Page 226
Глава 7. Минимизированные Windows-программы: вселенная внутри значка ......Page 234
Разновидности минимизированных программ ......Page 235
Механика минимизированных программ ......Page 236
...и как Windows 95 поменяла правила игры ......Page 242
Не бойтесь и минимизируйте ......Page 254
Добро пожаловать в наш кошмар ......Page 257
Что вы сможете сделать, а чего не сможете ......Page 259
Спасение в CRC ......Page 260
В поисках места для тайника ......Page 261
SELFCHCK и PATCHER ......Page 263
Реализация самопроверки в вашей программе ......Page 270
Вперед, вычисляйте CRC ......Page 273
Глава 9. Умные файлы данных ......Page 277
Системные данные ......Page 278
Настройки приложения ......Page 279
Основные формы постоянного хранения данных ......Page 280
INI-файлы ......Page 282
Реестр Windows ......Page 285
Специальные бинарные файлы ......Page 287
Умные файлы данных ......Page 289
Пример хранения конфигурационных данных ......Page 299
Зачем это надо? ......Page 311
«Доверять, но проверять» или «асфальтировать»? ......Page 316
Три степени абстрагирования ......Page 320
Искусство Абстрагирования ......Page 328
Win32 API: бинарный кельвинбол? ......Page 335
Е Pluribus Unum ......Page 347
Глава 11. Сделайте вашу программу замкнутой ......Page 349
Защищать или не защищать? ......Page 350
Базовая модель, дубль первый ......Page 351
Базовая модель, дубль второй ......Page 353
Как сделать замкнутой существующую программу ......Page 359
Проблемы безопасности ......Page 361
Что бы еще замкнуть сегодня? ......Page 364
Часть III. Великий перевал ......Page 365
Глава 12. Из Win 16 в Win32 ......Page 366
Что такое Windows 95 с точки зрения прикладного программиста ......Page 367
Wint61ock ......Page 372
Изменение типов данных ......Page 374
Что значит изменение размеров типов для программистов ......Page 378
Перенос 16-битового кода на Windows 95 ......Page 380
Выбор стратегии переноса ......Page 381
Великие неизвестные ......Page 395
«Ужастики» ......Page 400
Проверка номера версии: не все так просто ......Page 401
GDI обрезает координаты до двух байт ......Page 402
Ограничения значений cbWndExtra и cbClsExtra ......Page 403
Формат результата GetOpenFileNameO ......Page 404
Где искать ассоциации? ......Page 406
Проблемы с перетаскиванием ......Page 407
Арр Paths срабатывает для 16-разрядных программ лишь наполовину ......Page 409
Функция GetFreeSystemResourcesO пропала в Win32 ......Page 410
Диалоги масштабируются по-разному ......Page 412
Доступ к lNl-файлам ......Page 413
Norton Navigator 1.0 и вы ......Page 414
Глава 13. Не слишком краткая лекция о длинных именах файлов ......Page 421
Обзор основных свойств длинных имен и псевдонимов ......Page 422
...и что это означает ......Page 424
Хранение длинных имен ......Page 425
«Длинные имена файлов как параметры командной строки. ЕХЕ» ......Page 427
Становится только хуже и хуже ......Page 433
Что делать? ......Page 435
Крайние меры ......Page 436
Ради Бога, не забывайте о человеческом факторе! ......Page 438
Ждите ошибок, ждите ошибок ......Page 439
Ну что ж, умники, и как же, по-вашему, Microsoft должна была реализовать длинные имена файлов? ......Page 442
Глава 14. Разновидности Win32 ......Page 445
Почему Win32 != Win32 != Win32 ......Page 446
Документация, документация и снова документация ......Page 449
Даже Microsoft иногда пьет из этого колодца ......Page 452
Проверка версии и платформы ......Page 455
Никого нет дома ......Page 456
«Ужастики» ......Page 464
GDI обрезает значения координат до двух байт ......Page 465
Окна-списки обрезают значения строковых индексов ......Page 469
Окна-списки не могут обрабатывать длинные имена файлов в Windows 95 ......Page 471
Функция GetLastErrorO возвращает непригодные для работы значения ......Page 474
Windows 95: проблема с SUBST и GetShortPathNameO ......Page 478
Странности функции GetShortPathNameO ......Page 479
Типы данных в реестре ......Page 484
Функция WNetGetUniversalName() проваливается в Windows 95 ......Page 486
Ограничения для cbWndExtra и cbClsExtra ......Page 489
Диалоги масштабируются по-разному ......Page 490
Ау, кто стянул мой значок? ......Page 491
Графические траектории не функционируют иод Windows 95 ......Page 494
Win32s может свихнуться, когда виртуальной памяти слишком много ......Page 497
Win32s + RICHEDIT = катастрофа ......Page 499
Окна RICHEDIT по умолчанию не посылают уведомление EN_CHANGE ......Page 501
MoveFileEx( ) не работает под Windows 95 ......Page 502
Рекомендации ......Page 503
Windows NT 4.0: свет в конце туннеля? ......Page 507
Часть IV. Ресурсы ......Page 511
Глава 15. Хит-парад программистского инструментария ......Page 512
allCLEAR Version III от Clear Software, Inc ......Page 515
Bounds Checker Professional 3.0 от Nii-Mega Technologies, Inc ......Page 516
ISYS for Windows 4.0 от Odyssey Development ......Page 517
Microsoft Development Network CD-ROM от Microsoft ......Page 518
Orpheus 1.00 от TurboPower Software Company ......Page 519
SourceSafe 3.1 от Microsoft ......Page 520
Windows 95 Device Driver Kit ......Page 521
YAHU: еще одна утилита для работыс заголовочными файлами ......Page 522
Глава 16. Дополнительная литература ......Page 523
Призовой раздел: три неожиданных открытия ......Page 532
Приложения ......Page 533
Приложение A. MegaZero — самая законченная в мире, ничего не делающая ......Page 534
Приложение В. Конспект программистских небылиц ......Page 574
Приложение С. Библиотека Win32u ......Page 582
Что включено в Win32u ......Page 583
Обертки для GDI-функций ......Page 584
Проверка платформ и отладочный режим ......Page 585
Эпилог ......Page 609