Top Banner
Code Review & Pair Programming 01 Паньшин Дмитрий
30

AgileCamp'11.Code review & Pair programming

Dec 01, 2014

Download

Technology

Dmitry Panshin

 
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: AgileCamp'11.Code review & Pair programming

Code Review &

Pair Programming

01

Паньшин Дмитрий

Page 2: AgileCamp'11.Code review & Pair programming

Code review & pair programming. AgileCamp'11 Новосибирск 02

Page 3: AgileCamp'11.Code review & Pair programming

Code review & pair programming. AgileCamp'11 Новосибирск03

Page 4: AgileCamp'11.Code review & Pair programming

Code review & pair programming. AgileCamp'11 Новосибирск04

Page 5: AgileCamp'11.Code review & Pair programming

• Качество кода сильно отличается по команде

• Изобретение велосипеда

• Код написанный не по стандартам

• Тайные знания

• «Феодальное владение кодом»

Code review & pair programming. AgileCamp'11 Новосибирск05

Проблемы

Page 6: AgileCamp'11.Code review & Pair programming

• Reviewer

• Tech lead?

Code review & pair programming. AgileCamp'11 Новосибирск06

Подготовка: выбор reviewer’a

Page 7: AgileCamp'11.Code review & Pair programming

• Reviewer

• Сосед

• Свежий взгляд со стороны

• Эксперт

• Новичок

• Tech lead

Code review & pair programming. AgileCamp'11 Новосибирск07

Подготовка: выбор reviewer’a

Page 8: AgileCamp'11.Code review & Pair programming

Статический анализатор не ругается, тесты зеленые,…

Code review & pair programming. AgileCamp'11 Новосибирск08

Подготовка кода

Page 9: AgileCamp'11.Code review & Pair programming

Статический анализатор не ругается, тесты зеленые,…

Статические анализаторы помогают найти:

• Ошибки в дизайне

• Дублирование

• Плохое покрытие кода тестами

• Потенциальные ошибки

• Не следование стандартам кодированияCode review & pair programming. AgileCamp'11 Новосибирск09

Подготовка кода

Page 10: AgileCamp'11.Code review & Pair programming

Code Review• Рассказ о задаче• Review– Что это такое? а это что такое?– Вот этот класс отвечает за это, а это новый

интерфейс…

Code review & pair programming. AgileCamp'11 Новосибирск10

Page 11: AgileCamp'11.Code review & Pair programming

Фиксируем• Типы• bug• todo на рефакторинг• велосипед• fast fix

• Способы• лист + ручка• Инструменты

Code review & pair programming. AgileCamp'11 Новосибирск11

Page 12: AgileCamp'11.Code review & Pair programming

Необходимые условия

• Позитивное отношение.• Нацеленность на командный результат. • Любой может быть ревьювером.• Избегать holy war

Code review & pair programming. AgileCamp'11 Новосибирск12

Page 13: AgileCamp'11.Code review & Pair programming

Инструменты

Code review & pair programming. AgileCamp'11 Новосибирск13

Page 14: AgileCamp'11.Code review & Pair programming

TIP:Какие задачи?

Code review & pair programming. AgileCamp'11 Новосибирск14

Page 15: AgileCamp'11.Code review & Pair programming

TIP:Какие задачи?

• Код новичка• сложные задачи• исследовательские задачи• код в котором много багов• новые архитектурные решения• переиспользуемый код• весь код

Code review & pair programming. AgileCamp'11 Новосибирск15

Page 16: AgileCamp'11.Code review & Pair programming

TIP:Когда?

• Часто• Прямо сейчас.• Договориться заранее.• Ежедневно в одно и тоже время• До или после commit’a?

Code review & pair programming. AgileCamp'11 Новосибирск16

Page 17: AgileCamp'11.Code review & Pair programming

TIP:С чего начать?

• Командное решение• С малого и двигаться постепенно. (закон

разбитых окон)• Используйте ретроспективу для улучшения

процесса.

Code review & pair programming. AgileCamp'11 Новосибирск17

Page 18: AgileCamp'11.Code review & Pair programming

TIP: Check list?

• Clarity• Maintainability• Accuracy• Security• Scalability• Reusability• Efficiency• OOP principles, encapsulation

Code review & pair programming. AgileCamp'11 Новосибирск18

Page 19: AgileCamp'11.Code review & Pair programming

TIP: Coding standards?

In a complex program, architectural guidelines give the program structural balance and construction guidelines

provide low-level harmony, articulating each class as faithful part of a comprehensive design… Without a

unifying discipline, your creation will be jumble of sloppy variations in style. Such variations are essentially

arbitrary. One key to successful programming is avoiding arbitrary variations so that your brain can be free to focus on the variations that are really needed.

(Steve McConell)

Code review & pair programming. AgileCamp'11 Новосибирск19

Page 20: AgileCamp'11.Code review & Pair programming

TIP: Coding standards?

• содержат правила организации кода (именования, синтаксис,...)

• содержат правила архитектурных решений• содержат правила использование модулей• содержат правила из всей области (sql, js,

документация, css, ...)• ими пользуются

Code review & pair programming. AgileCamp'11 Новосибирск20

Page 21: AgileCamp'11.Code review & Pair programming

Pair Programming

21

Page 22: AgileCamp'11.Code review & Pair programming

Code review & pair programming. AgileCamp'11 Новосибирск22

Page 23: AgileCamp'11.Code review & Pair programming

Code review & pair programming. AgileCamp'11 Новосибирск23

Page 24: AgileCamp'11.Code review & Pair programming

Code review & pair programming. AgileCamp'11 Новосибирск24

Page 25: AgileCamp'11.Code review & Pair programming

Способы ведения

• Driver and navigator• Ping pong pair programming• Distributed pair programming

Code review & pair programming. AgileCamp'11 Новосибирск25

Page 26: AgileCamp'11.Code review & Pair programming

Основные проблемы

• «сделай мне чашку кофе»• несбалансированная пара• рабочее место не предназначено для

работы в паре• отсутствие дисциплины• Holy war

Code review & pair programming. AgileCamp'11 Новосибирск26

Page 27: AgileCamp'11.Code review & Pair programming

С чего начать

• начните с простого– сложная задача– задача по передаче знаний

• используйте velocity как показатель производительности

Code review & pair programming. AgileCamp'11 Новосибирск27

Page 28: AgileCamp'11.Code review & Pair programming

P.S.

Page 29: AgileCamp'11.Code review & Pair programming

Code review & pair programming. AgileCamp'11 Новосибирск29

vs

Дмитрий Паньшин

Text = Code

David Cohen

Page 30: AgileCamp'11.Code review & Pair programming

В основном мы (сценаристы) занимаемся переписыванием сценария, работая в группе.

В основном мы (разработчики) занимаемся написанием программ, часто проводим рефакторинг

Мы обсуждаем сюжет в маленькой группе, один человек пишет черновик, а потом и сценарий.

На планировании обсуждаем новый функционал. Один из разработчиков создает базовую архитектуру и набрасывает скелет.

Потом мы переписываем его в группеПотом мы проводим code review того что получилось, и реализовываем остальной функционал.

Вклад группы в работу очень велик. Мы сидим за большим столом, а часть сценария, над которой мы работаем, показывается на большом мониторе

Приблизительно раз в неделю мы собираемся вместе с аниматорами и смотрим что у них получилось и в черно-белом предварительном варианте, и в почти готовом цветном.

Мы практикуем парное программирование.

Раз в неделю (две, в зависимости от команды) мы собираемся на Demo, где показываем что получилось. Потом проводим ретроспективу. И начинаем новый спринт.