Была ли конкретная стилистика кода на работе?

Ответ

Да, в моих проектах мы строго придерживались стандартов PSR (PHP Standards Recommendations) и внутренних правил команды.

Основные применяемые стандарты:

  1. PSR-12 (Extended Coding Style Guide): Определял форматирование (отступы в 4 пробела, размещение фигурных скобок, переносы строк, пробелы вокруг операторов).
  2. PSR-1 (Basic Coding Standard): Задавал базовые правила, такие как использование только <?php и <?= тегов, именование классов и методов.
  3. PSR-4 (Autoloading Standard): Регламентировал структуру пространств имен и автозагрузку классов, что было критически важно в наших проектах на Laravel и Symfony.

Пример кода, соответствующего этим правилам:

<?php

declare(strict_types=1);

namespace AppServicesPayment;

use AppContractsPaymentProcessorInterface;
use AppDTOPaymentDetails;
use AppExceptionsPaymentFailedException;

class StripePaymentService implements PaymentProcessorInterface
{
    private float $commissionRate;

    public function __construct(float $commissionRate = 0.02)
    {
        $this->commissionRate = $commissionRate;
    }

    public function process(PaymentDetails $details): string
    {
        $amountWithCommission = $details->amount * (1 + $this->commissionRate);
        // ... логика интеграции со Stripe API
        return $this->chargeCustomer($details->token, $amountWithCommission);
    }
}

Дополнительно мы использовали:

  • PHP_CodeSniffer с правилами PSR12 для автоматической проверки стиля в CI/CD.
  • PHPStan / Psalm для статического анализа типов.
  • Единый стиль PHPDoc-комментариев для документирования методов.

Ответ 18+ 🔞

Слушай, а про эти ваши стандарты я вообще отдельную песню могу спеть, ёпта. Это ж как в армии устав — вроде и ебёт мозг иногда, но без него — пиздец и бардак полный. Мы тоже за ними следили, как за своим последним рублём.

Какие конкретно правила в ходу были:

  1. PSR-12 (Extended Coding Style Guide): Это типа наш главный свод законов. Четыре пробела вместо табов, фигурные скобки на новой строке, пробелы вокруг точек и операторов — всё по струнке. Сначала бесило, конечно, но потом привыкаешь, и код читается, как хорошая книга, а не как записки сумасшедшего.
  2. PSR-1 (Basic Coding Standard): Ну, это база, детский сад. Только <?php, классы с большой буквы, методы в camelCase — кто этого не соблюдает, тот, прости, манда с ушами.
  3. PSR-4 (Autoloading Standard): Вот это святое, особенно когда на Laravel или Symfony работаешь. Пространства имён должны чётко по файловой структуре отражаться. Автозагрузка работает сама, как швейцарские часы, а не как советский трактор. Удивление пиздец, когда впервые с этим сталкиваешься и понимаешь, как жили раньше.

Вот, смотри, как примерно код должен выглядеть, чтобы у всех волнение ебать прошло:

<?php

declare(strict_types=1);

namespace AppServicesPayment;

use AppContractsPaymentProcessorInterface;
use AppDTOPaymentDetails;
use AppExceptionsPaymentFailedException;

class StripePaymentService implements PaymentProcessorInterface
{
    private float $commissionRate;

    public function __construct(float $commissionRate = 0.02)
    {
        $this->commissionRate = $commissionRate;
    }

    public function process(PaymentDetails $details): string
    {
        $amountWithCommission = $details->amount * (1 + $this->commissionRate);
        // ... логика интеграции со Stripe API
        return $this->chargeCustomer($details->token, $amountWithCommission);
    }
}

А чтобы не было косяков, в ход шла тяжёлая артиллерия:

  • PHP_CodeSniffer с настройками на PSR12. Эта штука в пайплайне CI/CD всё проверяла. Найдёт лишний пробел — и всё, билд падает, иди чини, распиздяй. Жёстко, но справедливо.
  • PHPStan / Psalm. Ну, это уже высший пилотаж. Статический анализ типов, который ловит такие подводные камни, что сам от себя охуеешь иногда. Доверия к коду после него — овердохуища.
  • И да, PHPDoc-комментарии у нас тоже были не абы какие, а по единому шаблону. Чтобы не было вот этого: «написал функцию, а через месяц смотришь — и хуй поймёшь, что она принимает и что возвращает».