On Saturday, 12 of April, regular quarterly meeting of Tech Hangout Community took place in Creative Space 12, the cultural and educational center based in Kiev! The event was held under the motto «One day of inspiring talks on Web Back-End». This time Python, Ruby and PHP developers gathered to make peace and learn the Force.
*TECH HANGOUT COMMUNITY was found in 2012 by the developers for the developers for knowledge and experience sharing. Such meetings are the part of Innovecs Educational Project that actively develops sphere of internal trainings and knowledge exchange program among professionals. This Initiative was born within the walls of Innovecs and has proved to be extremely popular and high-demand. In a short period of time it gained its own Facebook group with more than 90 members, blog with more than 40 posts and constant quarterly external meeting of Tech hangout community with more than 80 participants. The concept of the event proposes a 30-minute report on the topic previously defined, and the discussion in a roundtable session format.
Join to discuss - https://www.facebook.com/groups/techhangout/
Improvement of PHP code quality (by Alexander Makhomet) - Web Back-End Tech Hangout - 2014.04.12
1. Повышаем качество PHP кода с
помощью инструментов и методик
Александр Махомет
@amahomet
2. Что я сделал для хип-хопа PHP в свои годы
• 10 лет PHP девелопмента
• Product architect
http://odesk.com (alexa.com rank 409)
• Основатель http://zendframework.ru
• Организатор http://frameworksdays.com
3. Стандарты
• Кодирования
PSR-0, PSR-1, PSR-2 | PSR-3, PSR-4, PSR-5, PSR-6
http://sideeffect.kr/popularconvention/#php (Какие стандарты популярны на github)
• Наименования
• Документирования
• Тестирования
• Понятный и знакомый код
• Легче поддается анализу и рефакторингу
• Меньше конфликтов
4. Анализаторы кода
• PHP_CodeSniffer
- Большое количество правил
- PSR1, PSR2 из коробки
- Гибкая настройка
- Большое количество отчетов в различных форматах
• PHPMD
• PHP-Analyzer
• PHPLint
5. Еще анализаторов
• PHPDepend
Строим метрики и графики
• Pfff tools от facebook
Набор различных инструментов
• PHPQaTools
Готовый набор от Sebastian Bergmann
• PHP Parser
Парсер php от Никиты Попова
• security.sensiolabs.org
Безопасны ли ваши зависимости? Google Gruyere + OWASP WebGoat
• PHPCPD
Боримся с копипастом
• PHPDCD
Находим мертвый код
• PHPLOC
Измеряем проект
6. Legacy code
Что делать если мы получили проект в
наследие?
• PHP-CS-Fixer
• PHP_CodeSniffer 2.0
• PHP-Analyzer
7. IDE
• PHPStorm, NetBeans, Eclypse
• Sublime, Vim
• Анализ кода на лету
• Поддержка стандартов кодирования
• Проверка орфографии
• Интеграция со сторонними
инструментами
16. Sonar
• Благодаря интеграции с рядом
инструментов предоставляет множество
отчетов и метрик вашего проекта
• Количество кода, функций, классов
• Количество нарушений в коде
• Количество дублированного кода
• Покрытие тестами
Позволяет наблюдать динамику улучшения вашего
проекта со временем
19. Code Review
• Позволяет находить ошибки в коде на ранних этапах
• Повышает уровень разработчиков
• Дисциплинирует
• Распространяет знания о системе
• Заставляет разработчика делать более
декомпозированные, понятные коммиты что в
конечном итоге влияет на качество кода и
возможности его анализа в дальнейшем
- Дополнительные ресурсы, то есть время разработчиков
- Возможны конфликты.
20. Реализация code review
• Эй Семен, подойди посмотри код,
• Используя Web интерфейс CVS системы.
• Внешние не интегрированные
инструменты вроде
codereview.google.com
• Pull requests way.
- Интегрировать автоматические средства проверки пул реквестов
21. Рекомендации по code review
• Создать список того на что стоит обращать
внимание в code review. Создать best practices по
процессу
• Понимать и донести до всех что code review это не
критика человека а критика его кода
• Проводить ревью своевременно, не допускать
ситуации когда приходится проверять мегабайты
кода.
22. Code review checklist
• Решает ли код поставленную задачу
• Соответствует ли код принятым
стандартам проекта
• Покрыт ли код юнит тестами
• Не содержит ли код отладочной
информации или мертвого кода
• Безопасен ли код
• Использует ли он принятые best practices
проекта.
23. Еще методики
• Test Driven Development (TDD)
• Парное программирование
• Scrum
24. Психологический климат
Помимо технических методик по улучшению кода существую также
другие, которые следует учитывать. Например психологический климат
в коллективе, к нему относятся лидерские качества руководителя
команды и особенности сработанности и сплоченности коллектива.
Психологический климат в коллективе это высокий уровень мотивации в
коллективе, общая цель в работе, комфорт общения в коллективе,
эффективные коммуникации, график работы и степень занятости
Мораль
Чем более гармоничные отношения в команде тем лучше это для
сработанности, коммуникаций и в итоге для качества вашего кода