Во-первых, может показаться, что я прошу субъективных мнений, но это не то, что мне нужно. Мне бы хотелось услышать некоторые обоснованные аргументы по этой теме.
В надежде получить некоторое представление о том, как должна быть разработана современная структура потоков/сериализации, Недавно я получил себе копию книги Стандартные IOStreams и локали С++ от Angelika Langer и Klaus Kreft. Я полагал, что если IOStreams не был хорошо разработан, он бы не попал в стандартную библиотеку С++.
После того, как я прочитал различные части этой книги, у меня возникают сомнения, если IOStreams могут сравниться, например. STL из общей архитектурной точки зрения. Чтение, например. это интервью с Александром Степановым (изобретателем STL), чтобы узнать о некоторых дизайнерских решениях, которые вошли в STL.
Что меня особенно удивляет:
-
Кажется неизвестным, кто отвечал за общий дизайн IOStreams (я бы хотел прочитать некоторую справочную информацию об этом - кто-нибудь знает хорошие ресурсы?);
-
Как только вы углубитесь в непосредственную поверхность IOStreams, например, если вы хотите расширить IOStreams своими собственными классами, вы получите интерфейс с довольно загадочными и запутанными именами функций-членов, например.
getloc
/imbue
,uflow
/underflow
,snextc
/sbumpc
/sgetc
/sgetn
,pbase
/pptr
/epptr
(и, возможно, еще худшие примеры). Это затрудняет понимание общего дизайна и взаимодействия отдельных частей. Даже книга, о которой я упоминал выше, не очень помогает (ИМХО).
Таким образом, мой вопрос:
Если бы вам пришлось судить по сегодняшним стандартам разработки программного обеспечения (если на самом деле существует какое-либо общее соглашение по этим вопросам), будут ли С++ IOStreams считаться хорошо продуманными? (Я бы не хотел улучшать свои навыки разработки программного обеспечения из того, что обычно считается устаревшим.)