Письмо2

Во первых, хорошо, что вы потратили время и разобрались с boost::regex, boost::shared_ptr, и фреймворком для тестирования. Сейчас ваша работа гораздо более похожа на продукт.

Однако замечания все еще есть:




Я думаю можно предоставить пользователю гораздо более удобный интерфейс, например:


getMandatoryParam должна выкидывать исключение (ведь пользователь может потребовать обязательного наличия некоторых полей), по которому пользователь сможет точно восстановить причину ошибки. getOptionalParam подставит defaultAudioDevice в audioDevice если параметра в тэге нет. Такие же функции можно определить для getInt, getBool, etc.

Кстати, this-> совершенно излишне и в данной ситуации только путает читателя.




Использовать std::string* менее безопасно чем std::string&. Предпочитайте использовать неконстантные ссылки для аргументов, которые предполагают изменение передаваемого параметра: