Условная компиляция позволяет выбрать код для компиляции в зависимости от:
Этапы работы препроцессора:
Список ключевых слов:
Редактирование и форматирование кода
Подсветка синтаксиса
Автодополнение
Форматирование кода
Рефакторинг
Отладка и тестирование
Отладчик
Тестирование
Профилирование
Дополнительные инструменты и плагины
Плагины и расширения
Инструменты для работы с базами данных
Средства для документирования
2. На что обращать внимание в ревью
Итоги
134.71K
Category: programmingprogramming

9 Лекция Методы организации работы в команде разработчиков

1.

Предпроцессинг кота
1

2.

2
Предпроцессинг
(препроцессинг)–
это
самая первая стадия компиляции программы
Препроцессор — это специальная программа,
являющаяся частью компилятора языка Си. Она
предназначена для предварительной обработки текста
программы. Препроцессор позволяет включать в текст
программы файлы и вводить макроопределения.
Работа препроцессора осуществляется с помощью
специальных директив (указаний). Они отмечаются
знаком решетка #. По окончании строк, обозначающих
директивы в языке Си, точку с запятой можно не
ставить.

3.

Основные функции препроцессора
3
замена соответствующих диграфов и триграфов на
эквивалентные символы «#» и «\»;
удаление экранированных символов перевода строки;
замена строчных и блочных комментариев пустыми строками
(с удалением окружающих пробелов и символов табуляции);
вставка (включение) содержимого произвольного файла
(#include);
макроподстановки (#define);
Условная компиляция (#if, #ifdef, #elif, #else, #endif);
вывод сообщений (#warning, #error)

4. Условная компиляция позволяет выбрать код для компиляции в зависимости от:

4
Условная компиляция позволяет выбрать
код для компиляции в зависимости от:
модели процессора (платформы);
разрядности адресов;
размерности типов;
наличия/отсутствия поддержки расширений
языка;
наличия/отсутствия библиотек и/или функций;
особенностей поведения конкретных функций;
и другого.

5. Этапы работы препроцессора:

5
Этапы работы препроцессора:
лексический анализ кода (синтаксический анализ
не выполняется);
обработка директив;
выполнение подстановок:
диграфов и триграфов;
комментариев;
директив;
лексем, заданных директивами

6.

6
Директивой (командной строкой) препроцессора
называется строка в исходном коде, имеющая
следующий формат: #ключевое_слово
параметры:
символ #;
ноль или более символов пробелов и/или табуляции;
одно из предопределённых ключевых слов;
параметры, зависимые от ключевого слова
если ключевое слово не указано, директива
игнорируется;
если указано несуществующее ключевое слово,
выводится сообщение об ошибке и компиляция
прерывается

7. Список ключевых слов:

7
Список ключевых слов:
define — создание константы или макроса;
undef — удаление константы или макроса;
include — вставка содержимого указанного файла;
if — проверка истинности выражения;
ifdef — проверка существования константы или макроса;
ifndef — проверка не существования константы или макроса;
else — ветка условной компиляции при ложности выражения if;
elif — проверка истинности другого выражения; краткая форма
записи для комбинации else и if;
endif — конец ветки условной компиляции;
line — указание имени файла и номера текущей строки для
компилятора;
error — вывод сообщения и остановка компиляции;
warning — вывод сообщения без остановки компиляции;
pragma — указание действия, зависящего от реализации, для
препроцессора или компилятора;

8.

Интеграция в IDE
8

9.

9
Интегрированная среда разработки (IDE) — это
программное обеспечение, которое предоставляет
разработчикам все необходимые инструменты для написания,
тестирования и отладки кода в одном месте. IDE значительно
упрощает процесс разработки, объединяя редактор кода,
компилятор, отладчик и другие инструменты в единую
платформу. Популярные примеры IDE включают Visual Studio,
IntelliJ IDEA, Eclipse и PyCharm. Эти среды предоставляют
широкий спектр возможностей, которые делают процесс
разработки более продуктивным и удобным.
IDE играют ключевую роль в современном программировании,
предоставляя разработчикам мощные инструменты для работы с
кодом. Они помогают не только писать код, но и управлять
проектами, отслеживать изменения и работать в команде.

10. Редактирование и форматирование кода

10
Редактирование и
форматирование кода
Редактирование кода — одна из основных функций
любой IDE. Современные IDE предлагают множество
возможностей для упрощения и ускорения этого
процесса. Эти возможности включают в себя
подсветку синтаксиса, автодополнение,
форматирование кода и рефакторинг.

11. Подсветка синтаксиса

11
Подсветка синтаксиса
Подсветка синтаксиса помогает визуально различать
различные элементы кода, такие как ключевые слова,
переменные, строки и комментарии. Это делает код более
читабельным и помогает быстрее находить ошибки. Например,
в языке программирования Python ключевые слова, такие как
def, class, import, будут выделены одним цветом, а строки и
комментарии — другим. Это позволяет разработчику быстро
ориентироваться в коде и находить нужные элементы.
Подсветка синтаксиса также помогает избежать ошибок,
связанных с неправильным написанием ключевых слов или
переменных. Если IDE не подсвечивает определенное слово,
это может указывать на ошибку в коде, которую нужно
исправить. Таким образом, подсветка синтаксиса является
важным инструментом для повышения качества кода.

12. Автодополнение

12
Автодополнение
Автодополнение предлагает варианты завершения кода
на основе текущего контекста. Это позволяет экономить
время и снижает вероятность ошибок. Например, если вы
начинаете вводить название функции или переменной, IDE
предложит вам варианты завершения, которые соответствуют
введенным символам. Это особенно полезно при работе с
большими проектами, где много различных функций и
переменных.
Автодополнение также помогает изучать новые
библиотеки и фреймворки. Когда вы начинаете вводить
название функции из новой библиотеки, IDE предложит вам
варианты завершения и покажет документацию по этой
функции. Это упрощает процесс изучения новых
инструментов и ускоряет разработку.

13. Форматирование кода

13
Форматирование кода
IDE могут автоматически форматировать код в
соответствии с заданными стилевыми правилами. Это
помогает поддерживать единообразие кода в проекте и
облегчает его чтение. Например, вы можете настроить IDE
так, чтобы она автоматически добавляла отступы, пробелы и
переносы строк в соответствии с вашим стилем
кодирования.
Форматирование кода также помогает избежать
конфликтов при работе в команде. Если все разработчики
используют одинаковые правила форматирования, это
уменьшает количество изменений в коде, связанных с
форматированием, и облегчает слияние изменений. Таким
образом, автоматическое форматирование кода является
важным инструментом для командной работы.

14. Рефакторинг

14
Рефакторинг
Рефакторинг позволяет изменять структуру кода без
изменения его поведения. Это включает переименование
переменных, извлечение методов и многое другое.
Рефакторинг помогает улучшить качество кода и облегчает
его поддержку. Например, если вы обнаружили, что
название переменной не отражает ее назначение, вы
можете переименовать ее с помощью инструмента
рефакторинга, и IDE автоматически обновит все ссылки на
эту переменную в коде.
Рефакторинг также помогает улучшить читаемость и
поддерживаемость кода. Например, вы можете извлечь
часто повторяющийся код в отдельный метод, чтобы
уменьшить дублирование и упростить его изменение. Таким
образом, рефакторинг является важным инструментом для
улучшения качества кода.

15. Отладка и тестирование

15
Отладка и тестирование
Отладка и тестирование — ключевые этапы
разработки, которые помогают выявлять и исправлять
ошибки в коде. Современные IDE предлагают мощные
инструменты для отладки и тестирования, которые делают
этот процесс более эффективным и удобным.

16. Отладчик

16
Отладчик
Отладчик позволяет запускать программу пошагово,
устанавливать точки останова и просматривать значения
переменных в реальном времени. Это помогает
находить и устранять ошибки в коде. Например, если
программа ведет себя неожиданным образом, вы
можете установить точку останова в проблемном месте
и пошагово выполнить код, чтобы понять, что происходит.
Отладчик также позволяет анализировать состояние
программы в любой момент времени. Вы можете
просматривать значения переменных, стек вызовов и
другие данные, которые помогут вам понять причину
ошибки. Таким образом, отладчик является важным
инструментом для выявления и устранения ошибок в коде.

17. Тестирование

17
Тестирование
Многие IDE поддерживают интеграцию с
фреймворками для автоматического тестирования. Это
позволяет запускать тесты прямо из IDE и получать результаты
в удобном формате. Например, вы можете создать набор
тестов для вашего кода и запускать их каждый раз, когда
вносите изменения, чтобы убедиться, что все работает
правильно.
Автоматическое тестирование помогает выявлять ошибки
на ранних этапах разработки и уменьшает количество багов
в конечном продукте. Кроме того, тесты помогают
документировать поведение кода и служат в качестве
примеров использования. Таким образом, автоматическое
тестирование является важным инструментом для
обеспечения качества кода.

18. Профилирование

18
Профилирование
Профилирование помогает анализировать
производительность программы, выявлять узкие места и
оптимизировать код. Некоторые IDE предлагают встроенные
инструменты для профилирования, которые показывают,
сколько времени занимает выполнение различных частей
кода. Например, вы можете использовать профилировщик,
чтобы определить, какие функции занимают больше всего
времени, и оптимизировать их.
Профилирование также помогает выявлять проблемы с
памятью и другими ресурсами. Например, вы можете
использовать профилировщик, чтобы найти утечки памяти
или другие проблемы, которые могут замедлять работу
программы. Таким образом, профилирование является
важным инструментом для оптимизации производительности
кода.

19. Дополнительные инструменты и плагины

19
Дополнительные
инструменты и плагины
Современные IDE предлагают множество
дополнительных инструментов и плагинов, которые
расширяют их функциональность и делают разработку
более эффективной. Эти инструменты помогают
автоматизировать рутинные задачи, улучшать качество кода
и ускорять процесс разработки.

20. Плагины и расширения

20
Плагины и расширения
Многие IDE поддерживают плагины, которые добавляют
новые функции или улучшают существующие. Например,
плагины для поддержки новых языков программирования,
интеграции с облачными сервисами или улучшения
интерфейса пользователя. Вы можете установить плагины
для работы с различными фреймворками, инструментами
для тестирования, профилирования и многими другими.
Плагины помогают адаптировать IDE под конкретные
задачи и потребности разработчика. Например, если вы
работаете с веб-разработкой, вы можете установить
плагины для работы с HTML, CSS и JavaScript. Таким образом,
плагины являются важным инструментом для расширения
функциональности IDE и повышения продуктивности.

21. Инструменты для работы с базами данных

21
Инструменты для работы
с базами данных
Некоторые IDE предлагают встроенные инструменты для
работы с базами данных, такие как редакторы SQL,
визуализаторы схем и инструменты для выполнения запросов.
Это упрощает работу с базами данных и позволяет выполнять
все необходимые операции прямо из IDE. Например, вы
можете создавать и изменять таблицы, выполнять запросы и
просматривать результаты, не покидая IDE.
Инструменты для работы с базами данных помогают
автоматизировать рутинные задачи и ускоряют процесс
разработки. Например, вы можете использовать визуализатор
схем для создания и изменения структуры базы данных, а затем
автоматически генерировать SQL-запросы для выполнения этих
изменений. Таким образом, инструменты для работы с базами
данных являются важным инструментом для разработчиков,
работающих с базами данных.

22. Средства для документирования

22
Средства для
документирования
Автоматическое создание документации из комментариев
в коде, генерация диаграмм и другие инструменты для
документирования помогают поддерживать проект в
актуальном состоянии и облегчают работу с ним другим
разработчикам. Например, вы можете использовать
инструменты для генерации документации на основе
комментариев в коде, чтобы автоматически создавать
документацию для вашего проекта.
Средства для документирования помогают улучшить
качество кода и упростить его поддержку. Например, вы
можете использовать генераторы диаграмм для визуализации
структуры кода и его зависимостей. Это помогает лучше
понимать проект и облегчает его поддержку. Таким образом,
средства для документирования являются важным
инструментом для обеспечения качества кода и упрощения его
поддержки.

23.

23
Использование IDE значительно упрощает процесс
разработки и повышает продуктивность. Основные функции,
такие как редактирование и форматирование кода,
отладка и тестирование, интеграция с системами контроля
версий и дополнительные инструменты, делают IDE
незаменимым инструментом для любого разработчика.
Благодаря мощным инструментам и возможностям,
которые предоставляют современные IDE, разработчики
могут сосредоточиться на создании качественного кода и
эффективной работе над проектами.

24.

24
Как правильно делать
код-ревью

25.

25
Терминология:
CL: «changelist» — список изменений
кода, отправленный в систему контроля
версий на ревью.
Аналоги:
PR: «Pull Request» в GitHub
MR: «Merge Request» в GitLab

26.

26
1. Стандарты код-ревью
1.1. Менторство
1.2. Принципы
1.3. Разрешение конфиликтов

27. 2. На что обращать внимание в ревью

27
2. На что обращать внимание в ревью
2.1. Дизайн (структура Функциональность)
2.2. Сложность
2.3. Тесты
2.4. Наименования
2.5. Комментарии
2.6. Стиль
2.7. Документация
2.8. Каждая строчка
2.9. Контекст

28. Итоги

28
Самое важное при проведении ревью:
Код хорошо спроектирован,
Функционал работает правильно,
Изменения в пользовательском интерфейсе требуют особого внимания:
помимо чистоты кода необходимо убедиться в том, что для пользователя
изменения выглядят как задумано,
Параллельно выполняемый код исполняется безопасно,
Код не переусложнен,
Нет надуманного и ненужного на данный момент функционала,
На код написаны тесты
Тесты хорошо спроектированы,
Использованы корректные имена для файлов, классов, методов,
переменных и тд
Оставлены понятные и нужные комментарии, по большей части
поясняющие причины решений, а не суть (суть должна быть понятна из
самого кода),
Код задокументирован (g3doc),
Код соответствует нашим стайл-гайдам.
English     Русский Rules