Лучшая практика для C# Автореализованное Свойство и локальная переменная, которые отличаются только случаем?

Существует максимум 5 параллельных соединений для SQL Express. Если у Вас будет больше чем 5 выполнения параллельных соединений, то отбросит сильно. Alos, необходимо полагать, что SQL Agent не включен поэтому, если Вы хотите запланировать резервные копии или задачи обслуживания, необходимо использовать планировщик окон. Другой, что это, это - идеальное решение для маленьких баз данных.

6
задан devuxer 30 September 2009 в 18:16
поделиться

7 ответов

Использование « this. » является избыточным в любом классе. Задача разработчика - установить стандарт для его использования.

Плюсы использования " this. " заключаются в том, что некоторым разработчикам легче связать его в уме с экземпляром класса, когда они читают код и, как вы упомянули, делают его более понятным при работе с элементами с одинаковыми названиями.

Минусы в том, что некоторые люди рассматривают его как загромождение вашего файла кода, и если вы используете такие инструменты, как ReSharper, они помечают его как избыточный код по умолчанию.

12
ответ дан 8 December 2019 в 05:56
поделиться

Как сказал womp. "this" является избыточным, но упрощает чтение кода. Или, точнее, труднее ошибиться.

5
ответ дан 8 December 2019 в 05:56
поделиться

C # определенно чувствителен к регистру, поэтому нет никакого риска при использовании ...

MyProperty = myProperty;

Тогда я бы посмотрел на другие передовые методы, например, написание наименьшего количества кода, необходимого для достижения вашей цели ( при самодокументировании). По правде говоря, это не обязательно, минималисты могут сказать, что это не нужно.

2
ответ дан 8 December 2019 в 05:56
поделиться

Вот как я в настоящее время инициализирую свойства, используя ваш пример (как реализованные автоматически, так и не реализованные)

        public class MyClass
    {
        public string MyProperty { get; set; }

        public string AnotherProperty
        {
            get { return _anotherProperty; }
            set { _anotherProperty = value; }
        }
        private string _anotherProperty;

        public MyClass(string myProperty, string anotherProperty)
        {
            MyProperty = myProperty; // auto-implemented property initialization
            _anotherProperty = anotherProperty; //property with member variable initialization                
        }
    }

Использование слова «this» является для меня превыше спецификации. Я знаю, что это местная собственность, потому что она капитализирована. Все свойства должны быть заглавными. Я знаю, что переменная _anotherProperty имеет область действия класса из-за подчеркивания. Раньше я опускал подчеркивание в переменных уровня класса. Мне легче читать код, когда есть подчеркивание, потому что я сразу знаю область действия, не наводя курсор мыши на переменную, чтобы увидеть объявление во всплывающей подсказке от VS. Кроме того, я могу использовать одно и то же имя для локальных переменных, просто опуская нижнее подчеркивание. Это делает ваши инициализации чистыми. Еще одно преимущество подчеркивания заключается в том, что вы можете ввести подчеркивание и нажать ctrl + пробел, и все ваши переменные в области класса будут сгруппированы.

2
ответ дан 8 December 2019 в 05:56
поделиться

На моем рабочем месте стандарты кодирования диктуют, что свойства должны быть записаны как LikeThis, а локальные переменные должны быть записаны какThis. Поскольку C # чувствителен к регистру, это хороший инструмент для различения переменных. Однако, если вы обнаружите, что у свойства и локальной переменной одно и то же имя, использование ключевого слова this определенно устранит неоднозначность использования.

1
ответ дан 8 December 2019 в 05:56
поделиться

Оба варианта зависят только от случая .... Нет никакой разницы между ними.

0
ответ дан 8 December 2019 в 05:56
поделиться

На мой взгляд, «лучший способ» здесь - «не делай этого». Если я сталкиваюсь с этим в проверяемом коде, я немедленно отмечаю это. Наличие двух переменных, которые различаются только регистром, - недоразумение, которое только и ждет. Программисту по обслуживанию слишком легко прийти спустя месяцы или годы и непреднамеренно внести поправку в myThing вместо MyThing .

Добавлено позже:

Комментатор спросил за мое предложение заменить соглашение об именах в верхнем / нижнем регистре. Для этого мне нужен конкретный пример. Допустим, у вас есть простой класс Book , у которого есть только одно свойство: Title :

public class Book
{
    public string Title { get; private set; }
}

Теперь вам нужен конструктор. Распространенным соглашением является использование версии свойства в нижнем регистре:

public Book(string title)
{
    Title = title;
}

Или, если вы хотите убедиться в этом, ' s нет двусмысленности: this.Title = title .

Можно привести аргумент, что это нормально в конструкторах. И могло бы быть, если бы все конструкторы были такими простыми. Но мой опыт показывает, что когда конструктор выходит за рамки нескольких строк, различие между Title и title теряется. Проблема усугубляется, когда вы говорите о методах, отличных от конструкторов. В любом случае, вам нужно другое соглашение.

Что использовать? Я по-разному использовал и видел используемые сокращения в параметрах: ttl , например. Или что-то вроде bookTitle , которое более информативно при использовании Intellisense. На мой взгляд, любой вариант предпочтительнее обычного использования имени, которое отличается только регистром.

Можно утверждать, что это нормально в конструкторах. И могло бы быть, если бы все конструкторы были такими простыми. Но мой опыт показывает, что когда конструктор выходит за рамки нескольких строк, различие между Title и title теряется. Проблема усугубляется, когда вы говорите о методах, отличных от конструкторов. В любом случае, вам нужно другое соглашение.

Что использовать? Я по-разному использовал и видел используемые сокращения в параметрах: ttl , например. Или что-то вроде bookTitle , которое более информативно при использовании Intellisense. На мой взгляд, любой из них предпочтительнее, чем условное обозначение, которое отличается только регистром.

Можно утверждать, что это нормально в конструкторах. И могло бы быть, если бы все конструкторы были такими простыми. Но мой опыт показывает, что когда конструктор выходит за рамки нескольких строк, различие между Title и title теряется. Проблема усугубляется, когда вы говорите о методах, отличных от конструкторов. В любом случае, вам нужно другое соглашение.

Что использовать? Я по-разному использовал и видел используемые сокращения в параметрах: ttl , например. Или что-то вроде bookTitle , которое более информативно при использовании Intellisense. На мой взгляд, любой вариант предпочтительнее обычного использования имени, которое отличается только регистром.

если бы все конструкторы были такими простыми. Но мой опыт показывает, что когда конструктор выходит за рамки нескольких строк, различие между Title и title теряется. Проблема усугубляется, когда вы говорите о методах, отличных от конструкторов. В любом случае, вам нужно другое соглашение.

Что использовать? Я по-разному использовал и видел используемые сокращения в параметрах: ttl , например. Или что-то вроде bookTitle , которое более информативно при использовании Intellisense. На мой взгляд, любой вариант предпочтительнее обычного использования имени, которое отличается только регистром.

если бы все конструкторы были такими простыми. Но мой опыт показывает, что когда конструктор выходит за рамки нескольких строк, различие между Title и title теряется. Проблема усугубляется, когда вы говорите о методах, отличных от конструкторов. В любом случае, вам нужно другое соглашение.

Что использовать? Я по-разному использовал и видел используемые сокращения в параметрах: ttl , например. Или что-то вроде bookTitle , которое более информативно при использовании Intellisense. На мой взгляд, любой из них предпочтительнее, чем условное обозначение, которое отличается только регистром.

Проблема усугубляется, когда вы говорите о методах, отличных от конструкторов. В любом случае, вам нужно другое соглашение.

Что использовать? Я по-разному использовал и видел используемые сокращения в параметрах: ttl , например. Или что-то вроде bookTitle , которое более информативно при использовании Intellisense. На мой взгляд, любой вариант предпочтительнее обычного использования имени, которое отличается только регистром.

Проблема усугубляется, когда вы говорите о методах, отличных от конструкторов. В любом случае, вам нужно другое соглашение.

Что использовать? Я по-разному использовал и видел используемые сокращения в параметрах: ttl , например. Или что-то вроде bookTitle , которое более информативно при использовании Intellisense. На мой взгляд, любой из них предпочтительнее, чем условное обозначение, которое отличается только регистром.

0
ответ дан 8 December 2019 в 05:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: