Я вижу подобные вопросы в отношении имен параметров, которые соответствуют свойствам класса, но я не могу найти ничего относительно использования имени параметра, совпадающего с именем типа параметра, за исключением случая в C #. Кажется, это не нарушение, которое я могу найти, но считается ли это плохой практикой? Например, у меня есть следующий метод
public Range PadRange(Range range) {}
Этот метод берет диапазон и возвращает новый диапазон, к которому применен некоторый отступ. Итак, учитывая общий контекст, я не могу придумать более описательное имя для параметра. Однако мне напомнили один совет, который я прочитал, читая Code Complete о «психологической дистанции». Это говорит
Психологическая дистанция может быть определена как легкость, с которой можно различать два элемента ... Во время отладки будьте готовы к проблемам, вызванным недостаточным психологическим расстоянием между одинаковыми именами переменных и между похожими именами процедур. При создании кода выбирайте имена с большими различиями, чтобы избежать этой проблемы.
В сигнатуре моего метода происходит много «Range», поэтому мне кажется, что это может быть проблемой в отношении этой психологической дистанции. Теперь я вижу, что многие разработчики делают следующее
public Range PadRange(Range myRange) {}
Я лично испытываю сильное отвращение к этой конвенции. Добавление префикса «my» к именам переменных не дает дополнительного контекста.
Я также вижу следующее
public Range PadRange(Range rangeToPad) {}
Мне нравится это лучше, чем «мой» префикс, но все равно мне все равно. Мне это кажется слишком многословным и неуклюже читается как имя переменной. Для меня понятно, что диапазон будет дополнен из-за имени метода.
Так что со всем этим изложено, моя интуиция должна пойти с первой подписью. Для меня это чисто. Не нужно форсировать контекст, когда он не нужен. Но я делаю себе или будущим разработчикам медвежью услугу с этим соглашением? Я нарушаю лучшую практику?
Range r
(по крайней мере, для короткого тела метода) и Range toPad
.
Range range
хорошо.