 |
Наиболее эффективное программирование на C#: 50 способов улучшения кода, 2-е издание
рекомендуем
Билл Вагнер
Год выпуска: 2018
Изд-во: Диалектика-Вильямс
ISBN: 978-5-9909446-7-1
Переплёт: мягкий
240 страниц
Цена: 540.00 грн.
|
В книге "Наиболее эффективное программирование на C#: 50 способов улучшения кода" многоуважаемый эксперт в области .NET Билл Вагнер идентифицирует и освещает 50 приемов средней и высокой сложности для написания исключительно надежного и высокопроизводительного кода на C# 7.0. Отражая растущую сложность языка C# и расширение сообщества разработчиков, автор представляет эффективные новые решения задач, с которыми вы можете сталкиваться каждый день.
Четкие объяснения, экспертные советы и реалистичные примеры кода, предложенные Вагнером во всех трех изданиях книги Эффективное программирование на C#, были признаны бесценными сотнями тысяч разработчиков. Книги Эффективное программирование на C#, 3-е издание, и Наиболее эффективное программирование на C#, 2-е издание, были полностью реорганизованы; в них объяснения, советы и примеры оформлены в единый комплект, ориентированный на современный язык C#. Тот же самый испытанный подход применяется при анализе новых средств C# 7.0, что помогает решать знакомые задачи более рационально и эффективно.
Опираясь на свой непревзойденный опыт работы с языком и ключевую роль в глобальных комитетах по стандартам C#, автор описывает объектно-ориентированные, функциональные и сервисно-ориентированные подходы к управлению данными в коде на C#, наилучшие способы выражения своих намерений для пользователей и других программистов, а также новые возможности для применения мощных приемов асинхронного и динамического программирования.
- Используйте свойства вместо данных-членов, открытых для доступа (совет 1) - Проводите различие между типами значений и ссылочными типами (совет 4) - Освойте взаимосвязи между разными концепциями равенства (совет 9) - Избегайте присутствия операций преобразования в своих API-интерфейсах (совет 11) - Осмыслите, чем методы интерфейса отличаются от виртуальных методов (совет 15) - Избегайте перегрузки методов, определенных в базовых классах (совет 19) - Создавайте группы методов, которые являются ясными, минимальными и полными (совет 22) - Сделайте возможным немедленное сообщение об ошибках в итераторных и асинхронных методах с использованием локальных функций (совет 26) - Применяйте асинхронные методы для выполнения асинхронной работы (совет 27) - Избегайте размещения потоков и переключения контекста (совет 30) - Создавайте параллельные алгоритмы PLINQ с учетом исключений (совет 36) - Используйте пул потоков вместо создания потоков (совет 37) - Применяйте класс BackgroundWorker для взаимодействия между потоками (совет 38) - Используйте для дескрипторов блокировок как можно меньшую область действия (совет 41) - Изучите достоинства и недостатки динамической типизации (совет 43) - Научитесь полноценно использовать API-интерфейсы выражений (совет 46) - Сводите к минимуму наличие динамических объектов в открытых API-интерфейсах (совет 47)
Вы уже успешный программист на C#, а эта книга сделает вас выдающимся программистом.
Об авторе: Билл Вагнер - один из выдающихся разработчиков на C# во всем мире, член комитета по стандартам C# в организации ECMA и автор трех изданий книги Эффективное программирование на C#. Он занимает должность президента в организации Humanitarian Toolbox, в течение 11 лет удостаивался званий Microsoft Regional Director и .NET MVP, а недавно был назначен в консультативный совет .NET Foundation. Вагнер сотрудничал с компаниями, начиная от стартапов и кончая предприятиями, которые улучшали процесс разработки программного обеспечения и расширяли свои команды разработчиков. В настоящее время, будучи членом команды содержимого .NET Core в Microsoft, он создает учебные материалы для разработчиков, изучающих C# и .NET Core.
Содержание книги Билл Вагнер "Наиболее эффективное программирование на C#: 50 способов улучшения кода"
Введение ......................................................................................................................... 7 Глава 1. Работа с типами данных ............................................................................... 11 Совет 1. Используйте свойства вместо данных-членов, открытых для доступа ...........11 Совет 2. Отдавайте предпочтение неявным свойствам перед изменяющимися данными .17 Совет 3. Отдавайте предпочтение неизменяемости для типов значений .......................20 Совет 4. Проводите различие между типами значений и ссылочными типами ............25 Совет 5. Удостоверьтесь, что 0 является допустимым состоянием для типов значений ....30 Совет 6. Удостоверьтесь в том, что свойства ведут себя подобно данным .....................33 Совет 7. Ограничивайте область видимости типов с использованием кортежей ........38 Совет 8. Определяйте локальные методы на анонимных типах ........................................42 Совет 9. Освойте взаимосвязи между разными концепциями равенства ......................47 Совет 10. Исследуйте ловушки метода GetHashCode() ........................................... 54 Глава 2. Проектирование API-интерфейсов ............................................................ 61 Совет 11. Избегайте присутствия операций преобразования в своих API-интерфейсах ....61 Совет 12. Используйте необязательные параметры для минимизации количества перегруженных версий методов ..............................................................................65 Совет 13. Ограничивайте видимость своих типов ................................................................68 Совет 14. Отдавайте предпочтение определению и реализации интерфейсов перед наследованием ..................................................................................................71 Совет 15. Осмыслите, чем методы интерфейса отличаются от виртуальных методов ...78 Совет 16. Реализуйте паттерн "Событие" для уведомлений ...............................................82 Совет 17. Избегайте возвращения ссылок на объекты внутренних классов .................87 Совет 18. Отдавайте предпочтение переопределениям перед обработчиками событий ...90 Совет 19. Избегайте перегрузки методов, определенных в базовых классах .................93 Совет 20. Выясните, как события увеличивают связывание между объектами во время выполнения.................................................................................................97 Совет 21. Объявляйте только невиртуальные события .......................................................99 Совет 22. Создавайте группы методов, которые являются ясными, минимальными и полными ................................................................................... 103 Совет 23. Предоставляйте частичные методы в частичных классах для конструкторов, методов изменения и обработчиков событий .................... 109 Совет 24. Избегайте реализации интерфейса ICloneable, поскольку он ограничивает варианты проектных решений .................................................. 113 Совет 25. Ограничивайте параметры-массивы массивами params ........................ 117 Совет 26. Сделайте возможным немедленное сообщение об ошибках в итераторных и асинхронных методах с использованием локальных функций ................................................................................................ 120 Глава 3. Асинхронное программирование на основе задач ................................. 125 Совет 27. Используйте асинхронные методы для выполнения асинхронной работы ....125 Совет 28. Никогда не создавайте методы async void ........................................... 129 Совет 29. Избегайте объединения синхронных и асинхронных методов .................... 134 Совет 30. Используйте асинхронные методы, чтобы избежать размещения потоков и переключения контекста .................................................................... 138 Совет 31. Избегайте ненужной маршализации контекста ............................................... 140 Совет 32. Формируйте асинхронную работу с использованием объектов задач ....... 143 Совет 33. Обдумайте реализацию протокола отмены задачи ......................................... 148 Совет 34. Кешируйте обобщенные возвращаемые типы в асинхронном коде ........... 154 Глава 4. Параллельная обработка ..................................................................... 157 Совет 35. Выясните, как PLINQ реализует параллельные алгоритмы .......................... 157 Совет 36. Создавайте параллельные алгоритмы с учетом исключений ....................... 168 Совет 37. Используйте пул потоков вместо создания потоков ....................................... 172 Совет 38. Используйте класс BackgroundWorker для взаимодействия между потоками ....................................................................................................... 177 Совет 39. Освойте вызовы между потоками в средах XAML .......................................... 181 Совет 40. Используйте оператор lock в качестве первого кандидата для синхронизации ......................................................................................................... 188 Совет 41. Используйте для дескрипторов блокировок как можно меньшую область действия ...................................................................................................... 194 Совет 42. Избегайте вызова неизвестного кода в синхронизированных секциях ..... 197 Глава 5. Динамическое программирование ........................................................... 201 Совет 43. Изучите достоинства и недостатки динамической типизации .................... 201 Совет 44. Применяйте динамическую типизацию, чтобы использовать типы времени выполнения для параметров обобщенных типов ............................209 Совет 45. Используйте класс DynamicObject или интерфейс IDynamicMetaObjectProvider для динамических типов, управляемых данными ............................................................................................ 212 Совет 46. Выясните, как использовать API-интерфейсы выражений ........................... 220 Совет 47. Сводите к минимуму наличие динамических объектов в открытых API-интерфейсах ...................................................................................................... 226 Глава 6. Участие в глобальном сообществе C# ....................................................... 231 Совет 48. Ищите лучший, а не самый популярный ответ ................................................ 231 Совет 49. Участвуйте в разработке спецификаций и кода ............................................... 233 Совет 50. Обдумайте автоматизацию практик с помощью анализаторов ................... 234 Предметный указатель ............................................................................................ 236
|