Будете ли вы пытаться убедить своего клиента, что использование объектно-ориентированного программирования намного чище?
Я думаю, что вам нужно больше изучать парадигмы программирования. Объектно-ориентированный программируемый код не обязательно является более чистым и фактически не всегда применим. Кроме того, хороший объектно-ориентированный кодер знает, как выполнять хорошую работу, используя процедурный / модульный (с функциональными и декларативными парадигмами это немного сложнее, но для хорошего программиста не должно быть слишком сложно прийти - через чтение и дедукцию - к приемлемому ФП / Декларативному решению.)
Вы почти никогда не можете, я повторяю, вы почти не можете хорошо понять, когда и как использовать объектную ориентацию, не имея хорошего понимания процедурного и модульного программирования. OO - это намного больше, чем просто объявление классов и иерархий наследования.
Или вы попытались бы следовать тому, что он требовал, и дать ему дерьмовый код?
Если вы не можете написать хороший код процедурно, я сомневаюсь, что вы можете написать хороший код объектно-ориентированным способом. Период. Я не пытаюсь здесь судить, но это нужно утверждать.
Объектная ориентация является расширением процедурного и модульного программирования. Объектно-ориентация просто предоставляет вам инструменты, которые при правильном использовании дают вам более эффективные механизмы для решения проблем инкапсуляции, связывания, связности и повторного использования кода / расширяемости.
Но все эти проблемы не являются неотъемлемыми и уникальными для ОО. Они существуют в процедурном / модульном коде (и в других парадигмах в этом отношении). Это тип проблем сложности, который по своей сути не зависит от парадигмы. Если вы не можете справиться с ними без ОО-клея, то вряд ли вы справитесь с ними.
=========
Возвращаясь к исходному вопросу, стоит ли пытаться убедить вашего клиента. Это зависит. Как сказал постер Шон Макмиллан, если клиент просто пытается микро-управлять усилиями по разработке какой-либо программы (читай, офисная политика), уходите. Люди, которые занимаются саботажем проектов, обвиняют кого-то другого или выдвигают определенную повестку дня. Вы не хотите участвовать в этом.
OTH, могут быть другие причины для такого требования. Многие встроенные магазины, правильно или неправильно, предпочитают накладывать множество ограничений на то, что вы можете делать с C ++ (например, без виртуальных методов, без исключений). Иногда это делается по-колено. Иногда есть веские технические причины для этого.
Таким образом, вы должны понять, почему клиент хочет избежать OO-кода. И если вы можете предположить, что нет политической повестки дня (нет красных флажков), тогда вам следует заняться профессиональным делом, то есть просто сделать код процедурным / модульным, и хорошо поработать над этим.
На самом деле нет оправдания доставлению дрянного кода независимо от парадигмы программирования. Если вы не можете создать приемлемый код с одной парадигмой, вы наверняка не сможете создать приемлемый код в целом.