Would you try to persuade your client that using object-oriented
programming is much cleaner?
Penso che tu debba istruirti di più sui paradigmi di programmazione. Il codice programmato orientato agli oggetti non è necessariamente più pulito e, di fatto, non è universalmente applicabile. Inoltre, un buon coder orientato agli oggetti sa come fare un buon lavoro usando un metodo procedurale / modulare (con paradigmi funzionali e dichiarativi, è un po 'più difficile, ma non dovrebbe essere eccessivamente difficile per un buon programmatore arrivare - tramite lettura e deduzione - a una soluzione accettabile FP / dichiarativa.)
Quasi non puoi mai, ripeto, non puoi quasi avere una buona conoscenza di quando e come utilizzare l'Orientamento degli oggetti senza avere una buona comprensione della programmazione procedurale e modulare. OO è molto più di una semplice dichiarazione di classi e gerarchie di ereditarietà.
Or would you try to follow what he required and give him crappy code?
Se non riesci a scrivere codice valido proceduralmente, dubito che tu possa scrivere un buon codice in un modo orientato agli oggetti. Periodo. Non sto cercando di giudicare qui, ma questo deve essere affermato.
L'Orientamento degli oggetti è un'estensione della programmazione procedurale e modulare. Object-Orientation fornisce semplicemente strumenti che, se utilizzati in modo appropriato, offrono meccanismi migliori con cui affrontare i problemi di incapsulamento, accoppiamento, coesione e riutilizzo / estensibilità del codice.
Ma tutti questi problemi non sono inerenti e unici a OO. Esistono nel codice procedurale / modulare (e in altri paradigmi). Questo è il tipo di problemi di complessità che, nella sua essenza, è indipendente dal paradigma. Se non riesci a gestirli senza la colla OO, è improbabile che tu possa gestirli con essa.
=========
Tornando alla tua domanda iniziale, se provare a convincere il tuo cliente. Dipende. Come ha detto Sean McMillan, se il cliente sta semplicemente tentando di gestire in modo microscopico lo sforzo di sviluppo per qualche ordine del giorno (leggi, politica dell'ufficio), si allontana. Persone che fanno progetti di sabotaggio per incolpare qualcun altro o per spingere un particolare ordine del giorno. Non vuoi essere coinvolto in questo.
OTH, potrebbero esserci altre ragioni per questo requisito. Molti negozi integrati, per il bene o il male, scelgono di mettere molti vincoli su ciò che si può fare con C ++ (senza metodi virtuali, senza eccezioni, per esempio). Alcune volte si fa in modo scottante. Altre volte, ci sono validi motivi tecnici per farlo.
Quindi devi capire perché il cliente vuole evitare il codice OO. E se puoi supporre che non ci sia un'agenda politica (nessuna bandiera rossa), allora dovresti fare la cosa professionale da fare, che è semplicemente fare il codice procedural / modular, e fare un buon lavoro.
Non c'è davvero alcuna scusa per fornire codice scadente, indipendentemente dal paradigma di programmazione. Se non puoi produrre un codice accettabile con un paradigma, non puoi certamente produrre codice accettabile in generale.