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

Поиск:

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

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


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

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


 




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


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

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