Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Правило написания переменных 
:(
    Опции темы
CInNet
Дата 18.8.2009, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 20.7.2009

Репутация: нет
Всего: нет



Встал вопрос о написании переменных. Как лучше их указывать veriable или _veriable ? И почему?
PM MAIL   Вверх
PashaPash
Дата 18.8.2009, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 9
Всего: 49



CInNet, лучше писать variable, и обращаться к ней this.variable.


--------------------
PM MAIL WWW   Вверх
CInNet
Дата 18.8.2009, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 20.7.2009

Репутация: нет
Всего: нет



А почему? На самый главный вопрос не ответил)
PM MAIL   Вверх
PashaPash
Дата 18.8.2009, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 9
Всего: 49



Потому что так говорит Microsoft StyleCop.
SA1309: fields names must not start with an underscore.


--------------------
PM MAIL WWW   Вверх
CInNet
Дата 18.8.2009, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 20.7.2009

Репутация: нет
Всего: нет



Спасибо Павел smile Теперь я хоть могу поспорить, что не надо писать никаких "_" перед объявлением переменной =)
PM MAIL   Вверх
NightmareZ
Дата 18.8.2009, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 10.8.2006

Репутация: 1
Всего: 13



Цитата(CInNet @  18.8.2009,  18:55 Найти цитируемый пост)
Теперь я хоть могу поспорить, что не надо писать никаких "_" перед объявлением переменной =)


Чем аргументировать будешь?


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
CInNet
Дата 19.8.2009, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 20.7.2009

Репутация: нет
Всего: нет



Цитата
Чем аргументировать будешь?


Потому что так говорит Microsoft StyleCop.
SA1309: fields names must not start with an underscore. 

Это сообщение отредактировал(а) CInNet - 19.8.2009, 10:40
PM MAIL   Вверх
CYBERDREAM
Дата 19.8.2009, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 8
Всего: 28



Интересно из каких соображений они это написали smile 


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
PashaPash
Дата 19.8.2009, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 9
Всего: 49



CYBERDREAM
очень простые соображения - подчеркивание избыточно. StyleCop требует расставлять this. для  instance member-ов. Он же требует называть свойства с заглавных букв. 
Код

this.something = ... // обращение к field
this.Something = ... // обращение к property
this.Something(); // вызов метода

IMHO, вполне однозначно и без _;


--------------------
PM MAIL WWW   Вверх
mr.Anderson
Дата 19.8.2009, 15:37 (ссылка) |  (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



Я предпочитаю немного другую нотацию. И она имхо удобнее, меньше загромождение кода. Маленький примерчик, где разрисованы все аспекты оформления, которые я использую для именования переменных и функций:
Код

public class TestClass
{
    private readonly string _privateField;
    public string PublicField { get; private set; }
    
    public TestClass()
    {
        _privateField = "test";
    }

    private void _PrivateMethod()
    {
        _privateField = "34";
    }

    public void PublicMethod(string val)
    {
        PublicField = val;
    }
}

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


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
PashaPash
Дата 19.8.2009, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 9
Всего: 49



mr.Anderson, whom how. Мне проще поставить StyleCop с дефолтными настроками, и прикрутить его к ccnet, чем следить за стилем вручную. 
У this есть один бонус - студийный интеллисенс показывает после . именно то, перед чем надо this по правилам StyleCop ставить. И есть StyleCop For Resharper, который реформатит код.

Опять же IMHO, подчеркивание вообще для всех приватных вещей как-то сомнительно - лично меня очень сильно плющит от _PrivateMethod smile. При вызове внутри класса не важно приватный или не приватный метод вызывается. Если вдруг меняется область видимости - то подчеркивание убирается, и по коду появляется много левых изменений, что как-то неприятно. Чаще всего (по моему опыту) подчеркиванием выделяют именно поля, чтобы отличить их от свойств - довольно много людей перешло с VB, который не case-sensitive.

Это сообщение отредактировал(а) PashaPash - 19.8.2009, 16:19


--------------------
PM MAIL WWW   Вверх
mihryak
Дата 19.8.2009, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 10
Всего: 36



не пишу ни подчёркивание, ни this, локальных переменных в разумных пределах избегаю, а использование приватных св-в и методов никак не отделяю для себя от использования публичных smile

впрочем, сейчас на проекте приватные поля начинаются с подчёркивания, не сказал бы, что страдаю - главное, чтобы все следовали одному код-стайлу (откровенно хреновые правила сами вымрут со временем)
PM MAIL ICQ   Вверх
Enteropoly
Дата 19.8.2009, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 17.6.2009

Репутация: нет
Всего: нет



Согласен полностью с mr.Anderson 
PM MAIL   Вверх
mr.Anderson
Дата 19.8.2009, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



Цитата
Если вдруг меняется область видимости

То применяется рефакторинг, и "левых" изменений там попросту нет))) Лично мне бывает просто приятно знать, вызываю я внутренний метод или же внешний при работе внутри класса. Возможно, субъективно.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
mihryak
Дата 19.8.2009, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 10
Всего: 36



mr.Anderson, а чем эта приятность вызвана? т.е. в чём для тебя состоит разница между приватными и публичными методами?
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0902 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.