Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.snto-msu.net/showflat.php?Number=8311166&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Wed Apr 13 01:50:44 2016
Кодировка: Windows-1251
C# code style: подчеркивания в именах переменных - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Technical >> Development (Archive)

Страницы: 0 | 20 | 40 | 60 | показать все | след. страница
Mike
Ызарг

Рег.: 02.11.2002
Сообщений: 8098
Рейтинг: 2147
  C# code style: подчеркивания в именах переменных
      29.01.2009 11:42
 

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

Перенесено модератором DarkGray из ветки в разделе Development



Редактировал DarkGray (30.01.2009 15:15)
Shurik

Рег.: 27.09.2003
Сообщений: 13646
Рейтинг: 787
  Re: Пара мыслей по поводу C# code style [re: Mike]
      29.01.2009 17:31
-1

Quote:

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



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

А вообще, у макрософта написано

 
Quote:


Do not use underscores, hyphens, or any other nonalphanumeric characters.
  



 
Quote:


Do not use Hungarian notation.

Hungarian notation is the practice of including a prefix in identifiers to encode some metadata about the parameter, such as the data type of the identifier.
  



http://msdn.microsoft.com/en-us/library/ms229045.aspx



not fluffing up the experience with features that will ultimately cause you a headache
Mike
Ызарг

Рег.: 02.11.2002
Сообщений: 8098
Рейтинг: 2147
  Re: Пара мыслей по поводу C# code style [re: Shurik]
      29.01.2009 17:38
 

Quote:

А вообще, у макрософта написано


Да, я в курсе. В Code Analysis для .NET есть Naming Rules. Кстати, вполне жестокие.

Shurik

Рег.: 27.09.2003
Сообщений: 13646
Рейтинг: 787
  Re: Пара мыслей по поводу C# code style [re: Mike]
      29.01.2009 17:47
-1

Quote:

Да, я в курсе. В Code Analysis для .NET есть Naming Rules. Кстати, вполне жестокие.



тогда зачем вынес на обсуждение?
 
Quote:

Первое - это попытка добавить какой-то смысл в имя переменной.




С этим все ясно - подчеркивание нормальные прогеры не используют, те кто используют не хватило ума подумать на тему красивого согласованного naming convention, и посмотреть рекомендации. Т.е. да я по одному подчеркиванию могу сделать вывод об уровне программиста :grin: .




not fluffing up the experience with features that will ultimately cause you a headache
Mike
Ызарг

Рег.: 02.11.2002
Сообщений: 8098
Рейтинг: 2147
  Re: Пара мыслей по поводу C# code style [re: Shurik]
      29.01.2009 17:50
 

Quote:

тогда зачем вынес на обсуждение?


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

__No__

Рег.: 17.01.2005
Сообщений: 21062
Из: Внутренняя Монголия
Рейтинг: 6310
  Re: Пара мыслей по поводу C# code style [re: Shurik]
      29.01.2009 18:00
 

Quote:

С этим все ясно - подчеркивание нормальные прогеры не используют, те кто используют не хватило ума подумать на тему красивого согласованного naming convention, и посмотреть рекомендации




PEP8:
 
code:
Prescriptive: Naming Conventions Names to Avoid Never use the characters `l' (lowercase letter el), `O' (uppercase letter oh), or `I' (uppercase letter eye) as single character variable names. In some fonts, these characters are indistinguishable from the numerals one and zero. When tempted to use `l', use `L' instead. Package and Module Names Modules should have short, all-lowercase names. Underscores can be used in the module name if it improves readability. Python packages should also have short, all-lowercase names, although the use of underscores is discouraged. Since module names are mapped to file names, and some file systems are case insensitive and truncate long names, it is important that module names be chosen to be fairly short -- this won't be a problem on Unix, but it may be a problem when the code is transported to older Mac or Windows versions, or DOS. When an extension module written in C or C++ has an accompanying Python module that provides a higher level (e.g. more object oriented) interface, the C/C++ module has a leading underscore (e.g. _socket). Class Names Almost without exception, class names use the CapWords convention. Classes for internal use have a leading underscore in addition. Exception Names Because exceptions should be classes, the class naming convention applies here. However, you should use the suffix "Error" on your exception names (if the exception actually is an error). Global Variable Names (Let's hope that these variables are meant for use inside one module only.) The conventions are about the same as those for functions. Modules that are designed for use via "from M import *" should use the __all__ mechanism to prevent exporting globals, or use the older convention of prefixing such globals with an underscore (which you might want to do to indicate these globals are "module non-public"). Function Names Function names should be lowercase, with words separated by underscores as necessary to improve readability. mixedCase is allowed only in contexts where that's already the prevailing style (e.g. threading.py), to retain backwards compatibility. Function and method arguments Always use 'self' for the first argument to instance methods. Always use 'cls' for the first argument to class methods. If a function argument's name clashes with a reserved keyword, it is generally better to append a single trailing underscore rather than use an abbreviation or spelling corruption. Thus "print_" is better than "prnt". (Perhaps better is to avoid such clashes by using a synonym.) Method Names and Instance Variables Use the function naming rules: lowercase with words separated by underscores as necessary to improve readability. Use one leading underscore only for non-public methods and instance variables. To avoid name clashes with subclasses, use two leading underscores to invoke Python's name mangling rules. Python mangles these names with the class name: if class Foo has an attribute named __a, it cannot be accessed by Foo.__a. (An insistent user could still gain access by calling Foo._Foo__a.) Generally, double leading underscores should be used only to avoid name conflicts with attributes in classes designed to be subclassed. Note: there is some controversy about the use of __names (see below). Constants Constants are usually declared on a module level and written in all capital letters with underscores separating words. Examples include MAX_OVERFLOW and TOTAL.




Dixi.
Shurik

Рег.: 27.09.2003
Сообщений: 13646
Рейтинг: 787
  Re: Пара мыслей по поводу C# code style [re: __No__]
      29.01.2009 18:11
 

я имел ввиду C#



not fluffing up the experience with features that will ultimately cause you a headache
scout
newbie

Рег.: 18.02.2005
Сообщений: 45
Рейтинг: 8
  Пара мыслей по поводу C# code style [re: *NONE*]
      29.01.2009 21:51
 

По поводу подчеркиваний.
А как вы оформляете инициализацию по требованию?
Я, например, часто использую такой код:
code:
string _state = null; public string State { if(_state==null) { _state=LoadState(); } return _state; }

Подчеркиванием в данном случае я показываю, что остальным программистам, и мне в том числе, стоит избегать использования поля _state в других методах, а нужно пользоваться свойством State.

Перенесено модератором DarkGray из ветки в разделе Development

Присоединено модератором DarkGray



Редактировал DarkGray (30.01.2009 15:18)
Shurik

Рег.: 27.09.2003
Сообщений: 13646
Рейтинг: 787
  Re: Пара мыслей по поводу C# code style [re: scout]
      30.01.2009 11:06
-2

Quote:

Подчеркиванием в данном случае я показываю, что остальным программистам, и мне в том числе, стоит избегать использования поля _state в других методах, а нужно пользоваться свойством State.



я ж постил в этом треде цитату относительно подобных рассуждений, все это хрень.



not fluffing up the experience with features that will ultimately cause you a headache
DarkGrayМодератор
Carpal Tunnel

Рег.: 30.09.2002
Сообщений: 31415
Рейтинг: 8952
  Re: Пара мыслей по поводу C# code style [re: Shurik]
      30.01.2009 15:21
1

Quote:

я ж постил в этом треде цитату относительно подобных рассуждений, все это хрень.




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


как ты предлагаешь называть переменные из примера scout?

Shurik

Рег.: 27.09.2003
Сообщений: 13646
Рейтинг: 787
  Re: Пара мыслей по поводу C# code style [re: DarkGray]
      30.01.2009 21:35
 

Quote:

там нет ответа



Во-первых, там явно указано
 
Quote:


Do not use underscores, hyphens, or any other nonalphanumeric characters.
  




Во-вторых, вот это
 
Quote:

Подчеркиванием в данном случае я показываю, что остальным программистам, и мне в том числе, стоит избегать использования поля _state в других методах, а нужно пользоваться свойством State.



информация не о тех данных, которые хранятся в переменной _state, а информация о самой переменной _state, т.е. это можно отнести к метаданным. И тут подходит вторая цитата
 
Quote:

Do not use Hungarian notation.
Hungarian notation is the practice of including a prefix in identifiers to encode some metadata about the parameter, such as the data type of the identifier.




 
Quote:

как ты предлагаешь называть переменные из примера scout?



не вижу причин, по которым для инициализации по требованию менять naming convention.
 
code:
private string state; public string State { if(state == null) { state = LoadState(); } return state; }




not fluffing up the experience with features that will ultimately cause you a headache
penartur2

Рег.: 16.06.2005
Сообщений: 54495
Рейтинг: 429
  Re: Пара мыслей по поводу C# code style [re: Shurik]
      30.01.2009 21:38
1

В ответ на:

не вижу причин, по которым для инициализации по требованию менять naming convention.



Это вообще какое-то доведение до абсурда.
Ради того, чтобы не использовать подчеркивание, ты готов назвать две переменных одинаковым именем, различающимся только регистром?
Все-таки, ко всему надо подходить с умом.
В ответ на:

информация не о тех данных, которые хранятся в переменной _state, а информация о самой переменной _state, т.е. это можно отнести к метаданным. И тут подходит вторая цитата



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



Я ушел на новый форум.
Там правовое государство. А еще можно удобно листать аплоад ;)
Shurik

Рег.: 27.09.2003
Сообщений: 13646
Рейтинг: 787
  Re: Пара мыслей по поводу C# code style [re: penartur2]
      30.01.2009 21:46
1

Quote:

Ради того, чтобы не использовать подчеркивание, ты готов назвать две переменных одинаковым именем, различающимся только регистром?



ващето, это широко распространенная практика. Тебя же не смущает, что имя типа часто вточности совпадает с именем свойства? И не надо извращать мои намерения, я действую в соответствие с общепринятыми рекомендованными создателями платформы naming convention, а не ради "не использовать подчеркивание". Это ж надо так извратить.



not fluffing up the experience with features that will ultimately cause you a headache
penartur2

Рег.: 16.06.2005
Сообщений: 54495
Рейтинг: 429
  Re: Пара мыслей по поводу C# code style [re: Shurik]
      30.01.2009 21:49
-1

В ответ на:

Тебя же не смущает, что имя типа часто вточности совпадает с именем свойства?



Когда я такое вижу - меня это очень смущает.
В ответ на:

И не надо извращать мои намерения, я действую в соответствие с общепринятыми рекомендованными создателями платформы naming convention



Там где-то явно рекомендуется иметь в некоторых случаях две переменные с одинаковыми именами?



Я ушел на новый форум.
Там правовое государство. А еще можно удобно листать аплоад ;)
Shurik

Рег.: 27.09.2003
Сообщений: 13646
Рейтинг: 787
  Re: Пара мыслей по поводу C# code style [re: penartur2]
      30.01.2009 21:51
 

Quote:

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



да это так. Но я не использую префикс, поэтому вот эта цитата уже не подходит к моему варианту ;)
 
Quote:


Do not use Hungarian notation.
Hungarian notation is the practice of including a prefix in identifiers to encode some metadata about the parameter, such as the data type of the identifier.
  






not fluffing up the experience with features that will ultimately cause you a headache
Shurik

Рег.: 27.09.2003
Сообщений: 13646
Рейтинг: 787
  Re: Пара мыслей по поводу C# code style [re: penartur2]
      30.01.2009 21:59
 

Quote:

Когда я такое вижу - меня это очень смущает.



продолжаем изучение азов языка C#
Quote:


The following rules outline the naming guidelines for properties:

Consider creating a property with the same name as its underlying type. For example, if you declare a property named Color, the type of the property should likewise be Color. See the example later in this topic.
http://msdn.microsoft.com/en-us/library/ms229045.aspx







not fluffing up the experience with features that will ultimately cause you a headache
Shurik

Рег.: 27.09.2003
Сообщений: 13646
Рейтинг: 787
  Re: Пара мыслей по поводу C# code style [re: penartur2]
      30.01.2009 22:03
 

Quote:

Там где-то явно рекомендуется иметь в некоторых случаях две переменные с одинаковыми именами?



Во-первых, не одинаковыми, регистр в C# учитывается.
К сожалению, явно майкрософт прописал naming convention только для публичных и протектед конструкций. Для приватных членов остается руководствоваться только уже упомянутыми цитатами
http://msdn.microsoft.com/en-us/library/ms229045.aspx



not fluffing up the experience with features that will ultimately cause you a headache
Shurik

Рег.: 27.09.2003
Сообщений: 13646
Рейтинг: 787
  Re: Пара мыслей по поводу C# code style [re: Shurik]
      30.01.2009 22:05
 

Quote:

Для приватных членов остается руководствоваться только уже упомянутыми цитатами



ну и у Java позаимствовать :), там все явно определено.



not fluffing up the experience with features that will ultimately cause you a headache
abv

Рег.: 21.09.2007
Сообщений: 6924
Рейтинг: 6747
  Re: Пара мыслей по поводу C# code style [re: Shurik]
      30.01.2009 22:05
1

В ответ на:

Do choose easilyreadable identifier names. For example, a property namedHorizontalAlignment is more readable in English thanAlignmentHorizontal.Dofavor readability over brevity. The property name CanScrollHorizontallyis better than ScrollableX (an obscure reference to the X-axis).Do not use underscores, hyphens, or any other nonalphanumeric characters.Do not use Hungarian notation.



я бы еще добавил: Do not use php. Ибо съедает мозг




зимой и летом велозона
scout
newbie

Рег.: 18.02.2005
Сообщений: 45
Рейтинг: 8
  Re: Пара мыслей по поводу C# code style [re: Shurik]
      30.01.2009 22:47
 

В ответ на:

Do not use Hungarian notation.Hungarian notation is the practice of including a prefix in identifiers to encode some metadata about the parameter, such as the data type of the identifier.




Инициализация по требованию - это очень частый паттерн.
Я не согласен с тем, что подчеркивание в имени поля, хранящего состояние - это метаинформация об этом поле (как например, тип и т.п.). Это скорее информация о самом паттерне. Когда вы видите в коде поле, начинающееся с подчеркивания, - значит применяется паттерн Инициализация по требованию.
 
Разве это не упрощает понимание кода?

Страницы: 0 | 20 | 40 | 60 | показать все | след. страница

Technical >> Development (Archive)

Дополнительная информация
1 зарегистрированных и 2 анонимных пользователей просматривают этот форум.

Модераторы:  DarkGray 

Печать темы
>>
Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в