Originariamente inviato da k.b
Cerchiamo pero' di non cadere nel solito discorso per cui si fa il paragone tra OOP fatta bene e procedurale fatta male.

Ad esempio, questa

e' una caratteristica del codice strutturato bene, non e' un'esclusiva della programmazione OO.
Mica tanto...con le procedure rischi di dover riguardare e cercare tutti i punti in cui viene utilizzato quel metodo per vedere se il risultato, una volta corretto, viene elaborato bene dalle altre procedure. Con le classi no (quasi mai, per meglio dire). Corretto il metodo di ricerca ci si deve preocupare solo dell'eventuale metodo di istanza (o di classe, o astratto) che ne usa il risultato.

$pippo = Procedura cerca_cliente;
$output_fattura = procedura crea_output_fattura($pippo);
$output_cliente = procedura crea_output_cliente($pippo);
$output_spedizione = procedura crea_output_spedizione($pippo);

In procedurale devi controllarti tutti i vari metodi di output sia per la coerenza dell'input che del metodo in sè. Con le classi no o non del tutto (in realtà dipende da come viene fatta la classe di output o la classe cliente, ma vabbeh non entriamo nel dettaglio).
Diciamo che su progetti complessi la probabilità di dover mettere mano in molte classi/metodi per correggere un bug è bassa, mentre con le procedure è alta. Su progetti piccoli con 5-20 classi è invece quasi identica.
Se proprio vogliamo dire, usare le classi semplifica le fasi di mantenimento ed espansione del progetto ma complica le fasi di progettazione.