OOP'de ustalaşmak

Selam dostlar.
Bir süredir kendimi OOP üzerine geliştirmeye, temiz ve bakımı yapılabilir kod yazmaya çalışıyorum. Bunun için kendi projelerimi yazıyorum fakat projeleri yazdıkça çok fazla eksiğim olduğunu fark etmeye başladım. Örneğin bir API geliştirirken servis katmanında yaptıklarımın bazen birbirini tekrarladığını fark edip daha generic (kelimenin Türkçesini yazınca anlaşılmıyor…) yapılar oluşturmaya çalışıyorum ancak bu düzenlemeleri yaparken kod o kadar karmakarışık bir hal alıyor ki neler olup bittiğini projeyi geliştiren kişi olarak ben bile anlayamıyorum. Teorik bilgileri artık yalayıp yuttum diyebilirim ama yine de kod yazarken teorideki hangi bilgileri nereye uygulayacağımı tam olarak çözemiyorum. Konu hakkındaki eksiğimi belki giderir diyerek 2 kitap aldım, bir süredir de bunları okuyor ve uygulamaya çalışıyorum. kitaplar şunlar:

  1. Data Structures and Algorithms in Python (Michael H. Goldwasser, Michael T. Goodrich, Roberto Tamassia)

  2. Clean Code: A Handbook of Agile Software Craftsmanship (Robert Cecil Martin)

Mentorum olarak gördüğüm bir abim ise “Sürekli python’la çalıştığın için kafanda oturmuyor. C# ya da Java gibi bir dille bir şeyler yapmaya çalış” tarzında bir şey söyledi. Sizce bu iki dilden birinde bir şeyler geliştirmek temiz ve bakımı yapılabilir kod yazma yeteneğini geliştirir mi?

2 Beğeni

Python nesne tabanlı çalışma konusunda eksik olabilir. Örneğin interface implements kullanımını python üzerinden direkt bu yöntemlerle kullanmazsın. Farklı yöntemlerle kullanırsın elbet ama bu tam olarak kafada nasıl oturur bilmiyorum.

Kendi tecrübem üzerinden ilerlersek Java ile design pattern ları çalışmayana kadar pythonda nesne tabanlı bilgim benim için yeter sanıyordum. Javayla bayağı bilgi edindim.

Daha sonra ise Java bana yetiyor derken dart dilinde bir kaç proje geliştirdim ve nesne tabanlı yaklaşımın sadece dil ile ilgili değil bakış açısıyla ilgili olduğunu öğrendim.

Tecrübesi benden daha fazla olan abilerim için benim son görüşüm onlar için eskilerden bir adım olacaktır belki de.

Ortalama 5 yıllık yazılım deneyimimden yola çıkarak farklı dilleri de az da olsa deneyimlemeni önerebilirim. Bu nesne tabanlı yaklaşımında farklı bakış açıları kazandırabilir.

Eğer proje yaparken zorlanıyorsan daha basit yapılara sahip küçük projelerle temiz kodu uygulamaya çalışıp sonra daha komplike projelere geçebilirsin aslında.

Tabi bunlar sadece kısa bir deneyimin bende oluşturduğu düşünce. Hatam, yanlış önerim varsa affola. Umarım yanlış yönlendirme yapmamışımdır.

3 Beğeni

Şu temiz kod yazma işinde ben de çok kirliyim. :grin:

OOP başka bir konu clean code farklı bir konu her oop tasarlanmış kod clean olacak diye bir kural yok.

OOP a ihtiyacınız olursa oop öğrenirsiniz. İhtiyacını olursa kafanızda şekillenir. Kafanızda oop şekillenirse zaten iş çözülür.

Sırf oop öğrenmek için opp öğrenmeye çalışmak zor.

Aslında OOP diye bir şey yok desem marjinak kaçar.

Aslında hepsi özünde .data ve .code sectionlarında duran ve pointer to pointer larla yönetilen bir bellek modeli. Diller bir yanılsama.

1 Beğeni