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 …

ПодробнееCode review is the crucial part of teamwork

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

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 …

ПодробнееAnalyze your code with PHP_CodeSniffer

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 …

ПодробнееThe practice of WordPress unit testing

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 …

ПодробнееWhy should your objects be 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 …

ПодробнееAutomated testing is a way to improve product quality

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 …

ПодробнееSOLID principles in simple words

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 …

ПодробнееTake responsibility into your control with GRASP principles

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

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 …

ПодробнееACID databases as guarantee data safety

Friday’s adventure with Backward Compatibility

If you work with open source, in the environment world, these are public plugins, and you have a lot of users, but backward compatibility is tedious. But today, there was a hilarious case when it was not an obvious situation. Let’s deep into it. The problem I have a class that I’ve decided to mark …

ПодробнееFriday’s adventure with Backward Compatibility

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

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

После жаркой дискуссии о том, как должен выглядеть главный файл плагина, внутри твита от 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 Простыми словами, когда мы делаем одновременно несколько запросов и записываем в один источник, будь-то файл или …

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

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

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

ПодробнееUI тесты для WordPress (Codeception + WP Browser)

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

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

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

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

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

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

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

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

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