OOP používám jen tam kde musím a kde to přináší efekt, například když potřebuju interface s dědičností. Proč? Myslím že nevhodné použití OOP přináší celou řadu problémů:
Neduh číslo 1: automatické generování tříd z datového modelu s předgenerovanými metodami.
Vznikne džungle tříd, které nedělají vůbec nic, stovky zdrojových souborů, které by při trošce inteligence šly nahradit jedním univerzálním rozhraním pro přístup k datům (kdo tvrdí že to nejde kvůli typové kontrole, tak nejspíše nikdy neslyšel o validačních funkcích).
No a do takto vygenerovaného bludiště programátoři ukryjí vlastní kód. Ten se mezi tisíci vygenerovaných metod hledá obtížně, a při přegenerování kvůli změně schématu se většinou ztratí nebo aspoň rozbije.
Neduh číslo 2: nadužívání objektů a tříd
Třídy jsou vhodné tam, kde je potřeba objekty dynamicky nahrazovat za jiné se stejným rozhraním. U interních datových struktur, kde to nedává smysl, bych to nepoužil. Například pro formulář o 100 položkách nemá smysl vytvářet 100 různých objektů, které nedělají nic jiného než že zapouzdřují základní typy, komplikují a zpomalují manipulaci s nimi, a žerou paměť.
Neduh číslo 3: gettery a settery na úplně všechno
Myslím že gettery a settery mají místo v rozhraní modulu, který komunikuje s vnějším světem, a i tam jen v případě, že reálně očekáváme, že položka v budoucnu např. změní typ, nebo že bude potřeba nějaká reakce. Spousta programátorů je ale cpe úplně všude. V kombinaci s předchozím to znamená, že veškerý přístup k datovým strukturám se dělá pomocí řetízku volání getterů a setterů, což je nepřehledné na zápis, zpomaluje běh, a nemá žádný dobrý důvod. Pokud navíc předpokládáme, že některé položky struktury nejsou vyplněné, musíme každý jednotlivý řádek uzavřít do vlastního try .. catch bloku, nebo k němu napsat velmi dlouhý if().
Neduh číslo 4: špagetový kód
Nadměrné používání objektů a metod způsobuje, že většina metod jen předává své parametry jiným metodám a nedělá vůbec nic. Pro nalezení výkonné části musíte projít třeba deset úrovní. V takovém kódu se nedá vyznat a špatně se ladí.
Ale pokud se objekty používají s mírou a rozumem, mohou být užitečné.