Хороша практика в Symfony 2 (з особистого досвіду)

Доброго часу доби, шановні хабравчане. Сьогодні побачив статтю на хабре «Офіційний гайд по кращим практикам у Symfony» і зрозумів, що мені є що виправити додати. До вашої уваги список особистих рад та пояснення до них.

Використовуйте менше анотацій
Особисто я люблю анотації, але з досвідом зрозумів, що вони приносять дискомфорт. Справа в тому, що всю конфігурацію перенести в анотації не можна. Залишається 2 варіанти:

  • Максимум у файлах конфігурації ( наприклад yml);
  • Трішки файли, трошки в анотації.


Якщо вибрати другий варіант, то при зростанні проекту виходить каша. І у вашому коді анотацій більше, ніж логіки. Відмовки типу «так легше знаходити роуты» не приймаються. Так як якщо расскидывать файли конфігурацій правильно, ти завжди знаєш, де знаходяться роуты до певних контролерам. Я вже мовчу про команди в консолі, за типом route:debug, і відладчик, в якому виджно назва екшена і ім'я роута.

Поганий приклад (як на мене):



Менеджери і репозиторії виносити в окремі папки
Відразу наведу поганий приклад, як влаштовано на поточному проекті:



Всі класи менеджерів повинні бути в папці Manager, класи репозиторіїв Repository. Якщо цього не робити, то при появі вже 5-10 сутностей зі своїми менеджерами і репозиторіями жити стає «веселіше».

В шаблонах завжди визначайте блоки з яваскриптом і стилями
Все просто. В кожній окремій сторінці ви зможете змінити і подгружаться будуть завжди тільки ті яваскрипты та стилі, які потрібні. Так само раджу в базовому шаблоні ці блоки залишити порожніми. А в бандлах при створенні головного layout.html.twig їх заповнювати.

Конфігурації бандлів зберігати в AppBundle/Resources
Навіть якщо проект невеликий, спочатку звикайте зберігати конфігурації бандлів в AppBundle/Resources/, а не в app/config. В app/ тільки посилання. В основному це стосується роутінга і сервісів.

Entity описувати конфігурації
Сутності краще описувати в конфігурації, наприклад, в AppBundle/Resources/config/doctrine/Entity.orm.yml, і генерувати за допомогою команди doctrine:generate:entities, яка сама згенерує класи сутностей. Коли конфіги сутностей знаходяться у файлах, самі класи виглядають чистіше. Так само ви будете впевнені, що у них немає помилок.

Для тестів створюйте окрему базу
У файлі parameters.test вкажіть параметри тестової бази, в яку завантажуєте фікстури. Так ви завжди будете впевнені, що тестуєте одні і ті ж дані. Можливо, все так і робить, просто на поточному проекті я зіткнувся з відсутністю такої практики.

Звичайно це все банальні речі, але є люди, які так не роблять і з-за цього страждають мученики програмісти, які пишуть після них.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.