Я устал. Устал читать однообразно-наукообразный псевдопонятный многобуквенный код. Эту фразу было неудобно читать, да? Она по сути ничего не значащая, зато насыщена “умными” словами. Вот один из скромных образцов кода, который вызывает у меня столько нелестные чувства:
public interface ITimeService{DateTime Now { get; }}
На первый взгляд ничего особенного в нём нет. Но у меня есть один маленький вопрос: какую метафору из жизни олицетворяет ITimeService? Городскую службу по обслуживанию уличных часов? Службу времени 09? Первая ссылка в поиске по time service показывает на сайт мастерской по ремонту часов, а гугл-переводчик переводит как “срок службы” Думаю многие из вас уже догадались, какая метафора правильная:
public interface IClock{DateTime Now { get; }}
Намного ближе к жизни, нежели мутный ITimeService, и отражает суть того, как 99% из нас узнают время. (Ладно, у многих сейчас нет часов, и время узнают из телефона. Но как вы назовёте то место в телефоне, где видны заветные цифры текущего времени? Зуб даю – часы). Чтобы сделать различие более явным, приведу куда более прижившийся пример:
public interface IRepository{void Save(object entity);object Get(object id);}
Полагаю, что-то вроде этого каждый приличный программист видел тысячу раз. Давайте выкинем метафору репозитория, и назовём это “по научному”:
public interface IPersistenceService{void Save(object entity);object Get(object id);}
Выглядит ужасно, да? К счастью, такого я никогда не видел. И надеюсь никто не видел этого ужаса. И чтобы убедить окончательно, приведу еще один, контрольный пример – NUnit – MSTest. Отцом-идеологом NUnit был Кент Бек (Kent Beck). Человек с живым умом, выражающий мысли простым ясным языком. И вот его метафоры:
- TestFixture – испытательный стенд.
- Setup – cборка; настройка; монтаж.
- Test – проверка; испытание.
- TearDown – демонтаж.
А вот что родили в недрах Microsoft, в муках изобретая новые термины для уже устоявшихся понятий:
- TestClass.
- TestInitialize
- TestMethod
- TestCleanup
В переводе не нуждается. Ни намека на метафору. Наименование противоречит даже простому правилу: названия переменных/классов/методов и т.д. должны говорить об их назначении, а не о деталях реализации. Не говоря уже о том, что громадьё атрибутов начинающихся на Test даст под дых любому Intellisense’у.
Итого: давайте простые названия своим классам, ищите метафоры из реального мира. Никто не называет рот “телесным отверстием для приёма пищи”. Это смешно. Не делайте таких глупостей.
Комментариев нет:
Отправить комментарий