Подтвердить что ты не робот

Должны ли мы помещать единицы измерений в имена атрибутов?

Я думаю, что большинство из нас согласны с тем, что рекомендуется использовать описательное имя для переменных, атрибутов объектов и столбцов базы данных. Если вы хотите сохранить что-то имя, вы также можете вызвать атрибут Name, чтобы люди знали, что ему вводить.

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

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

Бросьте мне строку, здесь: следует ли внедрять единицы измерения в наши имена атрибутов? Почему? Почему нет?

4b9b3361

Ответ 1

Если у вас есть согласованная UOM для вещей, тогда ваша политика DBA в порядке.

Например, если временные интервалы ВСЕГДА в минутах и ​​т.д.

Если UOM может измениться, вы должны сохранить его в другом столбце вместе с qty.

Тем не менее, я склоняюсь к вам с этим. Яркость превосходит большинство вещей, включая это. Я бы предпочел DurationMinutes, чем Duration, и должен угадать, что такое UOM.

Ответ 2

Да. Вам следует.

Ключ, как отметил @[Charles Bretana], - это разборчивость и что другие пользователи вашего стола или разработчиков после вас знают, что вы используете.

Я бы включил единицы измерения/измерения в имя поля - в моем бизнесе вы не можете догадаться, что вы найдете в контексте или имени: поле под названием MarketValue - это миллионы, тысячи или единицы? Доллары США, евро, фунты, $CURRENCY? Это значение в процентах, отношение? Абсолютный или относительный? Ежедневно, ежемесячно, календарный год, финансовый год? Это временная метка, какой часовой пояс?

Ваша первая, последняя и единственная задача при предоставлении данных состоит в том, чтобы убедиться, что она не используется неправильно, потому что потребитель не смог узнать об этом достаточно. Как разработчики, бросать "Метр", "USD", "GMT", "PerCent" или что-то другое в название поля не является наименее вонючей.

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

Ответ 3

Вот почему Mars Climate Orbiter врезался в поверхность со скоростью 350 м/с, когда планировалось обрабатывать 350 фут/сек (или что-то в этом роде).

Хотя "Никогда не говори" Никогда "или" Всегда ", в общем, хорошее эмпирическое правило, здесь я буду склонять свое правило и сказать, что я думаю, что вы должны" всегда "разъяснять, какие единицы числовое значение в.

Ответ 4

Я думаю, что это хорошая идея, где есть место для двусмысленности.

Например, с использованием класса высокопроизводительного таймера, который мы используем, мне нужно проверить, возвращает ли метод GetElapsed() секунды или миллисекунды или что-то еще. Если бы это было вызвано GetElapsedMilliseconds(), это спасло бы путаницу.

Единственный недостаток, если вы хотите передумать... но в этом случае все клиенты должны знать об изменении в любом случае.

F # имеет интересный поворот на этом, чтобы единицы измерения были указаны в системе типов. См. Этот сообщение в блоге, а также другой вопрос о stackoverflow, обсуждающий Являются ли единицы измерения уникальными для F #?

Ответ 5

Соглашение об именах всех моих столбцов в формате:

{name}_in_{unit}

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

length_in_m
speed_in_ms-1
color_in_nm

было несколько исключений, которые я обрабатывал либо с помощью _at_time, либо number_of _:

started_at_time updated_at_time number_of_rotations

Ответ 6

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

Вы можете пойти еще дальше (в своем коде, а не в базе данных), и иметь тип длины, который заботится об устройстве измерения и возможных преобразованиях. Это подход шаблона "Количество" в книге Мартина Фаулера "Анализ шаблонов".

Ответ 7

Не помещайте единицы измерения (или тип столбца) в имена столбцов базы данных.

Многие базы данных имеют возможность каким-то образом документировать/комментировать столбцы (в SQL Server это sp_addextendedproperty), я бы предположил, что это более подходящее место.

Ответ 8

Я сделал много работы с базами данных, и я бы не стал на это хвалиться, и я не слышал о том, чтобы нахмуриться.

Это лучше, чем расширенные свойства, что не очевидно для случайного разработчика. Это лучше, чем в отдельном документе, потому что многие разработчики не будут их читать и, конечно, не очень подробно. Если единицы установлены, то наличие этого имени звучит как хорошая идея. Если это изменяется, то при добавлении поля единицы измерения измените имя поля измерения.

Ответ 9

Мы не помещаем единицы измерения в имена столбцов в нашей базе данных. Однако у нас есть документ словаря данных, в котором описаны все столбцы и отношения.

Ответ 10

Идеальный подход, если возможно, использовать тип, который не оставляет двусмысленности в отношении измерения. Например, в .NET вместо того, чтобы говорить int periodInSeconds, вам будет гораздо лучше использовать TimeSpan period.

На языке F # на самом деле есть единицы измерения как часть системы типов, поэтому вы можете объявлять типы в таких единицах, как 10<m/s> и 5<s>, и даже выполнять вычисления на них, поэтому что-то вроде 10<m/s> * 5<s> приведет к 50<m>. Подробнее см. здесь.

Поэтому я бы сказал, если возможно, использовать тип, который передает ваше намерение, но если это невозможно, вы, вероятно, должны закодировать измерение в имени. Это лучше и очевиднее, чем комментарий.

Ответ 11

Я должен сказать, что я ненавижу "описательные" имена переменных, становясь "невероятно подробными" именами переменных.

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

function velocity(m, s) {
   return m/s;
}

Вам не нужно говорить "length_m", потому что в этом контексте очевидно, что в метрах измеряются только длины.

Сказав это. Если бы я писал систему, где ошибки единицы измерения были действительно опасны, я бы, вероятно, использовал систему типов и определял класс Length, который всегда преобразовывал себя в стандартную единицу для любого вычисления. Возможно, даже разные подклассы для Feet, Meters и т.д.

Ответ 12

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

  • Где хранится информация об единицах измерения?
  • Как я могу получить доступ к устройствам программно?

Если ответы "не есть" или "вы не можете", горько жалуйтесь - они не имеют права отказать вам в вашем соглашении об именах. В противном случае все может быть более счастливым, если вы работаете в системе.

P.S. Мне очень нравится поддержка единиц измерения, которые они ввели в F #.

Ответ 13

НЕТ, имя атрибута отдельно от единицы измерения.

Если вы вызываете переменную length_mm, то вы привязаны к mm.

что, если вы используете 32-битный int для хранения length_mm, в конечном итоге длина в мм может увеличиться до 62 000, или какой бы ни был предел на 32-битных ints. Вы не можете переключиться на m, потому что вы привязали переменную длины к length_mm.

Ответ 14

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