Как запустить кого-то с ALT.NET

Это называется округлением до четного (или округления банкира), что является действительной стратегией округления для минимизации начисленных ошибок в суммах (MidpointRounding.ToEven). Теория состоит в том, что если вы всегда будете округлять 0,5 числа в одном направлении, ошибки будут нарастать быстрее (от округлой до четности предполагается минимизировать это) (a).

Следуйте этим ссылкам для Описание MSDN:

  • Math.Floor , которое округляется вниз к отрицательной бесконечности.
  • Math.Ceiling , который округляется вверх до нуля.
  • Math.Truncate , который округляется вверх или вниз к нулю.
  • Math.Round , который округляется до ближайшего целого числа или заданного числа десятичных знаков. Вы можете указать поведение, если оно точно равноудалено между двумя возможностями, например округлением, чтобы окончательная цифра была четной («Round(2.5,MidpointRounding.ToEven)» становится равной 2) или так, что она находится дальше от нуля («Round(2.5,MidpointRounding.AwayFromZero)» становится 3).

Следующая диаграмма и таблица могут помочь:

-3        -2        -1         0         1         2         3
 +--|------+---------+----|----+--|------+----|----+-------|-+
    a                     b       c           d            e

                       a=-2.7  b=-0.5  c=0.3  d=1.5  e=2.8
                       ======  ======  =====  =====  =====
Floor                    -3      -1      0      1      2
Ceiling                  -2       0      1      2      3
Truncate                 -2       0      0      1      2
Round(ToEven)            -3       0      0      2      3
Round(AwayFromZero)      -3      -1      0      2      3

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

n = 3.145;
a = System.Math.Round (n, 2, MidpointRounding.ToEven);       // 3.14
b = System.Math.Round (n, 2, MidpointRounding.AwayFromZero); // 3.15

С помощью других функций вы должны использовать метод умножения / деления для достижения такого же эффекта:

c = System.Math.Truncate (n * 100) / 100;                    // 3.14
d = System.Math.Ceiling (n * 100) / 100;                     // 3.15

(a) Конечно , эта теория зависит от того, что ваши данные имеют довольно равномерное распределение значений по четным половинам (0,5, 2,5, 4,5, ...) и нечетным половинам (1,5, 3,5, ...).

Если все равны «полузначениям» (например), ошибки будут накапливаться так же быстро, как если бы вы всегда округлялись.

5
задан skaffman 27 April 2012 в 13:43
поделиться

7 ответов

Существенные принципы, чтобы ехать домой:

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

Затем после управления версиями(!) я запустил бы с непрерывной интеграции и показал бы, как получение непосредственной обратной связи на качестве сборки может помочь улучшить качество с первого момента. Выполнение CI сначала не изменяет кодовую базу.

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

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

Поскольку мы стремимся получать своего рода разделение проблем, шаблоны разработки (такие как МОК) естественно начнут становиться очевидными. Также будет очевидным, что мы можем заменить слой данных ORM.

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

4
ответ дан 13 December 2019 в 05:45
поделиться

ALT.NET является большим количеством отношения, чем ряд инструментов и методов.

Я не знаю, что можно было "запустить кого-то с ALT.NET", по сути.


Мне это - отношение, перенесенное опытом, не чем-то, что можно поставить как слой. Но это - мое мнение согласно изменению.

5
ответ дан 13 December 2019 в 05:45
поделиться

Я думаю, что это зависит от человека или группы. Почти все магазины имеют некоторое воздействие одному из этих понятий. Оттуда, я представил бы новые понятия только с такой скоростью, как Вы думаете, разработчик или команда могут поглотить их. Это является довольно угнетающим, чтобы видеть, что команды начинают отклонять некоторые важные принципы и понятия, потому что они перегружаются. И попытайтесь не предположить, что кто-то понимает принципы позади использования CI, МОК или насмешки платформ.

3
ответ дан 13 December 2019 в 05:45
поделиться

Я не означаю становиться ALT.NETter просто способом разрешения им знать, что материал там, но способом что они могут понять это и чувствовать, что это может помочь им.

0
ответ дан 13 December 2019 в 05:45
поделиться

Я думаю, что много людей не знает о Дженериках, делегатах, Linq и Lambda expressions.
Если Вы скажете затем всем приблизительно в то же время затем, что они просто отбросят все.

Как Вы не учил бы программиста новичка, что является DSL, но можно сообщить ему о SVN.

0
ответ дан 13 December 2019 в 05:45
поделиться

Подкаст Alt.NET может быть хорошим местом для получения некоторое представление. У них есть подкасты на непрерывном совершенствовании, гибком, DI/МОК, ORM, ООП w/Ruby, и т.д. (в том порядке).

0
ответ дан 13 December 2019 в 05:45
поделиться

Для меня это был коллега, который выступал за IoC/DI и TDD. Он также заставил меня пойти в группы пользователей .net, чтобы я увидел, что он был не просто одноразовым сумасшедшим парнем, которому нравилось использовать новые и странные технологии ради их использования

.
0
ответ дан 13 December 2019 в 05:45
поделиться
Другие вопросы по тегам:

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