Корзина
0
Корзина
0
Добавьте в корзину товаров ещё на 900 гривен, чтобы БЕСПЛАТНО получить товар по Украине до отделения Новой почты.

Ваша корзина пустая

Меню
Купить Рефакторинг: улучшение существующего кода

Рефакторинг: улучшение существующего кода

Рефакторинг - улучшение структурной целостности и производительности существующих программ. Труд "Рефакторинг: улучшение существующего кода" - это must have любого уважающего себя профессионального программиста; творение, формирующее сознание разработчика; универсальная классическая книга, достойная быть настольной! Это первый подобный труд, проливший свет не на поверхность, но на саму суть: на технологии и подходы к процессу.

Каждый шаг рефакторинга прост. Это может быть перемещение поля из одного класса в другой, вынесение фрагмента кода из метода и превращение его в самостоятельный метод или даже перемещение кода по иерархии классов. Каждый отдельный шаг может показаться элементарным, но совокупный эффект таких малых изменений в состоянии радикально улучшить проект или даже предотвратить распад плохо спроектированной программы. 
 
Мартин Фаулер с соавторами во всех тонкостях описали принципы и лучшие приемы осуществления рефакторинга, указав, где и когда следует начинать углубленное изучение кода с целью его улучшения. Основу книги "Рефакторинг: улучшение существующего кода" составляет подробный перечень более 70 методов рефакторинга, для каждого из которых описываются мотивация и техника испытанного на практике преобразования кода с примерами на Java. Рассмотренные в книге методы позволяют поэтапно модифицировать код, внося каждый раз небольшие изменения, благодаря чему снижается риск, связанный с развитием проекта. 
 
Содержание
 
Предисловие
 
1. Рефакторинг, первый пример 
Исходная программа
Первый шаг рефакторинга
Декомпозиция и перераспределение метода statement
Замена условной логики на полиморфизм
Заключительные размышления
 
2. Принципы рефакторинга 
Определение рефакторинга
Зачем нужно проводить рефакторинг?
Когда следует проводить рефакторинг?
Как объяснить это своему руководителю?
Проблемы, возникающие при проведении рефакторинга
Рефакторинг и проектирование
Рефакторинг и производительность
Каковы истоки рефакторинга?
 
3. Код с душком 
Дублирование кода
Длинный метод
Большой класс
Длинный список параметров
Расходящиеся модификации
"Стрельба дробью"
Завистливые функции
Группы данных
Одержимость элементарными типами
Операторы типа switch
Параллельные иерархии наследования
Ленивый класс
Теоретическая общность
Временное поле
Цепочки сообщений
Посредник
Неуместная близость
Альтернативные классы с разными интерфейсами
Неполнота библиотечного класса
Классы данных
Отказ от наследства
Комментарии
 
4. Разработка тестов 
Ценность самотестирующегося кода
Среда тестирования JUnit
Добавление новых тестов
 
5. На пути к каталогу методов рефакторинга
Формат методов рефакторинга
Поиск ссылок
Насколько зрелыми являются предлагаемые методы 
рефакторинга?
 
6. Составление методов 
Выделение метода (Extract Method)
Встраивание метода (Inline Method)
Встраивание временной переменной (Inline Temp)
Замена временной переменной вызовом метода 
(Replace Temp with Query)
Введение поясняющей переменной (Introduce Explaining 
Variable)
Расщепление временной переменной (Split Temporary Variable)
Удаление присваиваний параметрам (Remove Assignments 
to Parameters)
Замена метода объектом методов (Replace Method with Method Object)
Замещение алгоритма (Substitute Algorithm)
 
7. Перемещение функций между объектами
Перемещение метода (Move Method)
Перемещение поля (Move Field)
Выделение класса (Extract Class)
Встраивание класса (Inline Class)
Сокрытие делегирования (Hide Delegate)
Удаление посредника (Remove Middle Man)
Введение внешнего метода (Introduce Foreign Method)
Введение локального расширения (Introduce Local Extension)
 
8. Организация данных
Самоинкапсуляция поля (Self Encapsulate Field)
Замена значения данных объектом (Replace Data Value 
with Object)
Замена значения ссылкой (Change Value to Reference)
Замена ссылки значением (Change Reference to Value)
Замена массива объектом (Replace Array with Object)
Дублирование видимых данных (Duplicate Observed Data)
Замена однонаправленной связи двунаправленной 
(Change Unidirectional Association to Bidirectional)
Замена двунаправленной связи однонаправленной 
(Change Bidirectional Association to Unidirectional)
Замена магического числа символической константой 
(Replace Magic Number with Symbolic Constant)
Инкапсуляция поля (Encapsulate Field)
Инкапсуляция коллекции (Encapsulate Collection)
Замена записи классом данных (Replace Record with Data Class)
Замена кода типа классом (Replace Type Code with Class)
Замена кода типа подклассами (Replace Type Code with Subclasses)
Замена кода типа состоянием/стратегией (Replace Type Code 
with State/Strategy)
Замена подкласса полями (Replace Subclass with Fields)
 
9. Упрощение условных выражений 
Декомпозиция условного оператора (Decompose Conditional)
Консолидация условного выражения (Consolidate Conditional 
Expression)
Консолидация дублирующихся условных фрагментов 
(Consolidate Duplicate Conditional Fragments)
Удаление управляющего флага (Remove Control Flag)
Замена вложенных условных операторов граничным 
оператором (Replace Nested Conditional with Guard Clauses)
Замена условного оператора полиморфизмом (Replace Conditional with Polymorphism)
Введение объекта Null (Introduce Null Object)
Введение утверждения (Introduce Assertion)
 
10. Упрощение вызовов методов 
Переименование метода (Rename Method)
Добавление параметра (Add Parameter)
Удаление параметра (Remove Parameter)
Разделение запроса и модификатора (Separate Query from Modifier)
Параметризация метода (Parameterize Method)
Замена параметра явными методами (Replace Parameter 
with Explicit Methods)
Сохранение всего объекта (Preserve Whole Object)
Замена параметра вызовом метода (Replace Parameter with Method)
Введение граничного объекта (Introduce Parameter Object)
Удаление метода установки значения (Remove Setting Method)
Сокрытие метода (Hide Method)
Замена конструктора фабричным методом (Replace Constructor 
with Factory Method)
Инкапсуляция нисходящего преобразования типа 
(Encapsulate Downcast)
Замена кода ошибки исключительной ситуацией (Replace 
Error Code with Exception)
Замена исключительной ситуации проверкой (Replace 
Exception with Test)
 
11. Решение задач обобщения 
Подъем поля (Pull Up Field)
Подъем метода (Pull Up Method)
Подъем тела конструктора (Pull Up Constructor Body)
Спуск метода (Push Down Method)
Спуск поля (Push Down Field)
Выделение подкласса (Extract Subclass)
Выделение родительского класса (Extract Superclass)
Выделение интерфейса (Extract Interface)
Свертывание иерархии (Collapse Hierarchy)
Формирование шаблона метода (Form Template Method)
Замена наследования делегированием (Replace Inheritance 
with Delegation)
Замена делегирования наследованием (Replace Delegation 
with Inheritance)
 
12. Крупные рефакторинги 
Разделение наследования (Tease Apart Inheritance)
Преобразование процедурного проекта в объекты 
(Convert Procedural Design to Objects)
Отделение предметной области от представления (Separate Domain from Presentation)
Выделение иерархии (Extract Hierarchy)
 
13. Рефакторинг, повторное использование и реальность
Проверка в реальных условиях
Почему разработчики не хотят применять рефакторинг 
к своим программам?
Возращаясь к проверке в реальных условиях
Ресурсы и ссылки, относящиеся к рефакторингу
Последствия повторного использования программного 
обеспечения и передачи технологий
Завершающее замечание
Библиография
 
14. Инструментальные средства проведения рефакторинга 
Рефакторинг с использованием инструментальных средств
Технические критерии для инструментов проведения рефакторинга
Практические критерии для инструментов рефакторинга
Краткое заключение
 
15. Складывая все вместе 
 
Библиография
Список примечаний
Алфавитный указатель
Нет в наличии

Рефакторинг: улучшение существующего кода

Купить Рефакторинг: улучшение существующего кода
Артикул : 33802
Издательство : Символ
Автор : Мартин Фаулер, Кент Бек, Джон Брант, Уильям Апдайк
Язык : Русский
ISBN13 : 978-593286-045-8
Формат : 70x100/16
EAN13 : 9785932860458
Страниц : 432
Год издания : 2018
Тип переплета : Мягкий
Нет в наличии

Описание

Рефакторинг - улучшение структурной целостности и производительности существующих программ. Труд "Рефакторинг: улучшение существующего кода" - это must have любого уважающего себя профессионального программиста; творение, формирующее сознание разработчика; универсальная классическая книга, достойная быть настольной! Это первый подобный труд, проливший свет не на поверхность, но на саму суть: на технологии и подходы к процессу.

Каждый шаг рефакторинга прост. Это может быть перемещение поля из одного класса в другой, вынесение фрагмента кода из метода и превращение его в самостоятельный метод или даже перемещение кода по иерархии классов. Каждый отдельный шаг может показаться элементарным, но совокупный эффект таких малых изменений в состоянии радикально улучшить проект или даже предотвратить распад плохо спроектированной программы. 
 
Мартин Фаулер с соавторами во всех тонкостях описали принципы и лучшие приемы осуществления рефакторинга, указав, где и когда следует начинать углубленное изучение кода с целью его улучшения. Основу книги "Рефакторинг: улучшение существующего кода" составляет подробный перечень более 70 методов рефакторинга, для каждого из которых описываются мотивация и техника испытанного на практике преобразования кода с примерами на Java. Рассмотренные в книге методы позволяют поэтапно модифицировать код, внося каждый раз небольшие изменения, благодаря чему снижается риск, связанный с развитием проекта. 
 
Содержание
 
Предисловие
 
1. Рефакторинг, первый пример 
Исходная программа
Первый шаг рефакторинга
Декомпозиция и перераспределение метода statement
Замена условной логики на полиморфизм
Заключительные размышления
 
2. Принципы рефакторинга 
Определение рефакторинга
Зачем нужно проводить рефакторинг?
Когда следует проводить рефакторинг?
Как объяснить это своему руководителю?
Проблемы, возникающие при проведении рефакторинга
Рефакторинг и проектирование
Рефакторинг и производительность
Каковы истоки рефакторинга?
 
3. Код с душком 
Дублирование кода
Длинный метод
Большой класс
Длинный список параметров
Расходящиеся модификации
"Стрельба дробью"
Завистливые функции
Группы данных
Одержимость элементарными типами
Операторы типа switch
Параллельные иерархии наследования
Ленивый класс
Теоретическая общность
Временное поле
Цепочки сообщений
Посредник
Неуместная близость
Альтернативные классы с разными интерфейсами
Неполнота библиотечного класса
Классы данных
Отказ от наследства
Комментарии
 
4. Разработка тестов 
Ценность самотестирующегося кода
Среда тестирования JUnit
Добавление новых тестов
 
5. На пути к каталогу методов рефакторинга
Формат методов рефакторинга
Поиск ссылок
Насколько зрелыми являются предлагаемые методы 
рефакторинга?
 
6. Составление методов 
Выделение метода (Extract Method)
Встраивание метода (Inline Method)
Встраивание временной переменной (Inline Temp)
Замена временной переменной вызовом метода 
(Replace Temp with Query)
Введение поясняющей переменной (Introduce Explaining 
Variable)
Расщепление временной переменной (Split Temporary Variable)
Удаление присваиваний параметрам (Remove Assignments 
to Parameters)
Замена метода объектом методов (Replace Method with Method Object)
Замещение алгоритма (Substitute Algorithm)
 
7. Перемещение функций между объектами
Перемещение метода (Move Method)
Перемещение поля (Move Field)
Выделение класса (Extract Class)
Встраивание класса (Inline Class)
Сокрытие делегирования (Hide Delegate)
Удаление посредника (Remove Middle Man)
Введение внешнего метода (Introduce Foreign Method)
Введение локального расширения (Introduce Local Extension)
 
8. Организация данных
Самоинкапсуляция поля (Self Encapsulate Field)
Замена значения данных объектом (Replace Data Value 
with Object)
Замена значения ссылкой (Change Value to Reference)
Замена ссылки значением (Change Reference to Value)
Замена массива объектом (Replace Array with Object)
Дублирование видимых данных (Duplicate Observed Data)
Замена однонаправленной связи двунаправленной 
(Change Unidirectional Association to Bidirectional)
Замена двунаправленной связи однонаправленной 
(Change Bidirectional Association to Unidirectional)
Замена магического числа символической константой 
(Replace Magic Number with Symbolic Constant)
Инкапсуляция поля (Encapsulate Field)
Инкапсуляция коллекции (Encapsulate Collection)
Замена записи классом данных (Replace Record with Data Class)
Замена кода типа классом (Replace Type Code with Class)
Замена кода типа подклассами (Replace Type Code with Subclasses)
Замена кода типа состоянием/стратегией (Replace Type Code 
with State/Strategy)
Замена подкласса полями (Replace Subclass with Fields)
 
9. Упрощение условных выражений 
Декомпозиция условного оператора (Decompose Conditional)
Консолидация условного выражения (Consolidate Conditional 
Expression)
Консолидация дублирующихся условных фрагментов 
(Consolidate Duplicate Conditional Fragments)
Удаление управляющего флага (Remove Control Flag)
Замена вложенных условных операторов граничным 
оператором (Replace Nested Conditional with Guard Clauses)
Замена условного оператора полиморфизмом (Replace Conditional with Polymorphism)
Введение объекта Null (Introduce Null Object)
Введение утверждения (Introduce Assertion)
 
10. Упрощение вызовов методов 
Переименование метода (Rename Method)
Добавление параметра (Add Parameter)
Удаление параметра (Remove Parameter)
Разделение запроса и модификатора (Separate Query from Modifier)
Параметризация метода (Parameterize Method)
Замена параметра явными методами (Replace Parameter 
with Explicit Methods)
Сохранение всего объекта (Preserve Whole Object)
Замена параметра вызовом метода (Replace Parameter with Method)
Введение граничного объекта (Introduce Parameter Object)
Удаление метода установки значения (Remove Setting Method)
Сокрытие метода (Hide Method)
Замена конструктора фабричным методом (Replace Constructor 
with Factory Method)
Инкапсуляция нисходящего преобразования типа 
(Encapsulate Downcast)
Замена кода ошибки исключительной ситуацией (Replace 
Error Code with Exception)
Замена исключительной ситуации проверкой (Replace 
Exception with Test)
 
11. Решение задач обобщения 
Подъем поля (Pull Up Field)
Подъем метода (Pull Up Method)
Подъем тела конструктора (Pull Up Constructor Body)
Спуск метода (Push Down Method)
Спуск поля (Push Down Field)
Выделение подкласса (Extract Subclass)
Выделение родительского класса (Extract Superclass)
Выделение интерфейса (Extract Interface)
Свертывание иерархии (Collapse Hierarchy)
Формирование шаблона метода (Form Template Method)
Замена наследования делегированием (Replace Inheritance 
with Delegation)
Замена делегирования наследованием (Replace Delegation 
with Inheritance)
 
12. Крупные рефакторинги 
Разделение наследования (Tease Apart Inheritance)
Преобразование процедурного проекта в объекты 
(Convert Procedural Design to Objects)
Отделение предметной области от представления (Separate Domain from Presentation)
Выделение иерархии (Extract Hierarchy)
 
13. Рефакторинг, повторное использование и реальность
Проверка в реальных условиях
Почему разработчики не хотят применять рефакторинг 
к своим программам?
Возращаясь к проверке в реальных условиях
Ресурсы и ссылки, относящиеся к рефакторингу
Последствия повторного использования программного 
обеспечения и передачи технологий
Завершающее замечание
Библиография
 
14. Инструментальные средства проведения рефакторинга 
Рефакторинг с использованием инструментальных средств
Технические критерии для инструментов проведения рефакторинга
Практические критерии для инструментов рефакторинга
Краткое заключение
 
15. Складывая все вместе 
 
Библиография
Список примечаний
Алфавитный указатель

Рекомендуемые книги

Купить Управління персоналом. Підручник затверджений МОН України

Управління персоналом. Підручник затверджений МОН України

Людмила Балабанова

225 грн
Купить Прикладная «золотая» математика и ее приложения в электросвязи

Прикладная «золотая» математика и ее приложения в электросвязи

Ясинский С.

17 грн
Купить От точки к точке. Головоломки для рисования и раскрашивания

От точки к точке. Головоломки для рисования и раскрашивания

183 грн
Купить 100 способов мотивации

100 способов мотивации

Стив Чандлер, Скотт Ричардсон

175 грн
Купить Крижана принцеса

Крижана принцеса

Каміла Лекберґ

140 грн
Купить Миф и жизнь в кино: Смыслы и инструменты драматургического языка

Миф и жизнь в кино: Смыслы и инструменты драматургического языка

Александр Талал

385 грн
Купить Профессия - иллюстратор. Учимся мыслить творчески

Профессия - иллюстратор. Учимся мыслить творчески

Натали Ратковски

669 грн
Купить Меч Арея

Меч Арея

Іван Білик

120 грн
Купить Ядро ORACLE

Ядро ORACLE

Джонатан Льюис

890 грн
Купить Полный курс нумерологии. Как найти себя и раскрыть свой потенциал

Полный курс нумерологии. Как найти себя и раскрыть свой потенциал

Дэвид А. Филлипс

160 грн
Купить Заговор богатых

Заговор богатых

Роберт Т. Кийосаки

315 грн
Купить Структуры данных и алгоритмы в Java. Классика Computers Science

Структуры данных и алгоритмы в Java. Классика Computers Science

Роберт Лафоре

558 грн
Купить Гибкие продажи. Как продавать в эпоху перемен

Гибкие продажи. Как продавать в эпоху перемен

Джил Конрат

342 грн
Купить Комплект игры «Thinkers 6-9 лет - Логика Выпуск 3» (рус.)

Комплект игры «Thinkers 6-9 лет - Логика Выпуск 3» (рус.)

186 грн
Купить Азбука вязания. Издание обновленное, расширенное и дополненное

Азбука вязания. Издание обновленное, расширенное и дополненное

Маргарита Максимова

324 грн
Купить Атмосферная акварель. Свобода, выразительность и стиль. Новые советы и упражнения

Атмосферная акварель. Свобода, выразительность и стиль. Новые советы и упражнения

Джин Хэйнс

520 грн
Купить Что? Когда? Зачем? Не есть!

Что? Когда? Зачем? Не есть!

Виктор Богатырь

410 грн
Купить Понад дахами. Київ: місто і час

Понад дахами. Київ: місто і час

Олександр Ранчуков

405 грн
Купить На службе зла

На службе зла

Роберт Гэлбрейт

205 грн
Купить Зажги себя! Жизнь — в движении

Зажги себя! Жизнь — в движении

Джон Рэйти, Эрик Хагерман

383 грн
Купить Влияй! 7 заповедей лидера

Влияй! 7 заповедей лидера

Ицхак Пинтосевич

275 грн
Купить JavaScript в примерах и задачах

JavaScript в примерах и задачах

Алексей Васильев

410 грн
Купить British Fairy Tales / Чарівні казки з Британії. Рівень «Pre-Intermediate»

British Fairy Tales / Чарівні казки з Британії. Рівень «Pre-Intermediate»

30 грн
Купить Язык T-SQL для Microsoft SQL Server за 10 минут

Язык T-SQL для Microsoft SQL Server за 10 минут

Бен Форта

325 грн
Купить Импрессионисты. Часть 2. Моне, Писсаро, Ренуар, Сислей, Ван Гог. Картины по номерам

Импрессионисты. Часть 2. Моне, Писсаро, Ренуар, Сислей, Ван Гог. Картины по номерам

374 грн
Купить Adobe InDesign CC. Официальный учебный курс (+CD).

Adobe InDesign CC. Официальный учебный курс (+CD).

Джон Круз, Келли Кордес Энтон

972 грн
Купить Рисунок с нуля. Пошаговое руководство

Рисунок с нуля. Пошаговое руководство

Клэр Ватсон Гарсия

497 грн
Купить The Red-Headed League and Other Stories: The Adventures of Sherlock Holmes = Спілка рудих та інші історії. Пригоди Шерлока Холмса

The Red-Headed League and Other Stories: The Adventures of Sherlock Holmes = Спілка рудих та інші історії. Пригоди Шерлока Холмса

Артур Конан Дойль

78 грн
Купить Левиафан

Левиафан

Томас Гоббс

390 грн
Купить Відновлювальні джерела енергії

Відновлювальні джерела енергії

Калініченко Володимир, Ришард Титко

145 грн
Купить Как снять кино за 39 шагов

Как снять кино за 39 шагов

Мэтью Трифт

347 грн
Купить Зов Ктулху. Уникальная методика обучения языку В.Ратке

Зов Ктулху. Уникальная методика обучения языку В.Ратке

Говард Филлипс Лавкрафт

145 грн
Купить Книга успеха от монаха, который продал свой «ФЕРРАРИ»

Книга успеха от монаха, который продал свой «ФЕРРАРИ»

Робин Шарма

125 грн
Купить Успех или счастье? Воспитание то ли ребенка, то ли начинающего менеджера

Успех или счастье? Воспитание то ли ребенка, то ли начинающего менеджера

Саймон Вайн

62 грн
Купить Обитатели холмов

Обитатели холмов

Ричард Адамс

210 грн
Купить Медиа-дискурс: анализ медиа-текстов. Исследование культуры и медиа

Медиа-дискурс: анализ медиа-текстов. Исследование культуры и медиа

Мэтисон Дональд

92 грн
Купить Шаолинь дух и боевое искусство Древнего Китая

Шаолинь дух и боевое искусство Древнего Китая

Люй Хунцзюнь, Тэн Лэй

560 грн
Купить Программирование на Java

Программирование на Java

Патрик Нимейер, Дэниэл Леук

725 грн
Купить Торговый хаос: Увеличение прибыли методами технического анализа

Торговый хаос: Увеличение прибыли методами технического анализа

Джастин Грегори-Вильямс, Билл Вильямс

580 грн
Купить Спеши любить

Спеши любить

Николас Спаркс

78 грн

Книги из категории "Книги по программированию"

Купить Эффективная работа с унаследованным кодом

Эффективная работа с унаследованным кодом

Майкл Физерс

810 грн
Купить XML. Базовый курс

XML. Базовый курс

Хантер Д. , Рафтер Дж., Фаусетт Дж.

1 080 грн
Купить Потоковая обработка данных

Потоковая обработка данных

Эндрю Дж. Пселтис

670 грн
Купить Искусственный интеллект для чайников

Искусственный интеллект для чайников

Джон Поль Мюллер, Лука Массарон

325 грн
Купить Python. Карманный справочник

Python. Карманный справочник

Марк Лутц

270 грн
Купить Искусство программирования на R. Погружение в большие данные

Искусство программирования на R. Погружение в большие данные

Норман Мэтлофф

650 грн
Купить Автостопом по Python

Автостопом по Python

Кеннет Рейтц, Таня Шлюссер

Нет в наличии
Купить Начала программирования

Начала программирования

Александр Степанов, Пол Мак-Джонс

495 грн
446 грн
Купить Java. Библиотека профессионала, том 1. Основы

Java. Библиотека профессионала, том 1. Основы

Кей С. Хорстманн, Гари Корнелл

810 грн
Купить CLR via C#. Программирование на платформе Microsoft .NET Framework 4.5 на языке C#

CLR via C#. Программирование на платформе Microsoft .NET Framework 4.5 на языке C#

Джеффри Рихтер

880 грн
Купить CUDA Fortran для ученых и инженеров

CUDA Fortran для ученых и инженеров

Рутм Г., Фатика М.

667 грн
533 грн
Купить Самоучитель Java с примерами и программами. Самоучитель

Самоучитель Java с примерами и программами. Самоучитель

Васильев А.Г. и др.

309 грн
Купить Разработка современных веб-приложений: анализ предметных областей и технологий

Разработка современных веб-приложений: анализ предметных областей и технологий

Дино Эспозито

590 грн
Купить JavaScript в примерах и задачах

JavaScript в примерах и задачах

Алексей Васильев

410 грн
Купить Искусство программирования. т.3. Сортировка и поиск

Искусство программирования. т.3. Сортировка и поиск

Дональд Э. Кнут

1 080 грн
Купить Кровь, пот и пиксели. Обратная сторона индустрии видеоигр

Кровь, пот и пиксели. Обратная сторона индустрии видеоигр

Джейсон Шрейер

295 грн
Купить Java для начинающих. Объектно-ориентированный подход

Java для начинающих. Объектно-ориентированный подход

Барт Бэзинс, Эйми Бэкил, Зеппе Ванден Бруке

820 грн
Купить Angular. Сборник рецептов

Angular. Сборник рецептов

Мэтт Фрисби

420 грн
Купить Visual Basic.NET Developer's Guide to ASP.NET, XML, and ADO.NET

Visual Basic.NET Developer's Guide to ASP.NET, XML, and ADO.NET

Jeffrey P. McManus and Ch

275 грн
138 грн
Купить Адаптивный код: гибкое кодирование с помощью паттернов проектирования и принципов SOLID

Адаптивный код: гибкое кодирование с помощью паттернов проектирования и принципов SOLID

Гэри Маклин Холл

810 грн

Цитаты пользователей

Всего цитат
0

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Отзывы

Отзывы
0 рецензий

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.
Все права защищены © 2003-2019 Bookzone.com.ua              Условия использования | Политика конфиденциальности
Интеграция сайта с 1С: ©SUPC