Должны ли единицы измерения всегда включаться во все имена переменных? - PullRequest
3 голосов
/ 03 июля 2019

Я видел несколько разных мнений о том, следует ли включать единицы измерения в переменные, и я не совсем уверен, как обращаться с угловыми случаями.

Например, если у меня была переменнаягде хранится «ускорение», полученное с помощью акселерометра. Должен ли я в явном виде указывать в имени переменной ее единицы измерения, которые представляют собой квадратные метры в секунду?

Double acceleration; // m/s^2
// or this
Double accelerationMetersPerSecondSquared
// or maybe this
Double accelerationMeterPerSecSqr

Как вы можете видеть, меня беспокоит то, чтоИмя переменной может стать довольно длинным, если единицы измерения являются сложными, и если это что-то вроде ускорения, которое, как известно, находится в единицах м / с ^ 2, необходимо ли его иметь?

Конечно, в других случаях необходимо иметь единицы измерения, например переменную для хранения времени.

int time; // time in what unit??
// this is more clear
int timeInSeconds;

1 Ответ

4 голосов
/ 03 июля 2019

По крайней мере, для второй части, последние обновления для API Java "дата-время" имеют простой ответ.

int time; // time in what unit??

превращается в:

Duration somePeriodOfTime ...

Это, вероятно, говорит нам о том, каким может быть идеальное решение для первых примеров: также определять различные типы. Так что не используйте двойное число, представляющее квадратные символы.

Создайте класс (в идеале с семантикой «значения»), такой как Area, который всегда содержит числовое значение (возможно, двойное) вместе с его единицей.

Этот модуль может быть затем реализован как enum, и тогда вы добавите некоторый встроенный код преобразования, который почти магически превращает квадратные футы в квадратный метр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...