Многим C#-разработчикам знакома боль: в проекте хаос из имён классов, обработчиков, сервисов. Общих правил нет, каждый пишет как хочет — и через полгода код сложно читать даже автору.
Есть практичное решение:
архитектурные тесты, которые автоматически проверяют соблюдение naming conventions.
Пример ниже - тест, который гарантирует, что все командные обработчики заканчиваются на
CommandHandler. Если кто-то добавит класс с неправильным именем, тест упадёт, и проблема решится ещё до ревью.
Такую технику можно использовать для:
- сервисов (`...Service`)
- хендлеров (`...Handler`)
- репозиториев (`...Repository`)
- DTO/Queries/Commands
- модульных границ и зависимости между слоями
Это простой способ навести порядок в архитектуре, а не надеяться только на дисциплину команды.
Пример теста (C#):
public void CommandHandler_ShouldHave_NameEndingWith_CommandHandler()
{
Types.InAssembly(ApplicationAssembly)
.That()
.ImplementInterface(typeof(ICommandHandler<>))
.Or()
.ImplementInterface(typeof(ICommandHandler<,>))
.Should()
.HaveNameEndingWith("CommandHandler")
.GetResult()
.ShouldBeSuccessful();
}
Такие архитектурные проверки избавляют от стихийных ошибок и делают кодовую базу предсказуемой — особенно в больших командах и долгоживущих проектах.