Сколько работы должен выполнить конструктор моего класса?

У меня есть класс, представляющий поток данных, он в основном читает или записывает в файл, но сначала данные шифруются / дешифруются, а также существует базовый объект кодека, который обрабатывает доступ к мультимедиа.

Я пытаюсь написать этот класс в формате RAII, и мне нужен чистый, красивый, удобный дизайн.

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

Прямо сейчас я делаю все это в конструкторе, поэтому на это уходит много времени. Я подумываю о переносе крипто-инициализации (большая часть работы) из ctor в отдельный метод (скажем, Stream :: auth (key) ), но опять же, это переложит некоторую ответственность на пользователь класса, так как им потребуется запустить auth () перед тем, как они вызовут любые операции ввода-вывода. Это также означает, что мне нужно будет проверить вызовы ввода-вывода, чтобы убедиться, что был вызван auth () .

Как вы думаете, какой дизайн хороший?

P.S.Я прочитал аналогичный вопрос, но я не смог применить ответы в этом случае. В основном они похожи на "Это зависит" ...: - /

Спасибо

5
задан kralyk 18 January 2012 в 19:10
поделиться