2009-04-04 4 views
9

Я пытаюсь выяснить, какой самый умный способ назвать частные методы и частные статические методы в C#.Какова наилучшая практика для именования частных и статических частных методов в C#?

Справочная информация: Я знаю, что лучшей практикой для частных участников является подчеркивание-префикс + camelcase. Вы можете спорить со мной, но поверьте мне, я видел достаточно кода от хардкорных профессионалов, которые следуют этому соглашению, это квалифицированный отраслевой стандарт.

Я также знаю, что паскаль является отраслевым стандартом для общественных методов. Но я видел комбинацию имени стиля теста (то есть метод method_must_return_false_occasionally) для случая pascal, camelcase и underscore-prefix + camelcase для частных и частных статических методов.

Но каков стиль лучшей практики для частного и частного статического метода именования в C#?

Если есть определенные стили, которые используются из частных методов, а не другие, я могу понять это, просто объясните.

Спасибо за чтение.

ответ

16

Отъезд от Microsoft Naming Guidelines и Брэда Аврама Style Guide

Они говорят, что все методы должны быть PascalCase

public void DoWork() {} 
private void StillDoWork() {} 
private static void ContinueToDoWork() {} 
+8

Правильно, но мне интересно, потому что, поскольку мы все знаем, что Microsoft может быть чрезвычайно умный или крайне острый. Похоже, имеет смысл иметь другую конвенцию для частных методов, например, для частных членов существует другое соглашение. Кроме того, очевидно, что некоторые правила fxcops глупы. –

+0

Я согласен с тем, что некоторые правила FxCop кажутся глупыми, но я твердо убежден в том, что мы приближаем наше сообщество к стандартам. Я чувствую, что у MS самый большой голос в этой области. Существует множество инструментов (intellisense и т. Д.) И сообщений компилятора для определения области элементов, нам не нужны разные имена. – bendewey

+0

Я согласен, что есть различные инструменты, которые облегчают работу, но я с уважением не согласен, что использование разных имен может быть мощным инструментом в сочетании с intellisense. Например, я могу быстро получить доступ к закрытым членам с символом подчеркивания. –

3

Я не знаю, о промышленных стандартах, но использовать Паскаль корпус даже для частных методов и I не делайте различия для статических методов.

6

naming guidelines для разработки библиотеки классов .NET не различает публичное и личное использование и рекомендует Pascal случай для статических методов.

EDIT: Моя личная практика заключается в использовании корпуса Pascal для методов и свойств, верблюжьей оболочки для полей, параметров и локальных переменных. При обращении к членам экземпляра из класса я использую this., чтобы отличать от членов класса и параметров, когда это необходимо. Я понятия не имею, квалифицируюсь ли я как «хардкор-профессионал», но мне платят. :-)

EDIT 2: После написания этого изначально я сменил работу. Стандарт кодирования, который мы придерживаемся, отличается от моих личных чувств, и мы префикс частных полей с подчеркиваниями. Я также начал использовать ReSharper, и наши стандарты (как правило) соответствуют правилам по умолчанию. Я нахожу, что могу спокойно жить с подчеркиваниями. Я использую только this, когда это абсолютно необходимо, так как оно не соответствует нашим стандартам кода. Консистенция превосходит личные предпочтения.

+1

кто-то с репутацией ~ 35K является хардкорным профессионалом в моей книге. – bendewey

+1

Я ценю настроение, но чувствую, что мне еще многое предстоит узнать. – tvanfosson

+0

Приятно знать, что я не единственный человек, который использует это. - так много раз мне говорили, что это запах кода. – Sherlock

1

Один из вариантов заключается в использовании инструмента, который принуждает вас быть последовательным, например, style cop (если вы используете reSharper, есть плагин для стиля копа на codeplex). Большинство инструментов, по-видимому, применяют («предлагаю») рекомендации Microsoft, так как вы проведете несколько тестов для получения одобрения платформы MS.

1

Каждое место, в котором я работал, всегда делало это по-другому.

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

Будучи способным переключить свой стиль и справиться с когнитивным диссонансом, который это создает в первые несколько недель, является частью профессии.

Я бы начал рассматривать различные проекты с открытым исходным кодом и подобные проекты, и вы увидите множество различных схем.

Я также видел, как подчеркивают деловые вопросы camelCase и Pascal, разделяющие коммуны, а иногда и команды - вот что я думаю о схеме кодирования.

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

Другим фактором, который я хотел бы учитывать, является сложность кода в терминах OO, если это простой проект или сложный дизайн OO с использованием шаблонов mutliple или вы используете некоторые IOC, а затем запускаете «всплеск» на разных типах стандартного кодирования, а затем посмотрите на то, что физически выглядит код, когда вы его используете, - выглядите хорошо с вами и командой или выглядят уродливо.

2

weird_underscore_naming соглашение обычно ограничен испытаниями, потому что он делает их более читаемыми и является тем, что сильно поощряется BDD. Помните, что в то время как метод описывает в короткие сроки то, что он делает (DepositMoney), тесты должны описывать, что они делают, то есть Negative_deposits_must_be_caught

Смежные вопросы