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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Правило написания переменных 
:(
    Опции темы
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   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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