На мой взгляд, «лучший способ» здесь - «не делай этого». Если я натыкаюсь на это в проверяемом коде, я немедленно отмечаю это. Наличие двух переменных, которые различаются только регистром, - недоразумение, которое только и ждет своего часа. Программисту по обслуживанию слишком легко прийти спустя месяцы или годы и нечаянно назначить myThing
вместо MyThing
.
Добавлено позже:
Комментатор попросил меня предложить заменить соглашение об именах в верхнем / нижнем регистре. Для этого мне нужен конкретный пример. Допустим, у вас есть простой Book
класс, у которого есть только одно свойство: Title
:
public class Book
{
public string Title { get; private set; }
}
Теперь вам нужен конструктор. Распространенным соглашением является использование версии свойства в нижнем регистре:
public Book(string title)
{
Title = title;
}
Или, если вы хотите убедиться в отсутствии двусмысленности: this.Title = title
.
Можно утверждать, что в конструкторах это нормально. И могло бы быть, если бы все конструкторы были такими простыми. Но мой опыт показывает, что когда конструктор выходит за рамки нескольких строк, различие между Title
и title
теряется. Проблема усугубляется, когда вы говорите о методах, отличных от конструкторов. В любом случае вам нужно другое соглашение.
Что использовать? Я по-разному использовал и видел используемые сокращения в параметрах: ttl
, например. Или что-то вроде bookTitle
, что более наглядно при использовании Intellisense. На мой взгляд, любой вариант предпочтительнее обычного использования имени, которое отличается только регистром.
person
Jim Mischel
schedule
30.09.2009
this.
- person Sam Harwell   schedule 30.09.2009this
или только в тех случаях, когда есть локальная переменная, которая отличается только регистром? - person devuxer   schedule 30.09.2009