Повышаем качество PHP кода с
помощью инструментов и методик
Александр Махомет
@amahomet
Что я сделал для хип-хопа PHP в свои годы
• 10 лет PHP девелопмента
• Product architect
http://odesk.com (alexa.com rank 4...
Стандарты
• Кодирования
PSR-0, PSR-1, PSR-2 | PSR-3, PSR-4, PSR-5, PSR-6
http://sideeffect.kr/popularconvention/#php (Каки...
Анализаторы кода
• PHP_CodeSniffer
- Большое количество правил
- PSR1, PSR2 из коробки
- Гибкая настройка
- Большое количе...
Еще анализаторов
• PHPDepend
Строим метрики и графики
• Pfff tools от facebook
Набор различных инструментов
• PHPQaTools
Г...
Legacy code
Что делать если мы получили проект в
наследие?
• PHP-CS-Fixer
• PHP_CodeSniffer 2.0
• PHP-Analyzer
IDE
• PHPStorm, NetBeans, Eclypse
• Sublime, Vim
• Анализ кода на лету
• Поддержка стандартов кодирования
• Проверка орфог...
PHPStorm
Git hooks
• Client-Side Hooks
- pre-commit
• Server-Side Hooks
- pre-receive
- post-receive
Еще хуков
Pre-commit hook
• Проверка php синтаксиса
• Интеграция статических анализаторов
• Запуск модульных тестов
Можем проигнорир...
Pre-commit hook + phpcs
• Различные уровни ошибок
- Good code
- Warnings
- Errors
- Syntax error
• Игнорирование директори...
Pre-commit + phpcs = Accepted
Pre-commit + phpcs = Rejected
Server side hooks
• Уведомление на e-mail
• Полное отклонение коммита
- pre-receive
- post-receive
Continuous integration
• Запуск модульных тестов
• Интеграция с инструментами
- PHP_CodeSniffer
- PHPMD
Sonar
• Благодаря интеграции с рядом
инструментов предоставляет множество
отчетов и метрик вашего проекта
• Количество код...
Sonar in action
Инструменты хороши,
пора поговорить о методиках
Code Review
• Позволяет находить ошибки в коде на ранних этапах
• Повышает уровень разработчиков
• Дисциплинирует
• Распро...
Реализация code review
• Эй Семен, подойди посмотри код,
• Используя Web интерфейс CVS системы.
• Внешние не интегрированн...
Рекомендации по code review
• Создать список того на что стоит обращать
внимание в code review. Создать best practices по
...
Code review checklist
• Решает ли код поставленную задачу
• Соответствует ли код принятым
стандартам проекта
• Покрыт ли к...
Еще методики
• Test Driven Development (TDD)
• Парное программирование
• Scrum
Психологический климат
Помимо технических методик по улучшению кода существую также
другие, которые следует учитывать. Нап...
Четкий сайт
http://www.phptherightway.com/
Спасибо за внимание
Александр Махомет
http://twitter.com/amahomet
http://podumaem.com/contacts
http://fwdays.com
http://ze...
Upcoming SlideShare
Loading in …5
×

Improvement of PHP code quality (by Alexander Makhomet) - Web Back-End Tech Hangout - 2014.04.12

505 views
421 views

Published on

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/

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
505
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Improvement of PHP code quality (by Alexander Makhomet) - Web Back-End Tech Hangout - 2014.04.12

  1. 1. Повышаем качество PHP кода с помощью инструментов и методик Александр Махомет @amahomet
  2. 2. Что я сделал для хип-хопа PHP в свои годы • 10 лет PHP девелопмента • Product architect http://odesk.com (alexa.com rank 409) • Основатель http://zendframework.ru • Организатор http://frameworksdays.com
  3. 3. Стандарты • Кодирования PSR-0, PSR-1, PSR-2 | PSR-3, PSR-4, PSR-5, PSR-6 http://sideeffect.kr/popularconvention/#php (Какие стандарты популярны на github) • Наименования • Документирования • Тестирования • Понятный и знакомый код • Легче поддается анализу и рефакторингу • Меньше конфликтов
  4. 4. Анализаторы кода • PHP_CodeSniffer - Большое количество правил - PSR1, PSR2 из коробки - Гибкая настройка - Большое количество отчетов в различных форматах • PHPMD • PHP-Analyzer • PHPLint
  5. 5. Еще анализаторов • PHPDepend Строим метрики и графики • Pfff tools от facebook Набор различных инструментов • PHPQaTools Готовый набор от Sebastian Bergmann • PHP Parser Парсер php от Никиты Попова • security.sensiolabs.org Безопасны ли ваши зависимости? Google Gruyere + OWASP WebGoat • PHPCPD Боримся с копипастом • PHPDCD Находим мертвый код • PHPLOC Измеряем проект
  6. 6. Legacy code Что делать если мы получили проект в наследие? • PHP-CS-Fixer • PHP_CodeSniffer 2.0 • PHP-Analyzer
  7. 7. IDE • PHPStorm, NetBeans, Eclypse • Sublime, Vim • Анализ кода на лету • Поддержка стандартов кодирования • Проверка орфографии • Интеграция со сторонними инструментами
  8. 8. PHPStorm
  9. 9. Git hooks • Client-Side Hooks - pre-commit • Server-Side Hooks - pre-receive - post-receive Еще хуков
  10. 10. Pre-commit hook • Проверка php синтаксиса • Интеграция статических анализаторов • Запуск модульных тестов Можем проигнорировать с помощью --no-verify
  11. 11. Pre-commit hook + phpcs • Различные уровни ошибок - Good code - Warnings - Errors - Syntax error • Игнорирование директорий • Фильтрация по расширению файлов
  12. 12. Pre-commit + phpcs = Accepted
  13. 13. Pre-commit + phpcs = Rejected
  14. 14. Server side hooks • Уведомление на e-mail • Полное отклонение коммита - pre-receive - post-receive
  15. 15. Continuous integration • Запуск модульных тестов • Интеграция с инструментами - PHP_CodeSniffer - PHPMD
  16. 16. Sonar • Благодаря интеграции с рядом инструментов предоставляет множество отчетов и метрик вашего проекта • Количество кода, функций, классов • Количество нарушений в коде • Количество дублированного кода • Покрытие тестами Позволяет наблюдать динамику улучшения вашего проекта со временем
  17. 17. Sonar in action
  18. 18. Инструменты хороши, пора поговорить о методиках
  19. 19. Code Review • Позволяет находить ошибки в коде на ранних этапах • Повышает уровень разработчиков • Дисциплинирует • Распространяет знания о системе • Заставляет разработчика делать более декомпозированные, понятные коммиты что в конечном итоге влияет на качество кода и возможности его анализа в дальнейшем - Дополнительные ресурсы, то есть время разработчиков - Возможны конфликты.
  20. 20. Реализация code review • Эй Семен, подойди посмотри код, • Используя Web интерфейс CVS системы. • Внешние не интегрированные инструменты вроде codereview.google.com • Pull requests way. - Интегрировать автоматические средства проверки пул реквестов
  21. 21. Рекомендации по code review • Создать список того на что стоит обращать внимание в code review. Создать best practices по процессу • Понимать и донести до всех что code review это не критика человека а критика его кода • Проводить ревью своевременно, не допускать ситуации когда приходится проверять мегабайты кода.
  22. 22. Code review checklist • Решает ли код поставленную задачу • Соответствует ли код принятым стандартам проекта • Покрыт ли код юнит тестами • Не содержит ли код отладочной информации или мертвого кода • Безопасен ли код • Использует ли он принятые best practices проекта.
  23. 23. Еще методики • Test Driven Development (TDD) • Парное программирование • Scrum
  24. 24. Психологический климат Помимо технических методик по улучшению кода существую также другие, которые следует учитывать. Например психологический климат в коллективе, к нему относятся лидерские качества руководителя команды и особенности сработанности и сплоченности коллектива. Психологический климат в коллективе это высокий уровень мотивации в коллективе, общая цель в работе, комфорт общения в коллективе, эффективные коммуникации, график работы и степень занятости Мораль Чем более гармоничные отношения в команде тем лучше это для сработанности, коммуникаций и в итоге для качества вашего кода
  25. 25. Четкий сайт http://www.phptherightway.com/
  26. 26. Спасибо за внимание Александр Махомет http://twitter.com/amahomet http://podumaem.com/contacts http://fwdays.com http://zendframework.ru

×