Я часто вижу проекты (в Java-проектах и командах, использующих Eclipse), с которыми префиксные параметры функции p
.
Например
public void filter (Result pResult) ...
Лично я не вижу в этом никакой пользы, но хотел бы знать, в чем причина. Лучшее объяснение, которое я слышал, состоит в том, что оно состоит в том, чтобы различать имена идентичных именованных полей. У меня есть проблемы с этим объяснением, но я могу понять суть.
java
coding-style
naming
eclipse
auto-completion
oschrenk
источник
источник
struct
/union
с одним элементом.Как вы подозреваете, это делается для того, чтобы избежать конфликтов имен между именем параметра и именами членов или локальных переменных. Переменные-члены иногда получают префикс по той же причине (например,
m_result
). Лично я предпочитаю просто использоватьthis
префикс для переменных-членов, если есть конфликт имен. Он встроен в язык, и все уже знают, что это значит.источник
Я использую префикс параметра только тогда, когда параметр предназначен для назначения переменной-члену, такой как конструктор или установщик.
Я считаю, что использование другого имени переменной более ослепительно очевидно, чем использование префикса «this».
В других ситуациях я избегаю использования параметра, который можно легко спутать с переменной-членом.
Если метод или класс настолько велики, что трудно сказать, что означают переменные, реальное решение состоит в том, чтобы разбить их на более мелкие методы / классы. Использование префиксов - это решение, которое помогает решить основную проблему.
источник
Paint (clr) { color = clr; }
). ... обычно не так много двусмысленности, хотя,color -> clr
в частности, это может быть исключением.Если вы создадите стандарт для использования «p» в качестве префикса для каждого имени параметра метода, вы можете легко распознать параметры метода в остальной части тела метода.
Это экономит ваше время, чтобы найти параметры метода. Вы можете легко отладить свой код.
источник
Коротко. Эта практика затрудняет чтение кода.
Долго - я буду утверждать, что это плохая практика, используемая только для поддержки других плохих практик. Давайте рассмотрим несколько причин, по которым использование таких префиксов может считаться полезным:
Как избежать коллизий в именах переменных
public void setHeight(int newHeight) { this.height = newHeight; }
Методы принимают много параметров, объявляют много переменных, и мы можем легко забыть, какой из них является параметром.
За исключением некоторых особых случаев, добавление префиксов параметров только помогает с симптомами и не решает реальных проблем.
источник
Я фанат iParam для входных и oParam для выходных параметров. Я бы сказал cParam за изменения, но это не приемлемо
источник