Какое соглашение о присвоении имен принято для int, string, array, list, object и т. д. - PullRequest
9 голосов
/ 30 апреля 2010

Компания, в которой я сейчас работаю, использует соглашение о присвоении имен для своих переменных C #, таких как iSomeName для int, sSomeName для строки, aSomeName для массивов, bSomeName для логического значения, dSomeName для даты и так далее. Мой предыдущий работодатель не использовал префиксы i, s, a, b и d и просто назвал переменные хорошим понятным именем. У меня сложилось впечатление, что эти префиксы потеряли свою популярность некоторое время назад, и из того, что я прочитал, это не текущая тенденция. В любом случае, мне кажется, что переменная достаточно описательная, чтобы понять, что она делает, но мне было интересно, какова принятая сегодня практика именования переменных?

Ответы [ 8 ]

7 голосов
/ 30 апреля 2010

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

7 голосов
/ 30 апреля 2010

Ну, многие имена зависят от языка, который вы используете .. camelCase или PascalCase или underscore_variables. Называть их правильно / читабельно / понятно - это самое главное.

Относительно этого префикса (или венгерской нотации): он специально указан в MSDN: Общие соглашения об именах в C # , статья:

[...]

Не используйте венгерские обозначения.

Венгерская нотация - это практика включая префикс в идентификаторах закодировать некоторые метаданные о параметр, такой как тип данных идентификатор.

[...]

5 голосов
/ 30 апреля 2010

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

См. Венгерская нотация для истории этой практики. Версия под названием Apps Венгерская нотация означает, что префикс помогает указать назначение переменной, а не ее тип. Это законно время от времени, но редко должно быть необходимо. Более распространенная практика называется Системы венгерского обозначения , где префикс указывает тип. Это (к счастью) становится все менее распространенным.

Не будьте слишком подавлены, чтобы делать это. Есть много худших практик, которые мы вынуждены применять. Если это так плохо, как получается, вам повезло. И наличие некоторых стандартов (если они не сумасшедшие) лучше, чем без стандартов .

4 голосов
/ 30 апреля 2010

«Современный» и «популярный» способ сделать это без венгерской нотации (i, s и т. Д.). Причина этого в том, что рефакторинг больше не является проблемой. Это означает, что, по сути, происходит изменение кода в больших количествах, а не конкретно с течением времени. Когда вы реорганизуете вещи, венгерская нотация затрудняет правильную работу, как правило, с помощью различных инструментов, и эти инструменты не знают всех пользовательских венгерских стандартов нотации.

Представьте, что у вас есть переменная-член iAge для объекта, который был целым числом. Ну, что если вы захотите изменить это значение с int на long, потому что этот возраст был в миллисекундах? Ну, тогда вам также придется переименовать его в lAge сейчас. Изменить типы легко, и это можно автоматизировать, но «творческое стандартное именование» сделать гораздо сложнее. И действительно, имея i или l перед этой переменной Age - ДЕЙСТВИТЕЛЬНО ли она говорит вам больше о том, что делает код? Конечно, он сообщает вам тип данных, но наведите курсор на него в любой современной IDE, и это также скажет вам тип данных.

Короче говоря, «современные предпочтения» гарантируют, что цель вашего кода легко подготовить. Тривиальные вещи, такие как типы данных в венгерской нотации, только запутывают это. Код достаточно сложен для чтения, как есть - не делайте его хуже!

2 голосов
/ 30 апреля 2010

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

StyleCop часто используется для обеспечения соблюдения стандартов форматирования кода в C # и по умолчанию не допускает венгерскую нотацию, хотя допускает исключения при конфигурировании.

1 голос
/ 30 апреля 2010

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

Если вы хотите прочитать хорошую статью (возможно, перешлите ее в большие парики: P) об этом, посмотрите Взгляд Джоэла на создание кода безобразно и венгерскую нотацию , этохорошее объяснение того, почему была сделана венгерская запись и как она использовалась в течение нескольких поколений.

1 голос
/ 30 апреля 2010

Вам необходимо обратиться к Руководству по проектированию платформы , в частности к главе 3. Та же информация (без аннотаций для «истории») доступна онлайн .

Система именования, используемая вашим текущим работодателем, называется венгерской нотацией и больше не рекомендуется Microsoft. (Фактически, большинство мест больше не используют его.)

1 голос
/ 30 апреля 2010

Ваш текущий работодатель использует Системная нотация на венгерском языке

Лично я не вижу значения в этом соглашении об именах, так как большинство сред разработки предоставляют цветную подсветку синтаксиса и проверку переменных, чтобы вы могли легко определить тип. В худшем случае это сбивает с толку, так как вы можете изменить тип переменной, но не можете изменить переменную «префикс»:

double iCount = 0.0;
...