Как вы рекомендуете обозначать статические члены класса? - PullRequest
1 голос
/ 21 января 2009

У меня есть стратегия именования для обозначения природы сущности кода (переменная, метод и т. Д.), Которая учитывает наиболее распространенные перестановки области видимости, типа сущности и изменчивости, но я не смог выбрать способ обозначает частные статические поля-члены (не свойства).

Какие рекомендуемые способы обозначить это?

Обновление: Для чего это стоит, я понимаю, что это выпало из мода, и что для C # в частности, Microsoft спорит против этого. Я должен указать, что моя цель в этом состоит не в обеспечить уровень «документации», но просто чтобы иметь возможность получать как можно больше информации при минимальном движении и перекрестных ссылках.

Лично я чувствую, что было бы идеально, если идентификаторы могут быть ограничены передача информации о цели, и оставить информацию о контексте кода IDE для передачи. Тем не менее, так как VS2008 не обеспечивает варианты выделения / стилизации, которые на основе объема или изменчивости, и я не чувствую, что всплывающие подсказки особенно эффективно в этом, потому что требуемого движения мыши и ожидание, я чувствую себя ограниченным в моем опции.

Для справки, я в основном программирую на C #, и ниже приведен пример моих текущих соглашений об именах:

  • Аргумент метода или локальная переменная: thisIsMyVariable
  • Закрытое поле уровня экземпляра: _thisIsMyVariable
  • Открытое свойство или метод уровня экземпляра или класса: ThisIsMyVariable
  • Константа: THIS_IS_MY_VARIABLE

Для частных статических полей я рассмотрел следующие вопросы:

  • s_thisIsMyVariable
  • _ThisIsMyVariable

Ответы [ 8 ]

4 голосов
/ 21 января 2009

Я использую s_ для статических элементов и m_ для элементов экземпляра.

Однако то, что вы просите, и то, что я делаю, противоречит рекомендованным Microsoft соглашениям об именах для C #, которые перечислены здесь: Имена членов типа .

3 голосов
/ 21 января 2009

Я позволил моей IDE форматировать их по-другому. Намного проще увидеть, что курсив = статический. Затем, когда мне нужно реорганизовать код, мне не нужно беспокоиться и о переименовании.

2 голосов
/ 21 января 2009

Вы должны придерживаться уже существующих соглашений для вашего языка. Ваша среда IDE должна четко указывать, какая переменная является общедоступной / частной, статической / экземпляром ... Необходимо было указать видимость или тип переменной в ее имени, прежде чем у нас появятся редакторы раскраски синтаксиса. Но теперь, когда он у нас есть, я считаю, что код намного чище и легче для чтения, если он не загроможден префиксами.

1 голос
/ 21 января 2009

Я использую g_, поскольку статическая переменная - не что иное, как прославленная глобальная переменная

1 голос
/ 21 января 2009

Я не различаю частные статические переменные или переменные экземпляра. Они оба в верблюжьей клетке с подчеркиванием:

private static readonly ILog _someLog = ...;

И я не думаю, что в результате я когда-либо оставил царапину на голове.

0 голосов
/ 21 января 2009

Я бы не использовал подчеркивания, так как все public должно выглядеть красиво.

Что касается меня, я использую префикс the, например theApplication, theSettings и т. Д.

0 голосов
/ 21 января 2009

Как и Кент, у меня верблюжий кейс с ведущим подчеркиванием. Объявления с префиксами не были в моде в течение некоторого времени. Я считаю, что организации моих объявлений по регионам и подсказок инструментов, которые вы получаете в IDE, достаточно для отслеживания этого материала.

0 голосов
/ 21 января 2009

Я не сомневаюсь, что это выльется в спор о том, кто лучше, (ставьте эти скобки на одной строке, черт побери!), Но мне не нравится делать или видеть что-то подобное, кроме констант. Я вижу ваши аргументы в пользу этого, но если вы не являетесь магазином для одного человека, это просто вызовет замешательство, когда кто-то еще редактирует ваш код и не придерживается его.

Лично я предпочитаю не заботиться о том, что его метод, экземпляр, статические и т. Д. Ограничены, и позволить IDE помочь мне в этом, когда мне нужно будет об этом знать. Кроме того, для вашего языка не опубликованы соглашения об именах?

...