Q:
Speaking objectively, OOPni qanday yomon taraflari bor?
A:
Declarative OOPga hech qanday e'tirozim yo'q. Masalan, mashhur "Object Thinking" g'oyasini to'liq support qilaman.
Tepada aytilgan "cho'loq OOP" allaqachon to'liq imperative bo'lib ulgurgan va paradigmlarga xos idealogiya yetishmaydigan OOP. G'oya qolib implementatsiya detallariga yopishib olganmiz. O'sha implementatsiya esa authorning "kayfiyatiga bog'liq". Zarur bo'lib qolganida paradigmning naq belidan ketmon bilan soladigan featurelarni ham bemalol qo'shaverishgan. Static methodlar, DTO va umuman, public attributelar bunga yaqqol misol.
Va menimcha eng katta muammo "it works like in real world" ideasida. Dasturda objectlar orqali real world sifatida simulate qilish yaxshi idea sifatida qaralsa-da, bu juda inefficient (design patternlar bunga yaqqol misol). Ayniqsa, real worlddan building blocks sifatida nimalarni olishga hamma rozi bo'ladigan ilmiy asos bo'lmasa. Plus, Stepanov aytganidek, hamma narsa ham object emas. Masalan, algorithmni object yoki object behaviour sifatida qarashning o'zi antipattern. Boshida modularity orqali dasturchining ishini osonlashtirishni maqsad qilgan OOP imperative style, shared state va single responsibility prinspi orqasidan kirib kelgan "shallow class"lar (va shuning orqasidan paydo bo'lgan design patternlar) sabab naborot, dasturchi kod yozish davomida hayolida turishi kerak bo'lgan componentlar sonini absurd darajada oshirib yubordi.
Qisqasi, menimcha OOPda avval boshidan yaxshi ilmiy asos bo'lganida balki u hozirgidan ko'ra ancha consistent bo'lardi. Shunchaki shaxsiy qarashlar asosida qo'shilgan ba'zi g'oyalar sabab OOPning o'zida yetarlicha contradiction topish mumkin va odatda javob "it depends"ga borib taqaladi.
P.S. Tepada objective javob so'ralgan bo'lsa-da, ba'zi shaxsiy fikrlarim ham qo'shilib qolgan.
P.S.2. Buni 1-2 kun oldin Vohid akaning kanalida comment sifatida yozgandim. Hozir Ahmad akaning postini ko'rib share qilib qo'yay dedim. O'lganning ustiga tepgan degandek ))
Post #671
2.55K
- 👍 12
- 😁 2
- 🤯 1