CALM-нотация

call-notation

Иногда меня спрашивают, почему я так специфично именую переменные в своём коде? Несколько лет назад мне надоело постоянно писать идентификатор this перед именами полей-членов класса.

            string cheepCounter = "Use CALM notation!";
            this.cheepCounter++;

Так приходится делать, если слепо следовать рекомендациям для C#-кода. Но рекомендации – это лишь рекомендации. Я много раз видел в коде использование префикса для полей-членов. Кто-то ставит подчёркивание, кто-то m, а кто-то и то и другое: m_. Здравое зерно в этом было, и я решил попробовать. Поля вообще желательно использовать как можно реже, заменяя их свойствами. А так сразу видно, что, возможно, стоит пересмотреть дизайн класса. Если так можно пометить поля, почему бы не пометить и другие идентификаторы, где это будет полезно? Мне показалось полезным добавить следующие условные обозначения: a – аргумент метода, l – локальная переменная, c – локальная константа. Я решил дать этой нотации имя CALM: Constant Argument Local Member, что значит: Constant Argument Local Member. Такое именование несёт следующие выгоды:

  • не нужно больше писать конструкцию this.fieldName,
  • если необходимо приведение типов какого-то аргумента, то можно не выдумывать какое-то другое имя: FrameworkElement lSender = (FrameworkElement) aSender;
  • константу легко отличить от переменной только по имени: cYouCanNotChangeMe,
  • строго говоря это даже не нарушает рекомендацию: имена переменных, параметров, полей и локальных констант начинаются с маленькой буквы,

Хорошо, использовать префиксы не рекомендуется, например, венгерскую нотацию, но тут несколько другое дело. И в конце концов, рекомендованные правила можно нарушать, если есть достаточное основание их нарушить. Я считаю, такой подход имеет право на жизнь. А что думаете вы?