понедельник, 2 апреля 2012 г.

События в C++03

Удобно пользоваться уже готовыми событиями из каких-нибудь сторонних библиотек, Boost.Signals например. Но если тебя ограничивают лишь стандартом, то приходится выдумывать свой велосипед, так как механизм событий в C++ стандартом не поддерживается.

среда, 28 марта 2012 г.

Экспорт в XML

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

понедельник, 5 марта 2012 г.

Доступно о SOLID

Не так давно, около месяца назад, я сделал небольшой доклад, посвященный SOLID, для своих коллег. Объяснить, что это такое оказалось не совсем тривиальным делом. Поэтому, я думаю, многим моя публикация окажется полезной. В этом посте я попытался собрать самые простые и понятные объяснения по каждому принципу.

вторник, 28 февраля 2012 г.

MVC, ее двуликая Модель и шаблон Команда

Многие при разработке настольного приложения, имеющего более менее сложный графический интерфейс, используют MVC. Если приложение должно иметь еще и Undo/Redo функционал, то вам прямая дорога к использованию шаблона Команда.
Первая же сложность, с которой сталкивается разработчик в такой ситуации, как правильно использовать обе практики вместе. В интернете не то, чтобы полно, но есть примеры, как органично встроить Команду в MVC.
Но обо всем по порядку.

воскресенье, 29 января 2012 г.

Принцип инверсии зависимости

Принцип инверсии зависимости (DIP) впервые был определен Робертом Мартином около 15ти лет назад и содержит два утверждения:
  1. Модули верхних уровней не должны зависеть от модулей нижних уровней. Модули обоих уровней должны зависеть от абстракций.
  2. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.