Именование полей, переменных, выбор нотации
От: aschmidt  
Дата: 13.02.04 13:20
Оценка: 7 (3) +2
Здравствуйте, Jack Osicilator, Вы писали:

JO>Здравствуйте, Kir., Вы писали:


JO>Ошибочка.

JO>Вот как нужно:

Вот так как раз не нужно
Начинается... _, psz, h...

public int Prop
{
get { return prop; }
set { this.prop = value; }
}


public

JO>
JO>class TestClass1
JO>{
JO>    int _prop; // You need a member variable for storing the property's value
JO>    public TestClass1()
JO>    {
JO>        Console.WriteLine("TestClass1 started");
JO>        prop=1;
JO>    }
JO>    public int prop
JO>    {
JO>        get
JO>        {
JO>            return _prop;
JO>        }
JO>        set
JO>        {
JO>            _prop = value; // This will work correctly
JO>        }
JO>    }        
JO>    public void Trace()
JO>    {
JO>        Console.WriteLine("The value is {0}", prop);
JO>    }
JO>}
JO>



15.02.04 17:34: Ветка выделена из темы Ошибка при установвке значения свойства...
Автор: Kir.
Дата: 13.02.04
— TK
15.02.04 17:35: Перенесено модератором из '.NET' — TK
Re[3]: Именование полей, переменных, выбор нотации
От: Lloyd Россия  
Дата: 13.02.04 14:12
Оценка: +2
Здравствуйте, aschmidt, Вы писали:

A>Вот так как раз не нужно

A>Начинается... _, psz, h...

Но использование _ для приватных полей очень удобно. Зачем себя тут ограничивать?
Re[4]: Именование полей, переменных, выбор нотации
От: Al-Ko  
Дата: 13.02.04 14:20
Оценка: +1 -1
Здравствуйте, Lloyd, Вы писали:

L>Но использование _ для приватных полей очень удобно. Зачем себя тут ограничивать?


странно... смотрю листинги с примерами из MSDN и т.д. — не видно там подчеркивания. Зачем оно? prop — приватное поле, Prop — свойство. Зачем тут еще разные птичьи символы?
... << RSDN@Home 1.1.3 beta 1 >>
Старый глюк лучше новых двух!
Re[4]: Именование полей, переменных, выбор нотации
От: Igor Trofimov  
Дата: 13.02.04 15:48
Оценка:
L>Но использование _ для приватных полей очень удобно. Зачем себя тут ограничивать?

Не так уж это и удобно. Ошибка в одном символе приводит к тяжелым последствиям.
Re[5]: Именование полей, переменных, выбор нотации
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 13.02.04 20:39
Оценка:
Здравствуйте, Al-Ko, Вы писали:

AK>странно... смотрю листинги с примерами из MSDN и т.д. — не видно там подчеркивания. Зачем оно? prop — приватное поле, Prop — свойство. Зачем тут еще разные птичьи символы?


А локальные переменные?
... << RSDN@Home 1.1.3 beta 1 (Win32NT 5.1.2600.0) >>
AVK Blog
Re[6]: Именование полей, переменных, выбор нотации
От: Al-Ko  
Дата: 14.02.04 11:46
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>А локальные переменные?


http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconnamingguidelines.asp
и никаких подчеркиваний!
... << RSDN@Home 1.1.3 beta 1 >>
Старый глюк лучше новых двух!
Re[7]: Именование полей, переменных, выбор нотации
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 14.02.04 13:44
Оценка:
Здравствуйте, Al-Ko, Вы писали:

AK>и никаких подчеркиваний!


Ты сам то читал? В курсе что это руководство к стилю внешнего интерфейса? Про приватные поля и локальные переменные там ни слова.

PS: сам МС нередко применяет в фреймворке префикс m_ для приватных членов.
... << RSDN@Home 1.1.3 beta 1 (Win32NT 5.1.2600.0) >>
AVK Blog
Re[8]: Именование полей, переменных, выбор нотации
От: Al-Ko  
Дата: 14.02.04 13:56
Оценка:
Здравствуйте, AndrewVK, Вы писали:


AVK>Ты сам то читал? В курсе что это руководство к стилю внешнего интерфейса? Про приватные поля и локальные переменные там ни слова.


AVK>PS: сам МС нередко применяет в фреймворке префикс m_ для приватных членов.


извини, не туда ссылку дал:

http://msdn.microsoft.com/library/en-us/cpgenref/html/cpconFieldUsageGuidelines.asp

там, в частности, есть такие слова:

Do not use Hungarian notation for field names. Good names describe semantics, not type.
Do not apply a prefix to field names or static field names. Specifically, do not apply a prefix to a field name to distinguish between static and nonstatic fields. For example, applying a g_ or s_ prefix is incorrect.

... << RSDN@Home 1.1.3 beta 1 >>
Старый глюк лучше новых двух!
Re[8]: Именование полей, переменных, выбор нотации
От: Igor Trofimov  
Дата: 14.02.04 14:16
Оценка: +1
AVK>PS: сам МС нередко применяет в фреймворке префикс m_ для приватных членов.

Что не мешает подобному стилю именования быть весьма некрасивым (это, конечно, убъективно, но все-таки...). Кстати, там рядом, в этом naming guide кажется все-таки есть пара грубых слов по поводу незначащих префиксов типа m_
Re[5]: Именование полей, переменных, выбор нотации
От: Lloyd Россия  
Дата: 14.02.04 19:28
Оценка:
Здравствуйте, Igor Trofimov, Вы писали:

iT>Не так уж это и удобно. Ошибка в одном символе приводит к тяжелым последствиям.


к каким?
Re[9]: Именование полей, переменных, выбор нотации
От: Lloyd Россия  
Дата: 14.02.04 19:31
Оценка:
Здравствуйте, Igor Trofimov, Вы писали:

iT>Что не мешает подобному стилю именования быть весьма некрасивым (это, конечно, убъективно, но все-таки...).


Ну мы же не девушки, чтобы ради красоты жертвовать удобсвом.
Re[6]: Именование полей, переменных, выбор нотации
От: Igor Trofimov  
Дата: 14.02.04 19:32
Оценка:
iT>>Не так уж это и удобно. Ошибка в одном символе приводит к тяжелым последствиям.

Например к таким, с какого начался этот тред.
Re[7]: Именование полей, переменных, выбор нотации
От: Lloyd Россия  
Дата: 14.02.04 19:38
Оценка:
Здравствуйте, Igor Trofimov, Вы писали:

iT>Например к таким, с какого начался этот тред.


Уеряю тебя, ошибиться в регистре гораздо легче.
Re[9]: Именование полей, переменных, выбор нотации
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 14.02.04 20:04
Оценка:
Здравствуйте, Al-Ko, Вы писали:

AK>там, в частности, есть такие слова:


AK>

AK>Do not use Hungarian notation for field names. Good names describe semantics, not type.
AK>Do not apply a prefix to field names or static field names. Specifically, do not apply a prefix to a field name to distinguish between static and nonstatic fields. For example, applying a g_ or s_ prefix is incorrect.


Ага, это называется правая рука не знает что делает левая. Вот к примеру:

Assembly.m_assemblyData
Assembly.m_cachedData
Assembly.s_localFilePrefix
... << RSDN@Home 1.1.3 beta 1 (Win32NT 5.1.2600.0) >>
AVK Blog
Re[9]: Именование полей, переменных, выбор нотации
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 14.02.04 20:04
Оценка: +1
Здравствуйте, Igor Trofimov, Вы писали:

iT>Что не мешает подобному стилю именования быть весьма некрасивым


Вопрос вкуса. В любом случае приватные, публичные члены, локальные переменные и параметры методов должны различаться по написанию. Синтаксиса, удовлетворяющего этому и притом идеального я не встречал.
... << RSDN@Home 1.1.3 beta 1 (Win32NT 5.1.2600.0) >>
AVK Blog
Re[10]: Именование полей, переменных, выбор нотации
От: Igor Trofimov  
Дата: 15.02.04 09:53
Оценка:
AVK>Вопрос вкуса. В любом случае приватные, публичные члены, локальные переменные и параметры методов должны различаться по написанию. Синтаксиса, удовлетворяющего этому и притом идеального я не встречал.

Согласен, действительно во многом — дело вкуса.
Re[8]: Именование полей, переменных, выбор нотации
От: Igor Trofimov  
Дата: 15.02.04 09:54
Оценка:
iT>>Например к таким, с какого начался этот тред.
L>Уеряю тебя, ошибиться в регистре гораздо легче.

А где я утверждал обратное? Префикс "_" — это плохо, а если разница — только в регистре — это вообще кошмар, имхо.
Re[9]: Именование полей, переменных, выбор нотации
От: IT Россия linq2db.com
Дата: 15.02.04 17:53
Оценка: +1
Здравствуйте, Igor Trofimov, Вы писали:

iT>А где я утверждал обратное? Префикс "_" — это плохо, а если разница — только в регистре — это вообще кошмар, имхо.


Префикс '_' для внутренных полей класса — это как раз хорошо. Во-первых, хорошо для отличия от локальных переменных и параметров. Во-вторых, удобнее использование IntelliSense. В-третьих, открываем отладчик и видим, что в падавляющем числе классов MS использует именно этот способ для объявления внутренних полей. Да и по опыту, попробовав множество всяких вариантов, именно этот способ кажется моему ИМХУ наиболее удобным
Если нам не помогут, то мы тоже никого не пощадим.
Re[10]: Именование полей, переменных, выбор нотации
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.02.04 19:31
Оценка:
Здравствуйте, IT, Вы писали:

IT>В-третьих, открываем отладчик и видим, что в падавляющем числе классов MS использует именно этот способ для объявления внутренних полей.


Справедливости ради чаще все таки используется m_ и s_
... << RSDN@Home 1.1.3 beta 1 (Win32NT 5.1.2600.0) >>
AVK Blog
Re[11]: Именование полей, переменных, выбор нотации
От: mikа Stock#
Дата: 15.02.04 20:31
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Справедливости ради чаще все таки используется m_ и s_


Странно. Как раз чаще всего встречал простое "_".
Re[11]: Именование полей, переменных, выбор нотации
От: Igor Soukhov  
Дата: 15.02.04 21:03
Оценка: :)
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, IT, Вы писали:


IT>>В-третьих, открываем отладчик и видим, что в падавляющем числе классов MS использует именно этот способ для объявления внутренних полей.


AVK>Справедливости ради чаще все таки используется m_ и s_


в свете последних событий можно сказать что и g_ они не брезгуют =)
* thriving in a production environment *
Re[10]: Именование полей, переменных, выбор нотации
От: alexkro  
Дата: 15.02.04 22:52
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Igor Trofimov, Вы писали:


iT>>Что не мешает подобному стилю именования быть весьма некрасивым


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


Каким образом ты различаешь локальные переменные и параметры методов?
Re[11]: Именование полей, переменных, выбор нотации
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 16.02.04 07:34
Оценка: +1
Здравствуйте, alexkro, Вы писали:

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


A>Каким образом ты различаешь локальные переменные и параметры методов?


Различать их особого смысла нет
... << RSDN@Home 1.1.3 beta 2 >>
AVK Blog
Re[10]: Именование полей, переменных, выбор нотации
От: Al-Ko  
Дата: 16.02.04 07:44
Оценка: 30 (2) :)))
Здравствуйте, AndrewVK, Вы писали:


AVK>Ага, это называется правая рука не знает что делает левая. Вот к примеру:


AVK>Assembly.m_assemblyData

AVK>Assembly.m_cachedData
AVK>Assembly.s_localFilePrefix

а-а, я понял! Они просят не пользоваться префиксами, потому что пользуются ими сами — чтобы не было конфликтов
... << RSDN@Home 1.1.3 beta 1 >>
Старый глюк лучше новых двух!
Re[11]: Именование полей, переменных, выбор нотации
От: RvRom  
Дата: 16.02.04 08:22
Оценка:
> AVK>Вопрос вкуса. В любом случае приватные, публичные члены, локальные переменные и параметры методов должны различаться по написанию. Синтаксиса, удовлетворяющего этому и притом идеального я не встречал.
> Согласен, действительно во многом — дело вкуса.

http://www.qualitygeneration.com/cgi-bin/genCodeStd.pl
вот тут есть хорошая ссылка создания шаблона для кодирования
Posted via RSDN NNTP Server 1.8 beta
Re[11]: Именование полей, переменных, выбор нотации
От: AsIs  
Дата: 16.02.04 10:25
Оценка: -1
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, IT, Вы писали:


IT>>В-третьих, открываем отладчик и видим, что в падавляющем числе классов MS использует именно этот способ для объявления внутренних полей.


AVK>Справедливости ради чаще все таки используется m_ и s_


я думаю когда MS писал код у них не было еще Visual Studio с Intellisense. Вот он и наплодил в notepad этих доисторических пре+суффиксов в своих исходниках.

То же самое относится и к префиксу _

Если пользоваться intellisense то получается
get { return this.privateMember; }

а если не пользоваться, то
get { return _privateMemeber; }


надо у IT подсмотреть в исходники что бы догадку проверить
Re[5]: Именование полей, переменных, выбор нотации
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.02.04 12:54
Оценка:
Здравствуйте, Al-Ko, Вы писали:

AK>Здравствуйте, Lloyd, Вы писали:


L>>Но использование _ для приватных полей очень удобно. Зачем себя тут ограничивать?


AK>странно... смотрю листинги с примерами из MSDN и т.д. — не видно там подчеркивания.


Плохо смотришь. Например глянь на последние ролики из MSDN TV.

Еще очень полезно скачать ротор (исходники дотнета) и натравить на него поиск по файлам VS. Ставишь в путь CLI\fx\src и в поиск _\:i (с включенными регэкспами)... нажимаешь поиск... и любуешся на список файлов:
C:\MyProjects\CLI\fx\src\net\system\net\webproxy.cs(105):            _Credentials  = Credentials;
C:\MyProjects\CLI\fx\src\net\system\net\webproxy.cs(154):               return _ProxyAddress;
C:\MyProjects\CLI\fx\src\net\system\net\webproxy.cs(157):               _ProxyHostAddresses = null;  // hash list of proxies                                                
C:\MyProjects\CLI\fx\src\net\system\net\webproxy.cs(158):               _ProxyAddress = value; 
C:\MyProjects\CLI\fx\src\net\system\net\webproxy.cs(168):                return _BypassOnLocal;                
C:\MyProjects\CLI\fx\src\net\system\net\webproxy.cs(171):                _BypassOnLocal = value;
C:\MyProjects\CLI\fx\src\net\system\net\webproxy.cs(181):                if (_BypassList == null) {
C:\MyProjects\CLI\fx\src\net\system\net\webproxy.cs(182):                    _BypassList = new ArrayList();
C:\MyProjects\CLI\fx\src\net\system\net\webproxy.cs(186):                        _BypassList.ToArray(typeof(string));
C:\MyProjects\CLI\fx\src\net\system\net\webproxy.cs(190):                _BypassList = new ArrayList(value);
C:\MyProjects\CLI\fx\src\net\system\net\webproxy.cs(201):                return _Credentials;
C:\MyProjects\CLI\fx\src\net\system\net\webproxy.cs(204):                _Credentials = value;                
C:\MyProjects\CLI\fx\src\net\system\net\webproxy.cs(214):                if ( _BypassList == null ) {
C:\MyProjects\CLI\fx\src\net\system\net\webproxy.cs(215):                    _BypassList = new ArrayList();
C:\MyProjects\CLI\fx\src\net\system\net\webproxy.cs(217):                return _BypassList;
C:\MyProjects\CLI\fx\src\net\system\net\webproxy.cs(230):            Hashtable proxyHostAddresses = _ProxyHostAddresses;
....
C:\MyProjects\CLI\fx\src\xml\system\newxml\xslt\xsltransform.cs(221):                _CompiledStylesheet = compiledStylesheet;
C:\MyProjects\CLI\fx\src\xml\system\newxml\xslt\xsltransform.cs(222):                _QueryStore         = queryStore;
C:\MyProjects\CLI\fx\src\xml\system\newxml\xslt\xsltransform.cs(223):                _RootAction         = rootAction;
C:\MyProjects\CLI\fx\src\xml\system\newxml\xslt\xsltransform.cs(231):            if (_CompiledStylesheet == null || _QueryStore == null || _RootAction == null) {
C:\MyProjects\CLI\fx\src\xml\system\newxml\xslt\xsltransform.cs(235):            compiledStylesheet  = _CompiledStylesheet;
C:\MyProjects\CLI\fx\src\xml\system\newxml\xslt\xsltransform.cs(236):            queryStore          = _QueryStore;
C:\MyProjects\CLI\fx\src\xml\system\newxml\xslt\xsltransform.cs(237):            rootAction          = _RootAction;
C:\MyProjects\CLI\fx\src\xml\system\newxml\xslt\xsltransform.cs(238):            int queryCount      = _QueryStore.Count;
C:\MyProjects\CLI\fx\src\xml\system\newxml\xslt\xsltransform.cs(242):                    XPathExpression query = ((TheQuery)_QueryStore[i]).CompiledQuery;
9023 occurrence(s) have been found.


Если хочшь приведу полный список вхождений (1.5 мега).
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: Именование полей, переменных, выбор нотации
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.02.04 12:54
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Справедливости ради чаще все таки используется m_ и s_


Ошибаешся. Как раз чаще _. Но встречаются разные стили. m_ больше в С++, _ в Шарпе.

Вот достоверная статистика

_  - 9023
m_ - 2855


А часто два стиля пересекаются:
C:\MyProjects\CLI\fx\src\xml\system\newxml\xpath\xpathancestorquery.cs(58):            _eLast = m_qyInput.advance();
C:\MyProjects\CLI\fx\src\xml\system\newxml\xpath\xpathancestorquery.cs(67):                _eLast = m_qyInput.advance();
C:\MyProjects\CLI\fx\src\xml\system\newxml\xpath\xpathancestorquery.cs(92):            _eLast = m_qyInput.advance();
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: Именование полей, переменных, выбор нотации
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.02.04 12:54
Оценка:
Здравствуйте, Igor Soukhov, Вы писали:

IS>в свете последних событий можно сказать что и g_ они не брезгуют =)


Ни одного вхождения в Шарповском коде Ротора.
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Именование полей, переменных, выбор нотации
От: Al-Ko  
Дата: 17.02.04 13:26
Оценка:
Здравствуйте, VladD2, Вы писали:

V
VD>Еще очень полезно скачать ротор (исходники дотнета) и натравить на него поиск по файлам VS. Ставишь в путь CLI\fx\src и в поиск _\:i (с включенными регэкспами)... нажимаешь поиск... и любуешся на список файлов:
VD>[code]
VD>C:\MyProjects\CLI\fx\src\net\system\net\webproxy.cs(105): _Credentials = Credentials;

ну знаешь, в MS и венгры работают...
... << RSDN@Home 1.1.3 beta 1 >>
Старый глюк лучше новых двух!
Re[7]: Именование полей, переменных, выбор нотации
От: Al-Ko  
Дата: 17.02.04 13:30
Оценка:
Здравствуйте, Al-Ko, Вы писали:

AK>ну знаешь, в MS и венгры работают...


VD>C:\MyProjects\CLI\fx\src\xml\system\newxml\xslt\xsltransform.cs(221): _CompiledStylesheet = compiledStylesheet;

VD>C:\MyProjects\CLI\fx\src\xml\system\newxml\xslt\xsltransform.cs(222): _QueryStore = queryStore;

Update of /cvs/public/mcs/class/System.XML/System.Xml.Xsl
In directory mono-cvs.ximian.com:/tmp/cvs-serv13664

Modified Files:
XslTransform.cs ChangeLog
Log Message:
2003-07-02 Zoltan Varga <vargaz@freemail.hu> <============
... << RSDN@Home 1.1.3 beta 1 >>
Старый глюк лучше новых двух!
Re[12]: Именование полей, переменных, выбор нотации
От: mihailik Украина  
Дата: 19.02.04 16:53
Оценка:
AVK>>Справедливости ради чаще все таки используется m_ и s_

VD>Ошибаешся. Как раз чаще _. Но встречаются разные стили. m_ больше в С++, _ в Шарпе.


Всё-таки простое подчёркивание выглядит пугающе, по-системному. Я — за "m_"
... << RSDN@Home 1.1.3 beta 1 >>
Re[12]: Именование полей, переменных, выбор нотации
От: mihailik Украина  
Дата: 19.02.04 16:53
Оценка: :)
A>>Каким образом ты различаешь локальные переменные и параметры методов?

AVK>Различать их особого смысла нет


Точно. Локальные переменные сами по себе имеют отличительный префикс "this."
... << RSDN@Home 1.1.3 beta 1 >>
Re[13]: Именование полей, переменных, выбор нотации
От: mikа Stock#
Дата: 19.02.04 19:49
Оценка:
Здравствуйте, mihailik, Вы писали:

A>>>Каким образом ты различаешь локальные переменные и параметры методов?


AVK>>Различать их особого смысла нет


M>Точно. Локальные переменные сами по себе имеют отличительный префикс "this."


this применяется к переменным-членам класса (или просто "поле"). Локальные — это локальные и они не видимы через this. Если ты, конечно, свой язык не пишешь
Re[13]: Именование полей, переменных, выбор нотации
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.02.04 23:00
Оценка: :))
Здравствуйте, mihailik, Вы писали:

M>Всё-таки простое подчёркивание выглядит пугающе, по-системному. Я — за "m_"


Ну, ты это... просто на ночь не программируй.
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: Именование полей, переменных, выбор нотации
От: mihailik Украина  
Дата: 20.02.04 12:08
Оценка:
M>Локальные — это локальные и они не видимы

Ой туплю...
... << RSDN@Home 1.1.3 beta 1 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.