Code review is the crucial part of teamwork

The code review is the act of systematically and consciously convening with teammates to check each other’s code. It helps to detect problems at an early stage. Generally, the code reviews apply for pull requests. Cross-review is one of the best practices. Cross-review is a code review when the PR’s author and reviewer are different …

Подробнее

Рубрики Без рубрики Метки

Analyze your code with PHP_CodeSniffer

You can ask me why we should use coding standards? Shortly, to make more strict rules for your code and control the code quality in your team. A lot of similar things you can do differently, using various syntax. I described the basic knowledge about PHP coding standards, WPCS, with simple examples of my own …

Подробнее

The practice of WordPress unit testing

All developers hear about mystic unit tests that must-have, but no one has. As a developer, who has written unit tests for a few years yet, I can say that it’s impossible to write great code without unit tests. Unit testing is the quality tool that helps developers be sure that new code doesn’t break …

Подробнее

Why should your objects be immutable?

Objects are divided into mutable and immutable depending on the possibility to change. Objects that don’t change their internal state after creating are immutable. Otherwise, they are mutable. Why should we think about it? This is an incomplete list of advantages for immutability: easier support in the future immutable objects are simpler to use immutable …

Подробнее

Automated testing is a way to improve product quality

Testing –  checking the correspondence between the real and expected program behavior. Some smart person Adding new functionality, you need to check how these changes affected the entire application. You should check how the new feature works and whether the previously written features work the same way. The larger your application, the more time it …

Подробнее

SOLID principles in simple words

SOLID is a mnemonic acronym for five design principles intended to make software designs more understandable, flexible, and maintainable. The principles are a subset of many principles promoted by American software engineer and instructor Robert C. Martin. Wikipedia Generally, I don’t want to show a deep analysis of each principle. It’s just a review in simple …

Подробнее

Take responsibility into your control with GRASP principles

General Responsibility Assignment Software Patterns (or Principles), abbreviated GRASP, consist of guidelines for assigning responsibility to classes and objects in object-oriented design. Wikipedia I want to start with the fact that, strangely, GRASP is in the shadow of SOLID patterns, although it seems to me that it has more specific examples and is easier to …

Подробнее

Рубрики Без рубрики Метки ,

ACID databases as guarantee data safety

ACID (atomicity, consistency, isolation, durability) is a set of properties of database transactions intended to guarantee data validity despite errors, power failures, and other mishaps. Wikipedia The transaction is a sequence of database operations such as select, insert, delete, or update as one single work unit. Atomicity Atomicity guarantees that each transaction is treated as a …

Подробнее

Лучшие практики для главного файла плагина

После жаркой дискуссии о том, как должен выглядеть главный файл плагина, внутри твита от Mark Jaquith, я решил написать свой вариант. С большинством пунктов я согласен, но об этом позже. Gonna write a blog post about how to structure WordPress plugins in 2020. Brain-dumped these notes. What else should I cover? pic.twitter.com/zMWkljEzlH — Mark Jaquith …

Подробнее

Состоянии гонки(Race condition) на примере счетчика

Состояние гонки или опасность гонки — это состояние электроники, программного обеспечения или другой системы, в котором основное поведение системы зависит от последовательности или времени других неконтролируемых событий. Это становится ошибкой, когда одно или несколько возможных вариантов поведения нежелательны. Wikipedia Простыми словами, когда мы делаем одновременно несколько запросов и записываем в один источник, будь-то файл или …

Подробнее

UI тесты для WordPress (Codeception + WP Browser)

UI (E2E, GUI) тесты полностью эмулируют поведение пользователей в браузере. Данные тесты относятся к приемочному(acceptance) виду тестирования. Пишется пошаговый тест, как пользователь должен себя вести в вашем приложении: на какую страницу приложения он зайдет, какую информацию заполнит, какую кнопку нажмет и т.д. Чаще всего такие тесты пишут тестировщики, но иногда и разработчики в зависимости от …

Подробнее

Функциональные тесты для WordPress (Codeception + WP Browser)

Функциональные(Приемочные, Acceptance) тесты полностью эмулируют поведение пользователей в браузере. Пишется пошаговый тест, как пользователь должен себя вести в вашем приложении: на какую страницу приложения он зайдет, какую информацию заполнит, какую кнопку нажмет и т.д. Чаще всего такие тесты пишут тестировщики, но иногда и разработчики в зависимости от требований компании. В дальнейшем эти тесты можно и …

Подробнее

Замена конструкций exit/die в unit-тестах

Если в коде вы используете die/exit то PHPUnit прекратит свою работу в этот момент. Для этого нам нужно заменить конструкцию exit/die. Но это сделать сложно т.к. Functions Mocker с этим не справляется. Пример: class Duck { public function last_words() { die( ‘I’ll be back’ ); } } Меняем класс следующий образом: class Duck { public …

Подробнее

Unit tests matter или Roadmap для Unit тестов на WordPress

Теоретические основы тестирования Зачем необходимо тестирование? Какие виды тестирования бывают? Чем юнит-тестирование отличается от других видов тестирования? Кто и как должен тестировать продукт? Библиотеки для тестирования PHPUnit Базовые команды Фикстуры (Fixtures) Бутстрап (bootstrap.php) Утверждения (Asserts) Создания конфигов (phpunit.xml) Code coverage Mockery Стабы/Моки/Шпионы Частичные моки Моки для типов данных Абстрактные классы Hard dependencies Тестирования WordPress: Brain …

Подробнее