А кто Вам сказал, что от действий не зависит результат?
Мой опыт показывает, что чаще всего именно от деталей он и зависит. Очевидные баги не допускаются (ну или быстро починены) и осталось только нечто хитрое, но требующее 80% времени.
Пример из жизни: один баг по описанию смог воспроизвести только тестировщик-левша. Потому что в описании было «поставьте три точки» и только он ставил их не по часовой стрелке, а против.
Пункт «Сократить очевидное» я бы вычеркнул.
Нужно описать то, что происходило, потому что
Открыть приложение по ярлыку
Может быть
выделить ярлык и нажать Enter
Кликнуть мышью два раза
Вызвать контекстное меню правой кнопкой, выбрать открыть
Набрать в консоли «имя_ярлыка».lnk
Если ярлык в панели быстрого запуска — кликнуть по нему один раз
Любое действие, не приводящее к открытию приложения. Например, перетащить ярлык куда-нибудь
и много других вариантов.
И очень и очень часто стандартный путь разработчика отличаеся от стандартного пути тестировщика в очевидных вещах.
Чем подробнее — тем лучше.
Ну ещё можно посоветовать заменить _lastForegroundTimerTickTime = DateTime.Now;
на _stopwatch = Stopwatch.StartNew();
и var totalMilliseconds = (DateTime.Now - _lastForegroundTimerTickTime).TotalMilliseconds;
на var totalMilliseconds = _stopwatch.ElapsedMilliseconds;
Всё-таки мерить время через DateTime.Now как-то не очень прилично
разница будет в StackTrace, если произойдёт исключение.
И если вариант с
return SometingAsync();
используется часто, то понять что-же именно произошло становится сложнее.
Поэтому я предпочитаю пользоваться первым вариантом, если не разрабатываю библиотеку.
Ну, тогда можно вечно спорить о том, как считать затраты, ибо без этого выраженеи «наименее затратными способами» становится бессмыслецой и любые способы становятся неадекватными.
Мне кажется, что решением проблемы может быть замена событий на Rx.
Возможностей больше, управление легче да и стандартными функциями гарантируется соблюдение контракта, что отписанный метод не будет вызван.
Рад за вас. Хоть и сложно оценить удовольствие от правильно расположенного жилья в денежном эквиваленте.
Хочу лишь заметить, что коллега сможет в любой момент продать жильё и переместиться куда угодно. При этом те деньги, которые он «перекладывал», к нему вернутся, немного увеличевшись за счёт подорожания квартиры.
Всё зависит от того, как именно брать ипотеку — сумма, время погашения и тд и тп.
Если не брать слишком многого, то вполне может быть разделение 50/50.
+ с течением времени процентов становится всё меньше.
Всё-таки некорректно сравнивать плату за аренду с платой за ипотеку. Правильнее сравнить плату за аренду с платой процентов банку, поскольку остальное это просто перекладывание имущества из одной формы в другое.
А дальше можно посчитать, что меньше: «проценты банку + проезд» или «аренда жилья».
И я не знаю, какой из вариантов более выгоден.
Врядли это многочисленная группа. Обычно люди, имеющие возможность делать тоже самое за большие деньги, возможностью этой пользуются. Поэтому быстро начинают хотеть 100к+
Совсем недавно был в гипермаркете, пукупал банку консервированных ананасов.
Со стороны главного прохода ценник: ананасы колечками — 60 рублей 40 рублей
С другой стороны ценник: ананасы кусочками — 60 рублей
И банки одной кучей, отличающиеся небольшой надписью на этикетке: либо колечки либо кусочки.
Пост просто назван неправильно. Было бы коррейтней его назвать «пример использования Maybe как функтора и как монады».
А Ваш вопрос можно разделить на два:
1) Зачем вообще нужны эти языки
2) Как понимать и использовать хаскель (скалу, что угодно ещё)
И если на первый вопрос ответить можно достаточно просто, то второй потребует практики и набивания руки.
Мой опыт показывает, что чаще всего именно от деталей он и зависит. Очевидные баги не допускаются (ну или быстро починены) и осталось только нечто хитрое, но требующее 80% времени.
Пример из жизни: один баг по описанию смог воспроизвести только тестировщик-левша. Потому что в описании было «поставьте три точки» и только он ставил их не по часовой стрелке, а против.
Нужно описать то, что происходило, потому что
Может быть
и много других вариантов.
И очень и очень часто стандартный путь разработчика отличаеся от стандартного пути тестировщика в очевидных вещах.
Чем подробнее — тем лучше.
_lastForegroundTimerTickTime = DateTime.Now;на
_stopwatch = Stopwatch.StartNew();и
var totalMilliseconds = (DateTime.Now - _lastForegroundTimerTickTime).TotalMilliseconds;на
var totalMilliseconds = _stopwatch.ElapsedMilliseconds;Всё-таки мерить время через DateTime.Now как-то не очень прилично
И если вариант с
используется часто, то понять что-же именно произошло становится сложнее.
Поэтому я предпочитаю пользоваться первым вариантом, если не разрабатываю библиотеку.
Понятно же, что 36 тыс. км имелось ввиду. Ровно как и 8 тыс. км.
К чему это передёргивание?
Возможностей больше, управление легче да и стандартными функциями гарантируется соблюдение контракта, что отписанный метод не будет вызван.
Хочу лишь заметить, что коллега сможет в любой момент продать жильё и переместиться куда угодно. При этом те деньги, которые он «перекладывал», к нему вернутся, немного увеличевшись за счёт подорожания квартиры.
Если не брать слишком многого, то вполне может быть разделение 50/50.
+ с течением времени процентов становится всё меньше.
А дальше можно посчитать, что меньше: «проценты банку + проезд» или «аренда жилья».
И я не знаю, какой из вариантов более выгоден.
Со стороны главного прохода ценник: ананасы колечками —
60 рублей40 рублейС другой стороны ценник: ананасы кусочками — 60 рублей
И банки одной кучей, отличающиеся небольшой надписью на этикетке: либо колечки либо кусочки.
Если, скажем, надо напечатать посёлок на 1000 домов, то проще будет привезти 3d принтер и готовить дома уже на месте.
Потом только понял, что Вы поломали основное преимущество от позиционирования слов.
А Ваш вопрос можно разделить на два:
1) Зачем вообще нужны эти языки
2) Как понимать и использовать хаскель (скалу, что угодно ещё)
И если на первый вопрос ответить можно достаточно просто, то второй потребует практики и набивания руки.