Здравствуйте, sch, Вы писали:
sch>Наверное это все, что я хотел сказать. Засим благодарю коллег за внимание и прошу прокомментировать сказанное автором и сказанное мной.
Я делю задачи на два типа: прикладные задачи и задачи, обеспечивающие работу прикладных задач. Второй тип — это библиотеки, фреймворки, компиляторы и т.п. Пока не могу подобрать правильное обобщённое название.
Не всегда можно (да и нужно) добиваться простоты задач второго типа. Главное, чтобы они обеспечивали простоту реализации задач первого типа.
Поэтому, я бы пожалуй сказал так. Для прикладных задач важнее всего простота, т.е. второй вариант дизайна. Для остальных задач более подходит первый вариант дизайна.
При этом, даже такая вещь как компилятор, который я уже успел отнести к задачам второго типа, может состоят из прикладного и более низкого системного уровня. Т.е. даже в этом случае можно применять оба варианта дизайна к разным частям приложения.
В общем, есть код, который должен быть простым, потому что его много и это наиболее рутинная часть приложения. Есть код, задача которого обеспечивать простоту первого типа кода. И вот его простота меня лично мало волнует.
Если нам не помогут, то мы тоже никого не пощадим.