readonly value object'lerimde "withX" tarzı kopyalama metotlarını nasıl temiz yazarım?
`readonly`'de withX yeni instance döndürür: taşınabilir yol `new self` + named arguments, PHP 8.5'te doğrulama basitse `clone($this, [...])`.
Sor Bakalım
Yazılım mimarisi, kariyer, PHP, Go ve geliştirme süreçleri üzerine merak ettiklerini sor; cevapları burada herkese açık paylaşıyorum. (Sayfa 2/8)
Aklına takılan ne varsa çekinme. Sorular bana ulaşır; uygun olanları cevaplayıp bu sayfada yayınlarım. E-postan kesinlikle yayınlanmaz.
`readonly`'de withX yeni instance döndürür: taşınabilir yol `new self` + named arguments, PHP 8.5'te doğrulama basitse `clone($this, [...])`.
Org seviyesinde sahipsiz bir problemi üstlenip çözümü yazılı bir tech strategy'ye dökün, etkiyi commit'lerinizle değil ekiplerin çıktısıyla gösterin.
ID'yi W3C `traceparent` olarak üretip SQS message attribute'unda taşıyın, her sınırda OTel propagator ile enjekte edin, logger'a `trace_id` verin.
Kullanıcıyı build-time `ARG UID` ile sabitleyin, `COPY --chown` kullanın, named volume'de entrypoint yalnız `storage` ve `bootstrap/cache`'i chown etsin.
`openapi.yaml`'ı tek doğru kaynak yapıp contract-first gidin; drift'i bitiren şey yön değil, CI'da spec'i koda karşı doğrulayan yeşil contract testtir.
`WHERE status='pending'` partial index'ine `ORDER BY` kolonunu da katın, `FOR UPDATE SKIP LOCKED` ile eşleyin ve `'pending'`'i sorguya literal geçin.
İptalin yayılması için `r.Context()`'i her downstream çağrıya geçirin, zincirde `context.Background()` bırakmayın, side-effect'e `WithoutCancel` verin.
DB'de integer cent, modelde immutable `Money`: eşlemeyi tek bir `CastsAttributes` sınıfına toplayın, currency'yi aynı cast'ta ikinci kolon yapın.
`list<Order>` docblock'ları ve CI'da katı PHPStan'ı varsayılan yapın; davranış gerekince tek generic `Collection<T>`, güven sınırında concrete sınıf.
Terfiyi soyut bir hedef değil somut bir hamle yapın: kimsenin sahiplenmediği bulanık bir problemi bir çeyrek boyunca tanımından yayılmasına dek üstlenin.