Pull to refresh
19
0
Send message
Функция train нарушает принцип DRY.
Что будет, если вздумается переименовать/добавить/удалить параметр?
Разве нельзя автоматически привязать все параметры к переменным и использовать статическую типизацию для контроля на этапе компиляции?
Signals 2 — потокобезопасная реализация с тем-же интерфейсом что и у Signals, вопросами диспетчеризации сообщений между потоками она, к сожалению, не занимается.

Извините за качество съемки, моя лучшая половина забрала фотик и поехала с дочкой к бабушке…
Зачетное кресло, у меня на работе такое :)
Из сайта Adobe:
Adobe Flash Player 11.2 будет последней версией, поддерживающей Linux в качестве платформы. Adobe будет продолжать обеспечивать ретроподдержку безопасности Flash Player 11.2 для Linux.

Есть выход: можно установить Google Chrome (не Chromium, а именно Google Chrome), где Flash Player уже встроен в него, и там более свежая версия, 11.4.31.110 на данный момент.
Описанный подход очень напоминает принцип YAGNI.
Кроме того, принципы YAGNI, KISS и DRY прекрасно могут уживаться вместе.
Подобная конструкция помогает при рефакторинге, когда уже есть сотни две объявленных переменных типа int и хочется заменить это все на десятка два классов. При этом нужно чтобы новые типы вели себя так-же как int, т.к. уже есть много кода, который использует переменные.
В таком случае шаблонный класс помогает избежать дублирования кода.

Как в этом случае быть с вашими структурами?
А разве нужна интуиция при проведении оптимизации производительности кода?
Как по мне, то нужно полагаться на показания профайлера, а не на интуицию.
Основная цель шаблона деньги — исключить ошибки, возникающие при присвоении различных значений друг другу.

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

А унификацию и это Вы уже сами придумали.
Думаю, полезно будет упомянуть, что такой подход имеет свое название:
Шаблон проектирование Money (Деньги)
Основная проблема логов в многопоточной среде — влияние на нормальный ход выполнения программы за счет внесения дополнительных синхронизаций при записи логов.

При этом можно дойти до такой крайности, когда программа будет кое-как работать при включенных логах, но стоит только логи отключить — тут-же падает.
>>Если хочется проверить, что он себя ведет так, как надо — то процедура проверки не проделывается руками, а записывается в виде теста, проверки — в виде assert'ов.

Это все прекрасно и необходимо, но всего не предугадаешь. Программы все равно будут сбоить, портить память, зависать и т.п. И никакие юнит-тесты это не исправят.

Вот как Вы проанализируете deadlock программы при помощи асертов?

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

То есть когда программа падает, она создает dump своего состояния, который затем отправляется на сайт Microsoft, откуда его можно скачать, если зарегистрировать свою компанию и версию продукта. См. Windows Error Reporting.

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

Также дамп можно создать вручную, если программа к примеру зависла.
При том на Windows 7 это можно сделать прямо из Task Manager-а.

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

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

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

Новичкам необходимо понимать как работает их код, для этого отладчик — именно то, что нужно.
Под отладчиком можно пошагово смотреть что происходит в коде, смотреть значения всех переменных и т.п.
Ну люди бывают разные, и у некоторых экземпляров отношение к работе наплевательское.
Хотя таких, конечно, лучше сразу увольнять…
Если несколько потоков будет выводить логи, да еще и с отступами, то в файле лога будет каша.
Советую новичкам научится анализировать Crash Dump-ы с использованием нормального отладчика.

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

Также в некоторых случаях стоит освоить работу с ядерным отладчиком для отладки сложных сценариев.
Я правильно понял, что вы написали, что разработчик перестает нести ответственность за свой код после ревью? Так что тогда ему мешает писать код таким образом, лишь бы он прошел ревью, а если будет глючить потом, то и так сойдет?
Смешно, ведь статья про текстовый редактор ценой в 59$
Мне не нужен спор о том, какой инструмент «Лучший», каждый выбирает лучший инструмент для себя.

Information

Rating
Does not participate
Registered
Activity