Программистам на С++

 

Если кому интересен С++ - делюсь документом,
в котором описываю правильные с моей точки зрения практики программирования
(так скажем- врапперы у меня из правил кодирования,
т.е. моя точка зрения остается только в виде shared pointer'ов)
https://docs.google.com/open?id=0BxWggsgmLeCfZ0tRYzJIZ1VXaE0

Тем, кто не работал профессионально- или не довелось попасть
в правильную контору- надеюсь, будет интересно.

PS/ на отсутствие "косяков" не претендую ;-)

Файлы:
 

не читается.

 
sergeev:


не читается.

в Хроме нормально работает, а в Опере не открывается.
 
Приложил zip.
PS/ проверял и оперой, и хромом
PS2/ исправил ссылку
 

К сожалению этот файл мне не пригодился :-))) Шутка. Давно пользую.

Очень вовремя мы познакомились с Андреем. Как раз в то время, когда начал изучать С++. Он мне свой опыт тогда передал и до сих пор помогает.

Теперь пишу только, как у него описано.

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

Это становиться просто привычным в использовании.

 
Спасибо! С интересом почитал!
 
:-)
 
Андрей, расскажи ещё о культуре тестов.
 

Сейчас могу разве что посоветовать книгу- Мартин Фаулер, "Рефакторинг".
У него есть глава "4. Разработка тестов", "Ценность самотестирующегося кода".

Сам тесты пишу- т.к. если нет тестов- то уверенности нет никакой, что написано что-то стоящее.
Иногда пишу дублирующий функционал (то же самое- но другим методом).
Иногда пишу такие тесты, которые генерируют наборы случайных значений-
а потом идёт проверка, как на этих случайных данных всё работает.
Если, например, работа связана с прерыванием и сохранением состояния на диск
с последующим возобновлением работы- то в тесте много раз прерываю- перезапускаю.
В данные обычно пишу информацию, чтобы проконтролировать целостность системы.

Сейчас перешёл на работу с хитрыми объектами типа "Xml в памяти".
Написал для них бинарный и текстовый сериализатор.
Также можно сохранять эти объекты специально под визуализацию в блокноте-
вроде и структура Xml, но читается в разы проще- в тексте с отступами.
Легко посмотреть, что там как нагенерировалось.

Хорошо всё визуализировать- все временные, итоговые буфера.
Косяки на глаз довольно хорошо видны.
В одной программке все буфера с расчетами были доступны для выгрузки в csv
и для показа на экране- отдельно с графиками для периодограмм (Фурье) и для временных рядов.

Если функционал делается с прототипом (есть программа, которая уже
делает то, что нужно)- можно смело сравнивать итоговые цифры.
Например, код Mql индикатора перенесли в С++ и что-то там посчитали-
так ведь есть ещё и результат из-под МТ- бери- не хочу. Если всё совпало- вот оно- счастье.
Написали тестер- посмотрели как все то же самое проторгуется в МТ,
чтобы совпали все сделки и суммы.

Где-то расчёты могут давать "плавающие результаты"- можно тупо запускать много раз
и проверять, что результаты одни и те же.

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

PS/ тут как-то проскакивала вот такая статья- https://www.mql5.com/ru/articles/1579