Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?

Selam, bugün linkedinde Emre Savcının şöyle bir gönderisine denk geldim:

Allah'ım bizi yazılım projelerinde utils mutils, common mommon, dto mto görmekten koru, bunları yazan yazılımcılara doğru yolu göster, amin 🙏

Ne düşünüyorsunuz.

Gelen bazı yorumlar:
S: Dto mto yerine ne kullanmak gerekiyor peki🙂
C: **Senaryoya göre mimari ve yapılandırma değişebileceği gibi şöyle genel geçer bir tavsiye verebilirim.

1-
Birebir DTO mapping kullanmanılmasının amacı katmalar arası dönüşüm. Oysa ki hexagonal mimaride katman bağımlılıkları dışarıdan içeriye doğru olabilir. Yani belirli durumlarda doğrudan domain objeleri dış katmanlara iletilebilir.

2-
Bunun yapılamadığı durumlarda CQRS ile command queryler ve request response objeleri App ve API katmanında tanımlanıp kullanılabilir, sadece bu katmanlar arasında iletişim sağlanacak şekilde. Api -> App/Presentation -> Domain

3-
Harici uygulamaların verilerini kullanmak bir araya getirmek ve dönüştürmek istenilen durumlarda anti-corruption layer kullanılabilir. Kendi projemizi ve domainimizi kirletmeden dış mihrakları orada çözümleyebiliriz.**

S: Utils’in zararı ne, açıkçası anlayamadım. Her yerde kullanacağın bir func’ı nerede tanımlamak / depolamak gerekiyor ki?
C: **Her yerde kullanacağın bir fonksiyon örneği verebilirsen daha iyi yanıtlanabilir. Ama genel bir cevap olması için bkz: shared kernel.

Mesela String dediğimiz şey her yerde kullanılan bir şey, peki utils paketinden mi geliyor yoksa kendine ait paketi mi var? Bu mantıkla düşünebiliriz.**

Başka birinin verdiği cevap:
Util classlarin kullanimi iyi bir pratik degil. Sebepleriyle ilgili guzel bir yazi var, asagidan bakabilirsiniz.
https://lindbakk.com/blog/utility-and-helper-classes-a-code-smell

    aghabalaguluzade Genelde Go yazıyor ve mikroservis mimarisi ile geliştirme yapıyor. Java ya da C# kullansaydı, monolit uygulamalar geliştirseydi farklı şeyler söylerdi sanırım. Go kullananların kaçındığı ya da Go'da mümkün olmayan şeylerin diğer dilleri kullanan insanlar tarafından best-practice diye yayınladığını görebilirsiniz. Orada iyi ki DTO kullanmıyorum demek istemiyor; iyi ki Go gibi sade bir dil kullanıyorum demek istiyor. Yoksa kendisi de DTO kullanıyor gibi struct kullanıyor, avantajı ise bunun dilin bir özelliği olması.

    Utils konusunda haklı. Hangi dilde olursa olsun, anonim helper fonksiyonlardan kaçının. PHP de yavaş yavaş bunlardan kurtuluyor, her birini artık bir namespace içine alıyor: DateTime ve türevleri, PDO, SPL vs gibi ama daha çok yolu var.

    Go yazıyorsanız Go kafasıyla, PHP yazıyorsanız PHP kafasıyla düşüneceksiniz. Yani ortama uyum sağlayacaksınız; ortama uyum sağlamayı başarabilenler hayatta kalır. Go benim çok hoşuma giden bir dil ama ilgilenemiyorum...