Корзина
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. Складывая все вместе 
 
Библиография
Список примечаний
Алфавитный указатель

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

Купить Анализ ценных бумаг

Анализ ценных бумаг

Бенджамин Грэхем, Дэвид Додд

1 800 грн
Купить Как медитировать

Как медитировать

Далай-Лама

215 грн
Купить 100 Казок. Том 2

100 Казок. Том 2

265 грн
Купить Стартап: Модель для сборки

Стартап: Модель для сборки

Илья Лаурс

288 грн
Купить Етика та естетика. Навчальний поcібник

Етика та естетика. Навчальний поcібник

Чистіліна Т.О.

176 грн
Купить Скретч карта світу« Travel Map Marine World» (англ.) (тубус)

Скретч карта світу« Travel Map Marine World» (англ.) (тубус)

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

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

Алексей Назаров, Ольга Будовская

195 грн
Купить Приключения Чиполлино

Приключения Чиполлино

Джанни Родари

240 грн
Купить Флеш-картки English Student A1 Elementary Картки для вивчення англійських слов. 500 карток, 30 тем, 6 ігор

Флеш-картки English Student A1 Elementary Картки для вивчення англійських слов. 500 карток, 30 тем, 6 ігор

310 грн
Купить Человек цифровой. Четвертая революция в истории человечества, которая затронет каждого

Человек цифровой. Четвертая революция в истории человечества, которая затронет каждого

Крис Скиннер

486 грн
Купить Вокруг света в восемьдесят дней

Вокруг света в восемьдесят дней

Жюль Верн

64 грн
Купить Как написать кино за 21 день. Метод внутреннего фильма

Как написать кино за 21 день. Метод внутреннего фильма

Вики Кинг

405 грн
Купить Море, море

Море, море

Айрис Мердок

52 грн
Купить Сила моменту Тепер. Посібник із духовного просвітлення

Сила моменту Тепер. Посібник із духовного просвітлення

Екгарт Толле

155 грн
Купить Обратный отсчет. Записки анестезиолога

Обратный отсчет. Записки анестезиолога

Генри Джей Пшибыло

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

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

Мэтью Трифт

347 грн
Купить Журнал La Boussole. Зупинки. Естетичний журнал про подорожі Україною. Vol 12

Журнал La Boussole. Зупинки. Естетичний журнал про подорожі Україною. Vol 12

300 грн
Купить Mr. Leader Самоучитель по лидерству в иллюстрациях

Mr. Leader Самоучитель по лидерству в иллюстрациях

Владимир Воронов

190 грн
Купить Самотерапия. Изменим жизнь к лучшему!

Самотерапия. Изменим жизнь к лучшему!

Элизабет Уайльд, МакКормик

169 грн
Купить Гола економіка. Викриття нудної науки

Гола економіка. Викриття нудної науки

Чарльз Вілан

180 грн
Купить Стратегия голубого океана. Как найти или создать рынок, свободный от других игроков - дополненное издание

Стратегия голубого океана. Как найти или создать рынок, свободный от других игроков - дополненное издание

Чан Ким, Рене Моборн

448 грн
Купить Java 8. Полное руководство

Java 8. Полное руководство

Герберт Шилдт

972 грн
Купить Бизнес как игра. Грабли российского бизнеса и неожиданные решения

Бизнес как игра. Грабли российского бизнеса и неожиданные решения

Сергей Абдульманов, Дмитрий Борисов, Дмитрий Кибкало

400 грн
Купить Скретч постер «100 больших и очень больших дел LIFE edition» (тубус)

Скретч постер «100 больших и очень больших дел LIFE edition» (тубус)

450 грн
Купить Вы ничего не знаете о мужчинах

Вы ничего не знаете о мужчинах

Стив Харви

150 грн
Купить Лондон по Джонсону: О людях, которые сделали город, который сделал мир

Лондон по Джонсону: О людях, которые сделали город, который сделал мир

Борис Джонсон

74 грн
Купить Swift 3: разработка приложений в среде Xcode для iPhone и iPad с использованием iOS SDK

Swift 3: разработка приложений в среде Xcode для iPhone и iPad с использованием iOS SDK

Молли Маскри, Ким Топли, Дэвид Марк, и др.

1 080 грн
Купить Машина для здійснення бажань, або Суботик повертається в суботу. Книга 2

Машина для здійснення бажань, або Суботик повертається в суботу. Книга 2

Пауль Маар

84 грн
Купить После трех уже поздно

После трех уже поздно

Масару Ибука

295 грн
Купить Скретч постер 100 ДЕЛ настоящей девочки Oh my look edition (тубус)

Скретч постер 100 ДЕЛ настоящей девочки Oh my look edition (тубус)

450 грн
Купить Техника шитья

Техника шитья

Лин Жак

203 грн
Купить Agile-тестирование. Обучающий курс для всей команды

Agile-тестирование. Обучающий курс для всей команды

Джанет Грегори, Лиза Криспин

660 грн
Купить Магия чисел. Моментальные вычисления в уме и другие математические фокусы

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

Артур Бенджамин

327 грн
Купить Дневник одного гения

Дневник одного гения

Сальвадор Дали

64 грн
Купить Версаль. Золотой век

Версаль. Золотой век

Николя Жаке

790 грн
Купить Де немає Бога

Де немає Бога

Макс Кідрук

120 грн
Купить Магия (новое издание)

Магия (новое издание)

Ронда Берн

240 грн
Купить Голубые зоны на практике. Как стать долгожителем

Голубые зоны на практике. Как стать долгожителем

Дэн Бюттнер

415 грн
Купить Бонжур, Счастье! Французские секреты красивой жизни

Бонжур, Счастье! Французские секреты красивой жизни

Джейми Кэт Каллан

302 грн
Купить Думай как программист. Креативный подход к созданию кода. C++ версия

Думай как программист. Креативный подход к созданию кода. C++ версия

Антон Спрол

395 грн

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

Купить Java 9. Полный обзор нововведений

Java 9. Полный обзор нововведений

Кишори Шаран

Нет в наличии
Купить Компьютерная графика в дизайне

Компьютерная графика в дизайне

Миронов Д.

243 грн
122 грн
Купить Visual Basic.Net Самоучитель

Visual Basic.Net Самоучитель

Атли

Нет в наличии
Купить Байесовские модели

Байесовские модели

Аллен Б. Дауни

610 грн
Купить Основы Microsoft Solution Framework

Основы Microsoft Solution Framework

Тернер М.

Нет в наличии
Купить Применение UML 2.0 и шаблонов проектирования

Применение UML 2.0 и шаблонов проектирования

Крэг Ларман

1 080 грн
Купить Spring. Все паттерны проектирования

Spring. Все паттерны проектирования

Динеш Раджпут

950 грн
Купить Разработка через тестирование для iOS

Разработка через тестирование для iOS

Грэхем Ли

610 грн
549 грн
Купить Swift. Основы разработки приложений под iOS и macOS

Swift. Основы разработки приложений под iOS и macOS

Василий Усов

410 грн
Купить PHP: объекты, шаблоны и методики программирования

PHP: объекты, шаблоны и методики программирования

Мэтт Зандстра

590 грн
Купить Управление электронными устройствами на С++

Управление электронными устройствами на С++

Катупития Я.

778 грн
389 грн
Купить Java SE 9. Базовый курс

Java SE 9. Базовый курс

Кей С. Хорстманн

590 грн
Купить Delphi. Программирование для Windows, OS X, iOS и Android (+ инф. на www.bhv.ru)

Delphi. Программирование для Windows, OS X, iOS и Android (+ инф. на www.bhv.ru)

Дмитрий Осипов

Нет в наличии
Купить Teach Yourself MS FrontPage 2002 in 24 Hours

Teach Yourself MS FrontPage 2002 in 24 Hours

Cadenhead Rogers

125 грн
63 грн
Купить Исследование информационных моделей. Элективный курс. Учебное пособие + CD

Исследование информационных моделей. Элективный курс. Учебное пособие + CD

Угринович Н.Д.

32 грн
16 грн
Купить Осваиваем C++17 STL

Осваиваем C++17 STL

Артур О'Двайр

Нет в наличии
Купить Java в облаке. Spring Boot, Spring Cloud, Cloud Foundry

Java в облаке. Spring Boot, Spring Cloud, Cloud Foundry

Джош Лонг,Кеннет Бастани

820 грн
Купить Введение в программирование на языке Visual Basic.NET. Учебное пособие

Введение в программирование на языке Visual Basic.NET. Учебное пособие

Якушева Н.М.

67 грн
34 грн
Купить Прикладной анализ текстовых данных на Python. Машинное обучение и создание приложений обработки естественного языка

Прикладной анализ текстовых данных на Python. Машинное обучение и создание приложений обработки естественного языка

Бенджамен Бенгфорт,Ребекка Билбро,Тони Охеда

560 грн
Купить Язык программирования C. Лекции и упражнения

Язык программирования C. Лекции и упражнения

Стивен Прата

900 грн

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

Всего цитат
0

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

Отзывы

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

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