Bu yazı PHP - The Wrong Way alınmıştır. Güzel makale olduğu için paylaşmak istedim.
Her zaman nesne tabanlı programlama yapılmalı
Soyutlama güçlüdür. Gerçekten alerjim olan ve 90’larda tepki verdiğim şey tüm CORBA, COM, DCOM, nesne tabanlı saçmalıktı. Başlangıç olarak “Merhaba dünya” yazdırmak için 200.000 yöntem çağrısı yapmak çılgınca bir şey. Bu çok komik! Böyle bir tarz ile anılan bir programcı olmak istemezsiniz.
– Brendan Eich Coders at work - Reflections on the Craft of Programming
Birçok yazılım geliştirici ve birçok şirket, nesneye yönelik programlamanın bugün yazılım geliştirmenin tek makul yolu olduğunu düşünüyor. Nesne yönelimli programlamaya karşı çıkan herkes endüstrinin “geleneksel bilgeliğine” karşı çıktıklarının farkına varır.
Programlama blogları ve forumlarında, nesne tabanlı programlamayı savunan ve standart bir tanımları olmamasına rağmen ne hakkında konuştuklarını bildiklerinden emin olan birçok insan var!
Gerçek şu ki, nesne tabalı programlama sık sık gereksiz karmaşıklık yükünü doğurur!
Bilgisayar bilimcileri ve programcıları olarak, önyargıları bir kenara bırakmayı ve verilen bir soruna en iyi çözümü bulmayı öğrenmeliyiz.
Günümüzde PHP’nin en güçlü yanlarından biri, imperatif, fonksiyonel, nesne tabanlı, prosedürel ve reflective paradigmalar için verdiği destek. PHP, birçok sorunu farklı şekillerde çözmeyi mümkün kılan çok sayıda farklı araca sahip devasa bir araç kutusudur.
- Her zaman bir den fazla yol vardır!
Bir uygulama içindeki farklı sorunları tek bir özel programlama paradigmasına zorlamaya çalışırken, yaratıcı bir şekilde düşünmüyoruz ve verimli çalışmıyoruz!
Belirli bir programlama paradigmasını anlamanın en iyi yollarından biri, ilk olarak nasıl ortaya çıktığına bakmaktır. Gelişiminin nedeni neydi? Yeni bir düşünme biçimine ihtiyaç duyan diğer programlama paradigmalarında ne gibi problemler yaşandı? Gerçek bir dünya problemi miydi yoksa sadece akademik bir problem miydi? Ve o zamandan beri nasıl gelişti?
X kişisinin ne söylediği veya Y kişisinin ne tanımladığı önemli değil, paradigmalar bağlamında önemli olan onları oluşturan tarih.
Yazılım tasarımı yapmanın iki yolu vardır. Birinci yol, o kadar basit hale getirmek ki açık bir şekilde hiçbir eksikliğin olmamasını sağlamak. Ve diğer yol ise, bariz bir eksiklik olmayacak şekilde karmaşık hale getirmektir.
– C.A.R. Hoare
Devamı: Nesne tabanlı programlama (OOP) kısa tarihi
Yanlış yol: Her zaman nesne tabanlı programlama kullanılmalıdır.
Sorular ve Cevaplar:
Q: Nesne tabanlı programlamanın kötü mü ya da yanlış mı olduğunu söylüyorsunuz?
A: Hayır, tabii değil! Sorunları çözerken daima yalnızca ve daima nesneye yönelik paradigmayı düşünmenin ve kullanmanın kötü olduğunu söylüyoruz. Sadece siyah ya da beyaz şeklinde düşünmenin yanlış olduğunu söylüyoruz.
Tek bir uygulamada bile bir çok problem vardır. Çoklu paradigma bazen en iyi çözümdür ve bütün çözümler çözmeye çalıştığınız soruna bağlıdır.
Belirli bir sorunu uygun olmayan bir yolla çözmeye çalıştığınız kötü şeyler olur.
OOP olmadan nasıl programlanır (How to program without OOP)
Yeni ve alternatif bir bakış açısı olarak Brian Will, üç videoda programlamaya nesne yönelimli programlama ile başlamanın kötü bir fikir olduğunu neden düşündüğünü anlatıyor ve diziyi OOP dışı kodun nasıl yazılacağı konusunda birkaç notla bitiriyor.
Object-Oriented Programming is Bad - https://www.youtube.com/watch?v=QM1iUe6IofM
Object-Oriented Programming is Embarrassing: 4 Short Examples - https://www.youtube.com/watch?v=IRTfhkiAqPw
Object-Oriented Programming is Garbage: 3800 SLOC example - https://www.youtube.com/watch?v=V6VP-2aIcSc
Stop Writing Classes - https://www.youtube.com/watch?v=o9pEzgHorH0
Kaynaklar:
https://phpthewrongway.com
https://phpthewrongway.com/tr
Ek Önerdiğim Kaynaklar:
Difference between structured and unstructured programming - https://www.geeksforgeeks.org/difference-between-structured-and-unstructured-programming
Yapısal olmayan programlama - https://tr.wikipedia.org/wiki/Yap%C4%B1sal_olmayan_programlama
Goto - https://en.wikipedia.org/wiki/Goto
Procedural programming - https://en.wikipedia.org/wiki/Procedural_programming
Differences between Procedural and Object Oriented Programming - https://www.geeksforgeeks.org/differences-between-procedural-and-object-oriented-programming