Соглашения об именах переменных

У меня есть четыре переменные в программе: xPos, yPos, xVel, yVel

У каждого из них должен быть сеттер/геттер, но будет неудобно говорить:

setXpos()
getXpos()
getXvel()
setXvel()

Существует ли соглашение об именах для этих переменных, которое было бы коротким и эффективным?


person Anonymous181    schedule 02.05.2012    source источник
comment
Вот и все, но я мог бы порекомендовать написать векторный класс и передавать его по кругу вместо того, чтобы иметь дело с xp, yp, xv, yv и так далее.   -  person Louis Wasserman    schedule 03.05.2012


Ответы (4)


То, что вы указали в своем фрагменте кода, является соглашением об именах.

Более важный вопрос заключается в том, как их можно переформулировать для удобочитаемости? Мне как человеку, не видевшему вашу программу, четыре перечисленные вами функции кажутся совершенно понятными. Я затрудняюсь придумать что-то более ясное.

Каждый раз, когда вы отказываетесь от соглашения, даже если соглашение делает вещи неприглядными, вы теряете читабельность/ясность (поскольку люди ожидают, что эти соглашения будут выполнены). Вы должны взвесить преимущество отказа от неприглядного условного результата в пользу чего-то лучшего против потери от отказа от условности.

Все это говорит о том, что у вас есть мое разрешение на использование 'getXvel()'. Удачи. знак равно

person Christopher Berman    schedule 02.05.2012

Как насчет getXPos() и getXVel()? Хотя getXPosition() и getXVelocity() кажутся четче. Это зависит от контекста, но мне потребовалась секунда, чтобы понять, что вы не имели в виду val.


Это выходит за рамки вашего вопроса, но (при правильных обстоятельствах) я могу поспорить с этим:

foo.getX().position();
foo.getX().velocity();
person Jeremy    schedule 02.05.2012
comment
Вы создаете класс, который имеет методы position() и velocity(), и возвращаете экземпляр этого класса при вызове getX(). - person Jeremy; 03.05.2012

Есть несколько мнений по соглашению об именах. Если вы следуете соглашениям java bean, то ваши сеттеры и геттеры верны, однако я бы подумал о переименовании ваших переменных, чтобы они были более описательными, то есть horizontalPosition, verticalPosition, verticalVelocity, horizontalVelocity с соответствующими именами геттеров и сеттеров.

person Kodi    schedule 02.05.2012
comment
Длинные имена предпочтительнее, если не существует установленной практики IMO (int i для примера). В этом случае xPos достаточно ясен. xVelocity против xVel имеет смысл. Очень субъективно конечно. - person assylias; 03.05.2012

Используйте класс Point для (x, y).

person Joop Eggen    schedule 02.05.2012