Мы должны поместить единицы измерений в названиях атрибута? [закрытый]

Ответил ли этот на ваш вопрос?

Я никогда не использовал reinterpret_cast, и задаюсь вопросом, работает ли он в случае, который ему нужен, это не запах плохого дизайна. В базе кода я работаю над dynamic_cast. Разница с static_cast заключается в том, что dynamic_cast выполняет проверку времени выполнения, которая может (безопаснее) или не может (больше служебных) быть тем, что вы хотите (см. msdn ).

24
задан Garth Kidd 15 January 2009 в 00:20
поделиться

14 ответов

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

, Например, если промежутки находятся ВСЕГДА в минутах, и т.д.

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

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

28
ответ дан Michael Haren 16 October 2019 в 09:12
поделиться

Да. Вы должны.

ключ, как [Charles Bretana] указал, четкость и что другие пользователи Вашей таблицы или разработчики после Вас знают то, что Вы используете.

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

Ваше первое, последнее и только задача при обеспечении данных состоит в том, чтобы гарантировать, что это не используется неправильно, потому что потребитель не смог узнать достаточно об этом. Как разработчики, бросая "Метр", "доллар США", "GMT", "Процент" или безотносительно в имя поля не является наименее разрядным вонючим.

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

7
ответ дан Unsliced 16 October 2019 в 09:12
поделиться

Поэтому Орбитальный аппарат Климата Марса врезался в поверхность на уровне 350 метров/секунда, когда было запланировано только обработать 350 футов/секунда (или что-то как этот).

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

5
ответ дан culix 16 October 2019 в 09:12
поделиться

Я думаю, что это - хорошая идея где угодно, так как всегда существует место для неоднозначности.

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

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

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

3
ответ дан Acumenus 16 October 2019 в 09:12
поделиться

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

{name}_in_{unit}

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

length_in_m
speed_in_ms-1
color_in_nm

было несколько исключений, которые я обработал или с _at_time или с number_of_:

started_at_time updated_at_time number_of_rotations

2
ответ дан Chris Farmiloe 16 October 2019 в 09:12
поделиться

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

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

1
ответ дан Mitch Wheat 16 October 2019 в 09:12
поделиться

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

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

1
ответ дан thursdaysgeek 16 October 2019 в 09:12
поделиться

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

Вы могли пойти даже шаг вперед (в Вашем коде, не в базе данных) и иметь тип Длины, который заботится об измерительной единице и о возможных преобразованиях. Это - подход шаблона "Количества" в "Аналитической книге" Шаблонов Martin Fowler.

1
ответ дан Acumenus 16 October 2019 в 09:12
поделиться

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

0
ответ дан BoltBait 16 October 2019 в 09:12
поделиться

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

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

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

0
ответ дан Greg Beech 16 October 2019 в 09:12
поделиться

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

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

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

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

0
ответ дан Norman Ramsey 16 October 2019 в 09:12
поделиться

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

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

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

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

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

-1
ответ дан 2 revs 16 October 2019 в 09:12
поделиться

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

при вызове переменной length_mm тогда Вы связываетесь с мм.

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

-3
ответ дан ForYourOwnGood 16 October 2019 в 09:12
поделиться

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

-4
ответ дан Jörg W Mittag 16 October 2019 в 09:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: