Анализ программного кода на примере проектов Open Source (Code Reading. The Open Source Perspective)
Эта книга 2004 года выпуска за авторством Диомидиса Спинеллиса появилась у меня в 2005 году, когда я только начинал знакомиться с промышленной разработкой и тогда она показалась мне интересной. Концепт автора был в том, чтобы познакомить разработчиков с основными концепциями разработки на примерах из крупных open source проектов того времени. Для этого к книге прыл приложен CD диск с кодом тех open source систем, что разбирал автор в своей книге. С учетом того, что Github появился только в 2008 этот подход был достаточно здравым:) Примеры в книге были преимущественно сфокусированы вокруг языков: C, C++ и Java. А сама книга состояла из следующих частей
- Предисловие - в предисловии речь идет о том, что код нам приходится читать чаще, чем писать его, поэтому есть смысл прокачать этот навык
- Общие сведения - здесь автор говорит более подробно о том, зачем нам учиться читать код и как это можно сделать с помощью этой книги
- Основные элементы программ - здесь приводится пример программы целиком, функции и глобальные переменные, циклы, условия, символьные и логические выражения, оператор goto
- Сложные типы данных в языке C - здесь идет речь про указатели, структуры, объединения и динамическое управление памятью
- Структуры данных в C - здесь автор показывает как в C сделать векторы, таблицы, стеки, очереди и так далее
- Сложные средства управления программами - здесь идет речь про рекурсию, исключения, параллелизм, сигналы и макроподстановки
- Анализ больших проектов - здесь автор размышляет про то, как изучать большие проекты: из каких логических блоков он состоит, как он собирается, как конфигурируется, как выглядит управление версиями и как устроено тестирование
- Стандарты стиля программирования - здесь обсуждаются вопросы, которые сейчас принято решать настройкой линтеров
- Документация - здесь идет речь про важность документации и как ее писать и читать
- Архитектура - здесь автор говорит про архитектурные стили, модели управления потоком исполнения (событийно-ориентированные, архитектры с наличием диспетчера, конечные автоматы), группировку кода (модули, пространства имен, библиотеки и так далее)
- Вспомогательные программные средства - темы из этого раздела сейчас закрываются хорошей IDE
- Практический пример - а здесь приведен сквозной пример про добавление в базу данных hqsqldb новой функции даты/времени PHASEOFMOON, которая будет вычислять фазу Луны по заданной дате:)
В итоге, книга в свое время была хорошей практической книгой для студентов, что только входили в мир разработки софта и могли посмотреть как на практике применяются многие изучаемые ими концепции. А вот в текущий момент она совсем потеряла актуальность - вы с легкостью можете зайти на Github и найти все, что потребуется. Но в то же время сама структура книги и подача материала мне кажется актуальной до сих пор и я бы не отказался почитать новое издание, в котором все примеры актуализированы и учтены новинки за последние 20 лет:)
#Software #SoftwareDevelopment