Po pierwsze, może się wydawać, że proszę o subiektywne opinie, ale nie o to mi chodzi. Bardzo chciałbym usłyszeć kilka uzasadnionych argumentów na ten temat.
Mając nadzieję na trochę wglądu w to, jak powinny być projektowane nowoczesne ramy strumieni / serializacji, niedawno kupiłem książkę Standard C ++ IOStreams and Locales autorstwa Angeliki Langer i Klausa Krefta . Pomyślałem, że gdyby IOStreams nie był dobrze zaprojektowany, to w pierwszej kolejności nie trafiłby do standardowej biblioteki C ++.
Po przeczytaniu różnych części tej książki zaczynam wątpić, czy IOStreams można porównać np. Z STL z ogólnego architektonicznego punktu widzenia. Przeczytaj na przykład ten wywiad z Alexandrem Stepanovem („wynalazcą” STL), aby dowiedzieć się o niektórych decyzjach projektowych, które zostały podjęte w ramach STL.
Co mnie szczególnie zaskakuje :
Wydaje się, że nie wiadomo, kto był odpowiedzialny za ogólny projekt IOStreams (chciałbym przeczytać kilka podstawowych informacji na ten temat - czy ktoś zna dobre zasoby?);
Gdy zagłębisz się w bezpośrednią powierzchnię IOStreams, np. Jeśli chcesz rozszerzyć IOStreams o własne klasy, otrzymasz interfejs z dość tajemniczymi i mylącymi nazwami funkcji składowych, np.
getloc
/imbue
,uflow
/underflow
,snextc
/sbumpc
/sgetc
/sgetn
,pbase
/pptr
/epptr
(I jest prawdopodobnie jeszcze gorsze przykłady). To sprawia, że znacznie trudniej jest zrozumieć ogólny projekt i sposób, w jaki poszczególne części współpracują. Nawet książka, o której wspomniałem powyżej, nie pomaga tak bardzo (IMHO).
Stąd moje pytanie:
Gdybyś musiał oceniać na podstawie dzisiejszych standardów inżynierii oprogramowania (jeśli faktycznie istnieje jakakolwiek ogólna zgoda co do nich), czy IOStreams w C ++ nadal byłoby uważane za dobrze zaprojektowane? (Nie chciałbym podnosić swoich umiejętności projektowania oprogramowania z czegoś, co jest ogólnie uważane za przestarzałe).