Модераторы: 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   Вверх
mr.Anderson
Дата 20.8.2009, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



mihryak, разницы по сути никакой. Просто мне как-то удобнее знать, какой из методов я сейчас вызываю. Поэтому в конце своего мессага я и написал
Цитата
Субъективно



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

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


Опытный
**


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

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



Цитата(mr.Anderson @  19.8.2009,  19:15 Найти цитируемый пост)
Лично мне бывает просто приятно знать, вызываю я внутренний метод или же внешний 

+1
внешний это педальки газа, тормоза, а внутренний уже работа карбюратора, подсознательно понятней сразу куда лезешь smile 


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


Эксперт
***


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

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



Цитата(mr.Anderson @  19.8.2009,  19:15 Найти цитируемый пост)
То применяется рефакторинг, и "левых" изменений там попросту нет))) 

Под левыми изменениями я имел ввиду изменения в местах вызова - убирание _ (или добавление). Это довольно сильно "шумит" в diff - вроде код не менялся, а строчка в логе svn/ревью системе подсвечена.  Изменение private->public - довольно редкое. private->protected/internal - частое.
Цитата(Heinzz @  20.8.2009,  07:43 Найти цитируемый пост)
+1
внешний это педальки газа, тормоза, а внутренний уже работа карбюратора, подсознательно понятней сразу куда лезешь smile  

Это немного дырявая абстракция. Protected-методы как тогда называть? А Internal?
Опять же, субьективно, вызывающий код (и пишущий его) не должен знать, на педальку он давит, или топливо в цилиндр впрыскивает. Главное чтобы вызываемый метод назывался AddMoreGas.


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


Опытный
**


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

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



Цитата(PashaPash @  20.8.2009,  11:59 Найти цитируемый пост)
Это немного дырявая абстракция. Protected-методы как тогда называть? А Internal?
Опять же, субьективно, вызывающий код (и пишущий его) не должен знать, на педальку он давит, или топливо в цилиндр впрыскивает. Главное чтобы вызываемый метод назывался AddMoreGas. 

ну тогда уж давайте все по Макконеллу smile 

лично я использую "_имя" только для входящих в конструкторах и не пишу поля (в отличае от св-в и методов) с большой буквы. 

+ для создания свойств еще использую приватные переменные "_имясвойства".


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


Эксперт
***


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

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



Цитата(Heinzz @  20.8.2009,  12:47 Найти цитируемый пост)

лично я использую "_имя" только для входящих в конструкторах и не пишу поля (в отличае от св-в и методов) с большой буквы. 

Если использовать префикс this, то в конструкторах отпадает необходимость в _. Тем более что на разницу в имени параметра в конструкторе и соотв. паблик свойства FxCop тоже реагирует.



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


iOS Lead Developer
****


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

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



Я вот одного не пойму, неужели приятно, когда в каком-нибудь приватном методе, работающем активно с полями класса, понатыкано повсюду this'ов? 


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

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


Эксперт
***


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

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



mr.Anderson, да, вполне приятно - читабельность повышается. По крайней мере лично мне приятнее, чем понатыканные в том же количестве подчеркивания. smile


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


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



А вы не думаете, что всё это - всего лишь дело вкуса? Кто-то выбирает стиль по эстетическим соображениям, кто-то пишет помимо шарпа на регистронезависимом бейсике, это тоже откладывает отпечаток на стиль, кто-то пользуется тулзой, у которой свои правила, у кого-то соображения чисто практические. Только вот предмета для спора я тут не вижу.

Да, кстати сам я подчёркивание использую вот по каким соображениям:
1. Это короче чем this.
2. При таком подходе в интеллисенс все private поля находятся в одном месте и список прокручивается к этому месту после введения всего-лишь одного символа.
3. Ну и бейсик, конечно. Не буду же я стиль менять когда на шарпе пишу.

Но относиться к этому как к догме имхо не стоит.

Добавлено через 1 минуту и 29 секунд
С точки зрения эстетики полный код (с this) смотрится выразительнее(имхо), но писатьего дольше smile

Добавлено через 13 минут и 8 секунд
И ещё: this спасает когда у класса мало членов, а взять например форму какую-нибудь, так там иногда приходится несколько символов ещё и после зыса вводить.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
PashaPash
Дата 20.8.2009, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



diadiavova, Дело вкуса - это когда ты один на проекте сидишь. А когда код одновременно пишут хотя бы двое, то сразу появляется необходимость в строгих гайдлайнах. А если человек хотя бы 5, то вероятность что вкус у них совпадет - чуть меньше 0. 

Цитата(diadiavova @  20.8.2009,  13:32 Найти цитируемый пост)

С точки зрения эстетики полный код (с this) смотрится выразительнее(имхо), но писатьего дольше smile  

Можно писать как угодно, но перед коммитом реформатить. Для правил StyleCop есть StyleCop for Resharper, он из любой картошки делает кубик стандартного размера. И fail билда при несоответствии. Первые 2-3 коммита девелоперы ругаются, потом привыкают. Зато код написан однородно, даже проставлены xml comments. И не надо следить за стилем у новичков (или надеяться на их совесть/чувство вкуса).
Можно еще по пунктам пофлеймить ;)
1. Это на самом деле удлиняет имя на один символ. this. - не удлиняет, он просто задает контекст. По аналогии с однострочными if-ами и {}.
2. При подходе "проперти вместо полей" тебе вообще никогда не надо видеть весь список полей. И отладка намного облегчается.
3. Тут могу только согласиться, но про бейсик была оговорка выше. smile


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


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Цитата(PashaPash @  20.8.2009,  14:49 Найти цитируемый пост)
Дело вкуса - это когда ты один на проекте сидишь

Ну поэтому речь только о private полях.
Цитата(PashaPash @  20.8.2009,  14:49 Найти цитируемый пост)
Можно писать как угодно, но перед коммитом реформатить. Для правил StyleCop есть StyleCop for Resharper, он из любой картошки делает кубик стандартного размера. И fail билда при несоответствии. Первые 2-3 коммита девелоперы ругаются, потом привыкают. Зато код написан однородно, даже проставлены xml comments. И не надо следить за стилем у новичков (или надеяться на их совесть/чувство вкуса).

Ну опять-таки ты юзаешь эту тулзу, а другие нет. Если обсуждение ведётся вообще, а не применительно к кокретной тулзе, то это не арумент.
Цитата(PashaPash @  20.8.2009,  14:49 Найти цитируемый пост)
Это на самом деле удлиняет имя на один символ. this. - не удлиняет, он просто задает контекст. По аналогии с однострочными if-ами и {}.

О того, что имя длиннее ты ничего не теряешь, вот вводить больше символов руками - напрягает. Я кстати иногда вообще использую временные имена, а когда код написан меняю на более длинные и понятные.
Цитата(PashaPash @  20.8.2009,  14:49 Найти цитируемый пост)
При подходе "проперти вместо полей" тебе вообще никогда не надо видеть весь список полей. И отладка намного облегчается.

Поле объявить короче{get; set;}(про бейсик вообще молчу smile ). 

И кстати: сейчас в рефлектор заглянул, так там довольно много таких имён. Так что...5 человек очевидно найдётся и кроме меня smile 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
PashaPash
Дата 20.8.2009, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(diadiavova @  20.8.2009,  14:05 Найти цитируемый пост)

Ну поэтому речь только о private полях.

У нас нет девелоперов ответственных за конкретный класс smile
Цитата(diadiavova @  20.8.2009,  14:05 Найти цитируемый пост)

Ну опять-таки ты юзаешь эту тулзу, а другие нет. Если обсуждение ведётся вообще, а не применительно к кокретной тулзе, то это не арумент.

Я просто рассматриваю проблему немного с другой точки зрения - удобства утверждения и поддержания общего стиля для всех проектов, а не удобства конкретного кодера. Конкретный кодер может привыкнуть к новому стилю. А проект к куче разных стилей не прывкнет :(
Цитата(diadiavova @  20.8.2009,  14:05 Найти цитируемый пост)
О того, что имя длиннее ты ничего не теряешь, вот вводить больше символов руками - напрягает. Я кстати иногда вообще использую временные имена, а когда код написан меняю на более длинные и понятные.

я не ввожу руками, я давлю одну мегакнопку "сделать зашибись" smile. Временные имена ты ведь тоже не вручную потом правишь.
Цитата(diadiavova @  20.8.2009,  14:05 Найти цитируемый пост)

Поле объявить короче{get; set;}(про бейсик вообще молчу smile ). 

prop Tab Tab. ;)
Цитата(diadiavova @  20.8.2009,  14:05 Найти цитируемый пост)

И кстати: сейчас в рефлектор заглянул, так там довольно много таких имён. Так что...5 человек очевидно найдётся и кроме меня smile 

На странице StyleСop довольно подробно описано про имена в CLR и не в CLR. Если коротко - то StyleСop - это попытка выработать общий стиль в MS, но CLR Team пока не поддалась smile

Это сообщение отредактировал(а) PashaPash - 20.8.2009, 14:22


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


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Цитата(PashaPash @  20.8.2009,  15:21 Найти цитируемый пост)
Я просто рассматриваю проблему немного с другой точки зрения - удобства утверждения и поддержания общего стиля для всех проектов, а не удобства конкретного кодера. Конкретный кодер может привыкнуть к новому стилю. А проект к куче разных стилей не прывкнет :(
А что такого в этой чёрточке(если не считать стайлкопа). Чем она и кому так мешает? Я никак в толк не возьму какой от неё вред?
Цитата(PashaPash @  20.8.2009,  15:21 Найти цитируемый пост)
я не ввожу руками, я давлю одну мегакнопку "сделать зашибись"

Ну видимо мне об этой кнопке ничего неизвестно. А у тебя случайно в запасе нет такой кнопки, чтобы нажал и она всё за тебя написала? smile 
Цитата(PashaPash @  20.8.2009,  15:21 Найти цитируемый пост)
Временные имена ты ведь тоже не вручную потом правишь.

Ну если бы надо было вручную, то я просто такой подход не использовал бы. Ну я ещё раз повторю, что твои предпочтения сводятся к стайлкопу. Вообще-то это нормально для тех кто им пользуется, но это далеко не все.
Цитата(PashaPash @  20.8.2009,  15:21 Найти цитируемый пост)
prop Tab Tab. ;)

Не люблю я сниппеты. Поначалу, когда появились я был в восторге, но потом немного поигрался и не пользуюсь(полагаю не стоит разводить дискуссию ещё и по этому поводу). Я делаю по-другому:
написал макрос и теперь объявляю переменную, ставлю на неё каретку, запускаю макрос и он имплементит свойство(убирая хвостик из имени поля ессно...или добавляя если его там нет)

Цитата(PashaPash @  20.8.2009,  15:21 Найти цитируемый пост)
но CLR Team пока не поддалась 

Воооооооот. smile 



--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
PashaPash
Дата 20.8.2009, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(diadiavova @  20.8.2009,  14:40 Найти цитируемый пост)
А что такого в этой чёрточке(если не считать стайлкопа). Чем она и кому так мешает? Я никак в толк не возьму какой от неё вред?

Вред такой же, как и от других префиксов, не несущих смысловой нагрузки - засорение кода. А какая от нее польза?
Цитата(diadiavova @  20.8.2009,  14:40 Найти цитируемый пост)
Ну видимо мне об этой кнопке ничего неизвестно. А у тебя случайно в запасе нет такой кнопки, чтобы нажал и она всё за тебя написала?  

о, а это идея... smile Кнопка в решарпере - Reformat Code. Решарпер у меня выжил только ради нее ;)
В студии есть что-то похожее, но не настолько глобальное, где-то в Edit.

Цитата(diadiavova @  20.8.2009,  14:40 Найти цитируемый пост)
Ну если бы надо было вручную, то я просто такой подход не использовал бы. Ну я ещё раз повторю, что твои предпочтения сводятся к стайлкопу. Вообще-то это нормально для тех кто им пользуется, но это далеко не все.

Если оба подхода - не вручную, то аргумент проперти - длиннее отпадает, так? ;)

Мои предпочтения сводятся к тому, что:
1. Легко встраивается в студию
2. Прикручивается к ccnet/msbuild
3. Поддерживает автоматический реформат кода
4. Выдает подробный хелп по каждому нарушению, а не просто "поставь тут пробел!"
5. По возможности написано Microsoft.


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


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Цитата(PashaPash @  20.8.2009,  17:40 Найти цитируемый пост)
Вред такой же, как и от других префиксов, не несущих смысловой нагрузки - засорение кода. А какая от нее польза?

Ну почему "не несущих"? Я ведь написал, что смысл в том, чтобы выделить группу в интеллисенс. Тут вся фишка в том, что этот символ уникален в своём роде. Стандартные идентификаторы как правило начинаются с алфавитных символов, поэтому его удобно использовать для создания групп, которые не будут мельтишить в других классах. Я не всё помечаю этим символом, но когда начал пользоваться этим приёмомпросто заметил, что это удобно и без дополнительных средств помогает вводить меньше кода руками. 

Цитата(PashaPash @  20.8.2009,  17:40 Найти цитируемый пост)
В студии есть что-то похожее, но не настолько глобальное, где-то в Edit.

Если я правильно понял назначение кнопки, то Edit.FormatDocument. Форматирует в соответствии с настройками студии. Я обычно эту команду вызываю из макросов после вставки, сгенерированного кода.
Ну вот пример. Создаю поле
Код

        int _myProperty;

Сгенерированный код свойства получается такой
Код

        public virtual int myProperty {
    get {
        return _myProperty;
    }
    set {
        _myProperty = value;
    }

При этом студия настроена на другой формат. Если после вставки кода вызывается команда форматирования то получается так
Код

        public virtual int myProperty
        {
            get
            {
                return _myProperty;
            }
            set
            {
                _myProperty = value;
            }
        }

Вообще в студии очень много всего и ради одной фичи решарпер держать - это слишком. Проще макрос написать.
Цитата(PashaPash @  20.8.2009,  17:40 Найти цитируемый пост)
Если оба подхода - не вручную, то аргумент проперти - длиннее отпадает, так?

Ну про сниппеты я уже сказал. Меня ими пользоваться можешь даже не агитировать smile 
Цитата(PashaPash @  20.8.2009,  17:40 Найти цитируемый пост)
4. Выдает подробный хелп по каждому нарушению, а не просто "поставь тут пробел!"

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


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
mihryak
Дата 21.8.2009, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(diadiavova @  20.8.2009,  23:28 Найти цитируемый пост)
Если бы правила можно было определять самому, то это совсем другая песня, а ставить какую-то хандыбу, чтобы она мне указывала "то - не так, да это - не эдак" как-то не хочется. 

есть рекомендуемый code style от собственно создателей, полагаю, что в подавляющем большинстве случаев стоит его придерживаться - это даст по меньшей мере надежду, что код проекта будет понят и не вызовет отторжения у большинства разработчиков
тот же StyleCop - детище Microsoft
по-моему, весомей аргументации и не надо, а басиковые, плюсовые и другие привычки стоит оставить в басике, плюсах и других языках соответственно

вот код стайл, который практически в том же варианте (различия не касаются конвенций) был использован на прошлом проекте, устраивает полностью
PM MAIL ICQ   Вверх
diadiavova
Дата 21.8.2009, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



mihryak, это всё было бы уместным замечанием будь это общепринятыми правилами. И кстати: из самого начала документа
Цитата

Unlike the Design Guidelines document, you should treat this document as a set of suggested guidelines.  These generally do not effect the customer view so they are not required.

Цитата(mihryak @  21.8.2009,  01:00 Найти цитируемый пост)
тот же StyleCop - детище Microsoft

Дотнет - тоже его детище(обсуждалось уже).

Цитата(mihryak @  21.8.2009,  01:00 Найти цитируемый пост)
полагаю, что в подавляющем большинстве случаев стоит его придерживаться - это даст по меньшей мере надежду, что код проекта будет понят и не вызовет отторжения у большинства разработчиков

Не уверен, что большинство думает так же. Часть разработчиков пользуется одним стилем, часть - другим, большинству "по барабану" как делают другие. Что в этой чёрточке может вызвать отторжение?
Стайлкоп что ли ругаться будет? Так я им не пользуюсь.
Цитата(mihryak @  21.8.2009,  01:00 Найти цитируемый пост)
а басиковые, плюсовые и другие привычки стоит оставить в басике, плюсах и других языках соответственно

Использование нескольких языков и так имеет свои неудобства. Усугублять их ещё и разными стилями мне ни к чему. Тот же Брэд Абрамс(кстати кто это smile smile) из твоей ссылки для васика те же рекомендации даёт.
Рекомендации по поводу формата хороши(даже не спорю), но вот только в студии почему-то можно настроить разный формат и по-умолчанию он вроде даже другой(не помню точно перенастраивал или нет), по крайней мере для JScript'а точно другой. Шарповский кодпровайдер тоже почему-то генерит код с другой расстановкой скобок. Пример, который я приводил как автореализацию свойства сгенерирован стандартным дотнетовским провайдером. Поэтому считать это официальным гайдлайном через чур смело. Я уже не говорю о том, что даже официальный гайдлайн - не догма. А то, что это тебя устраивает, так я об этом сразу сказал:"дело вкуса".


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Любитель
Дата 21.8.2009, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

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



Ну вы и развели тут спор.. smile 

Да ещё и в разделе "для новичков". Всех новичков распугаете smile 


--------------------
PM MAIL ICQ Skype   Вверх
diadiavova
Дата 21.8.2009, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Цитата(Любитель @  21.8.2009,  01:37 Найти цитируемый пост)
Ну вы и развели тут спор

 smile 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Exai1e
Дата 22.8.2009, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



я использую _ в переменных которые объявляются внутри функции, к примеру, как нить так:

Код

        private List<SomeType> someMainList = new List<SomeType>();

        public List<string> GetSomeCaptionList()
        {
            List<string> _returnValue = new List<string>();
            for (int someIndex= 0; someIndex< someMainList.Count; someIndex++)
                _returnValue.Add(someMainList[someIndex].someCaption);
            return _returnValue;
        }


как то так =)


--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
diadiavova
Дата 22.8.2009, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Цитата(Exai1e @  22.8.2009,  14:52 Найти цитируемый пост)
я использую _ в переменных которые объявляются внутри функции

А смысл? Внутри метода можно короткие имена использовать. Я, например, вместо returnValue использую просто rv, и ничего...не путаюсь smile 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
PashaPash
Дата 23.8.2009, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(diadiavova @  22.8.2009,  13:59 Найти цитируемый пост)
А смысл? Внутри метода можно короткие имена использовать.

Смысл и аргументы такие же, как и для твоего _ - допечатка сразу показывает список локальных переменных, и т.д.
Цитата(diadiavova @  20.8.2009,  22:28 Найти цитируемый пост)
Тут есть нюанс - нарушению правил, определённых им же. Если бы правила можно было определять самому, то это совсем другая песня, а ставить какую-то хандыбу, чтобы она мне указывала "то - не так, да это - не эдак" как-то не хочется.

Вообще-то можно определять свои правила, и наверняка в нете есть куча готовых FieldNameShouldStartWithUnderscore. Просто меня вполне устраивает стандартный набор.


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


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Цитата(PashaPash @  23.8.2009,  13:09 Найти цитируемый пост)
Смысл и аргументы такие же, как и для твоего _ - допечатка сразу показывает список локальных переменных, и т.д.

Ну если писать методы на несколько экранов, то возможно да и то...область действия локальной переменной ограничивается блоком и только после того как она объявлена. Здесь запутаться трудно. Хотя до абсурда при желании можно довести всё что угодно. smile Я сам стал использовать подчёркивание относительно недавно и мне просто понравился результат. Я не все поля так обзываю, а только те, которые мне нужно видеть в одной куче и нахожу этот способ очень удобным.
Цитата(PashaPash @  23.8.2009,  13:09 Найти цитируемый пост)
Вообще-то можно определять свои правила, и наверняка в нете есть куча готовых FieldNameShouldStartWithUnderscore. Просто меня вполне устраивает стандартный набор.

Ну то есть это как раз то о чём я и говорил: твои правила хороши если использовать стайлкоп, а не в общем случае. А с этим как бы никто и не спорил smile 

И кстати: если взять например те же автоматически реализуемые свойства, то не знаю как это компилится в шарпе, но в бейсике следующей версии для хранения значения таких свойств создаётся переменная именно по таким правилам, о которых я написал. Это что касается гайдлайнов. Я, конечно понимаю, что это бейсик, но в приводившейся в этом топике ссылке для бейсика те же правила(как это не смешно)

http://msdn.microsoft.com/en-us/library/dd...8VS.100%29.aspx



Это сообщение отредактировал(а) diadiavova - 23.8.2009, 12:36


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Exai1e
Дата 24.8.2009, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(diadiavova @  22.8.2009,  14:59 Найти цитируемый пост)
А смысл? Внутри метода можно короткие имена использовать

Смысл в том, что сразу заметны "внутренние переменные", мне так удобнее
Ну я например не люблю которые, бессмысленные имена переменных.


--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
Любитель
Дата 24.8.2009, 03:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

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



Цитата(diadiavova @  23.8.2009,  12:34 Найти цитируемый пост)
И кстати: если взять например те же автоматически реализуемые свойства, то не знаю как это компилится в шарпе

Как-то так:
Код

[CompilerGenerated]
private string <Name>k__BackingField;



--------------------
PM MAIL ICQ Skype   Вверх
diadiavova
Дата 24.8.2009, 03:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Цитата(Любитель @  24.8.2009,  04:35 Найти цитируемый пост)
Как-то так:

Ну рефлектор так и показывает, только что это значит на самом деле - фиг знает. smile 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Любитель
Дата 24.8.2009, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

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



Всмысле? В сборке такие имена и есть. Ты спросил во что преобразуются в шарпе автопроперти - я ответил. Или тебя смущают знаки меньше/больше? Так можно имя и пустой строкой сделать, и цифрой, и пробелом (подобными извращениями обфускаторы очень любят заниматься) - на уровне метаданных сборки (простейший способ поиграться - Mono.Cecil). Для шарп-кода это было бы невалидно, конечно.

Это сообщение отредактировал(а) Любитель - 24.8.2009, 10:26


--------------------
PM MAIL ICQ Skype   Вверх
diadiavova
Дата 24.8.2009, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Любитель, ну просто в васике можно было так же сделать, а они вместо этого намутили хрень.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
PashaPash
Дата 25.8.2009, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



diadiavova, оживим тему:
Цитата(diadiavova @  23.8.2009,  12:34 Найти цитируемый пост)
http://msdn.microsoft.com/en-us/library/dd...8VS.100%29.aspx

Аналог для C#: http://msdn.microsoft.com/en-us/library/w8...04(VS.100).aspx - без подчеркиваний.

Цитата(diadiavova @  23.8.2009,  12:34 Найти цитируемый пост)
Ну если писать методы на несколько экранов, то возможно да и то...область действия локальной переменной ограничивается блоком и только после того как она объявлена. Здесь запутаться трудно. Хотя до абсурда при желании можно довести всё что угодно.  Я сам стал использовать подчёркивание относительно недавно и мне просто понравился результат. Я не все поля так обзываю, а только те, которые мне нужно видеть в одной куче и нахожу этот способ очень удобным.

Если использовать поля (а не свойства по всему классу, на нескольно экранов ;), то возможно что _ и нужно. А вообще область применения поля ограничивается get/set соотв. свойства. Цепочка "я не использую свойства <- они длинее на 10 символов <- я не пользуюсь сниппетами <- просто не пользуюсь и все". "Просто захотелось", и теперь везеде в коде надо вписывать на один символ больше.

Цитата(diadiavova @  23.8.2009,  12:34 Найти цитируемый пост)
 взять например те же автоматически реализуемые свойства

Автореализуемые свойства - это проблема компилятора, он не заморачивается на читабельности. Стиль нужен для кода который пишут люди и сопровождают люди. Мегаклассы для анонимных делегатов и типов - не повод писать вообще как попало и называть методы c1____aaa__111. smile

Это сообщение отредактировал(а) PashaPash - 25.8.2009, 17:58


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


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Цитата(PashaPash @  25.8.2009,  18:57 Найти цитируемый пост)
оживим тему

Зачем? smile
Цитата(PashaPash @  25.8.2009,  18:57 Найти цитируемый пост)
Аналог для C#

Цитата(PashaPash @  25.8.2009,  18:57 Найти цитируемый пост)
Автореализуемые свойства - это проблема компилятора

Это были просто иллюстрации того, что приём используется.
Цитата(PashaPash @  25.8.2009,  18:57 Найти цитируемый пост)
Если использовать поля (а не свойства по всему классу, на нескольно экранов ;), то возможно что _ и нужно.

Это ты о чём? Там речь вроде как шла о применении приёма внутри методов. Метод на несколько экранов - ни есть хорошо. Или ты не согласен?
Цитата(PashaPash @  25.8.2009,  18:57 Найти цитируемый пост)
А вообще область применения поля ограничивается get/set соотв.

Да это как сказать. Иногда в сеттере выполняются действия, которых надо избежать при внутреннем обращении.
Цитата(PashaPash @  25.8.2009,  18:57 Найти цитируемый пост)
Цепочка "я не использую свойства <- они длинее на 10 символов <- я не пользуюсь сниппетами <- просто не пользуюсь и все". "Просто захотелось", и теперь везеде в коде надо вписывать на один символ больше.

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


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
PashaPash
Дата 25.8.2009, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(diadiavova @  25.8.2009,  19:01 Найти цитируемый пост)
Зачем?

да скучно...
Цитата(diadiavova @  25.8.2009,  19:01 Найти цитируемый пост)
Это были просто иллюстрации того, что приём используется.

что прием используется в VB и с сгенеренном компилятором коде. Ни то ни другое отношения к стилю человеческого когда на C# не имеют.
Цитата(diadiavova @  25.8.2009,  19:01 Найти цитируемый пост)
Это ты о чём? Там речь вроде как шла о применении приёма внутри методов. Метод на несколько экранов - ни есть хорошо. Или ты не согласен?

Я пытался по аналогии для полей описать ситуацию.
Цитата(diadiavova @  25.8.2009,  19:01 Найти цитируемый пост)
Да это как сказать. Иногда в сеттере выполняются действия, которых надо избежать при внутреннем обращении.

Тогда иногда можно называть поля с _ smile.  
Цитата(diadiavova @  25.8.2009,  19:01 Найти цитируемый пост)
Сниппетами не пользуюсь потому, что не нахожу их удобными. В целом мой подход позволяет меньше вводить руками.

"Меньше вводить" увеличивается на 1 при каждом использовании, а их будет минимум 2. Ведь ты не экономишь символы, используюя public-поля вместо свойств. Почему тогда экономишь на private, потенциально добавляя проблем следующему разработчику? Проперти удобнее полей по ряду причин. Хотя бы просто из-за возможности поставить breakpoint. Ситуация "где-то в классе на 9000 строк меняется значение поля на X, и надо как-то найти где и в какой момент" не слишком редкая. Если подход короче в написании, но сложнее в поддержке - это плохой подход smile


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


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Цитата(PashaPash @  25.8.2009,  20:41 Найти цитируемый пост)
да скучно...

А почему ты никогда во флейме не появляешься? Там весело.
Цитата(PashaPash @  25.8.2009,  20:41 Найти цитируемый пост)
что прием используется в VB и с сгенеренном компилятором коде. Ни то ни другое отношения к стилю человеческого когда на C# не имеют.

О человеческих стилях я сказал уже.
Цитата(PashaPash @  25.8.2009,  20:41 Найти цитируемый пост)
Я пытался по аналогии для полей описать ситуацию.

Не понял...ну да ладно.
Цитата(PashaPash @  25.8.2009,  20:41 Найти цитируемый пост)
Тогда иногда можно называть поля с _

А я так и делаю. Когда удобно - называю. У меня не все поля такие.

Цитата(PashaPash @  25.8.2009,  20:41 Найти цитируемый пост)
"Меньше вводить" увеличивается на 1 при каждом использовании, а их будет минимум 2.

При использовании я практически только его и ввожу, потом появляется интеллисенс. Сопсно ради этого всё и делается.
Цитата(PashaPash @  25.8.2009,  20:41 Найти цитируемый пост)
Ведь ты не экономишь символы, используюя public-поля вместо свойств.

Ну я ведь уже упоминал о волшебном макросе smile 
Цитата(PashaPash @  25.8.2009,  20:41 Найти цитируемый пост)
Почему тогда экономишь на private, потенциально добавляя проблем следующему разработчику?

О каких проблемах речь?
Цитата(PashaPash @  25.8.2009,  20:41 Найти цитируемый пост)
Проперти удобнее полей по ряду причин.

Внешние не только удобнее но и безопаснее, на счёт внутренних я бы поспорил.
Цитата(PashaPash @  25.8.2009,  20:41 Найти цитируемый пост)
Ситуация "где-то в классе на 9000 строк меняется значение поля на X, и надо как-то найти где и в какой момент" не слишком редкая. Если подход короче в написании, но сложнее в поддержке - это плохой подход

Внутри класса при необходимости это легко изменить...и не обязательно руками.



--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
PashaPash
Дата 25.8.2009, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(diadiavova @  25.8.2009,  20:03 Найти цитируемый пост)
А почему ты никогда во флейме не появляешься? Там весело.

Я делаю флейм вокруг себя ;)
Цитата(diadiavova @  25.8.2009,  20:03 Найти цитируемый пост)
При использовании я практически только его и ввожу, потом появляется интеллисенс. Сопсно ради этого всё и делается.

А интеллисенс нужен чтобы обратиться именно к полю, а не свойству. Не слишком частая ситуация, чтобы вводить ради нее стиль с _. Особенно с учетом сниппетов волшебного макроса.
Цитата(diadiavova @  25.8.2009,  20:03 Найти цитируемый пост)
О каких проблемах речь?

О проблемах "он не получит все плюшки свойств".
Цитата(diadiavova @  25.8.2009,  20:03 Найти цитируемый пост)
Внешние не только удобнее но и безопаснее, на счёт внутренних я бы поспорил.

Цитата(diadiavova @  25.8.2009,  20:03 Найти цитируемый пост)
Внутри класса при необходимости это легко изменить...и не обязательно руками.

Легко, если ты дебагаешь локальное приложение на локальной машине, и вообще можешь менять исходники. И даже в этом случае надо пересобрать/перезапустить/повторить (а пока компилируется/стартует - полазить по нету и по форумам). Впрочем, у каждого свои критерии удобности и соотношенеи свой код в редакторе/чужой код в дебаге. У меня что-то в последнее время 2-е перевешивает :(


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


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Цитата(PashaPash @  25.8.2009,  21:21 Найти цитируемый пост)
А интеллисенс нужен чтобы обратиться именно к полю, а не свойству.

К прайвит члену, к которому нужно обращаться неоднократно. 
Цитата(PashaPash @  25.8.2009,  21:21 Найти цитируемый пост)
Не слишком частая ситуация, чтобы вводить ради нее стиль с _

Да вообще-то частая
Цитата(PashaPash @  25.8.2009,  21:21 Найти цитируемый пост)
Особенно с учетом сниппетов волшебного макроса.

Ещё раз повторю, что я избегаю ситуаций с именами, отличающимися только регистром. Не смотря на то, что в шарпе это можно - иногда боком вылазит. Ошибку связанную с регистром легко не заметить. Поэтому именовать поля, хранящие значения свойств я всё-таки предпочитаю в любом случае по-разному.
Цитата(PashaPash @  25.8.2009,  21:21 Найти цитируемый пост)
О проблемах "он не получит все плюшки свойств".

Давай всё-таки определимся о чём мы говорим, об именовании или о об использовании свойств вместо полей во всех областях видимости. Это разные темы. Я уже несколько раз пытался выяснить какие проблемы у других разработчиков могут вызвать эти "хвостики", но ответа так и не получил. Видимо это всё-таки просто вопрос привычки и не более.
Цитата(PashaPash @  25.8.2009,  21:21 Найти цитируемый пост)
Впрочем, у каждого свои критерии удобности и соотношенеи свой код в редакторе/чужой код в дебаге. У меня что-то в последнее время 2-е перевешивает

Ну я здесь опять-таки не настаиваю на определённой модели, когда это надо, то можно и свойства использовать, но иногда это просто лишнее. Если это вспомогательные поля, для промежуточных данных, то какой если это будут свойства? А объявить их можно кучу за раз, со свойствами же такое не прокатит.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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