@antonikucherov вы тут много понаписали, по интерфейсам к чему пришли? Только действия типа «do something”er или все же интерфейсы для доступа к данным все же признали? :)
если вам интересное моё мнение, то я считаю так:
1. Предпочитать стоит более прагматичный подход. Грубо говоря, зачем нам корректный код, который читать сложно?
2. Даже в стд. библиотеке куча примеров того, как, всё-таки, делать, наверное, не стоило. Нежелательно опираться на ошибки прошлого в качестве оправдания плохого нового дизайна. Даже если кто-то когда-то допустил ошибку в стд. библиотеке - исправить её уже невозможно по причинам гарантии обратной совместимости.