Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Yazı Tipi BoyutlandırıcıAa
  • Anasayfa
  • Teknoloji
    • Siber Güvenlik
    • Yapay Zeka
    • Donanım
    • Bilim
  • Yazılım
  • Savunma & İstihbarat
  • Oyun
  • Yaşam
    • Finans
    • Sinema
    • Dünyadan Haberler
  • İş Birliği
Okuma: DTO Tasarım Deseni: Aşırı Mühendislik mi?
Paylaş
Yazı Tipi BoyutlandırıcıAa
Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Ara
Bizi Takip Et
  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti
© 2026 Teknomers. All Rights Reserved.

Anasayfa » DTO Tasarım Deseni: Aşırı Mühendislik mi?

Yazılım

DTO Tasarım Deseni: Aşırı Mühendislik mi?

teknomers
Son güncelleme: 18 Mart 2026 18:02
teknomers
Paylaş
Paylaş

DTO’lar (Data Transfer Object), bazı geliştiriciler tarafından açıklanırken çok basit bir şekilde ele alınabiliyor, bu da konuyu anlaşılır kılıyor ancak derinlemesine bir anlayış kazandırmıyor. Bu makalede DTO’ların kullanımına dair avantajları ve pratik örnekler sunulacaktır.

Contents
  • Gerçek Dünya Örneği: Büyük Veriler ve Katmanlar
  • DTO’lar Burada Kullanılabilir Mi?
  • Gerçek Kullanımda Eksik Verilerin İşlenmesi
  • Doğru Yaklaşım: İş İhtiyaçlarına Odaklanmak
  • Sizce bu konuda ne düşünüyorsunuz? 😃

Birçok kişi şu soruları sorar:

  • DTO’ları neden kullanmalıyım?
  • Normal yöntemlerle yapamaz mıyım? Bu aşırı mühendislik değil mi?

Aşağıdaki örnekte bir DTO oluşturma sürecine bakalım:

namespace App\DTO;

class UserDTO
{
    public string $name;
    public string $email;
    public string $password;

    public function __construct(string $name, string $email, string $password)
    {
        $this->name = $name;
        $this->email = $email;
        $this->password = $password;
    }
}

DTO’yu kullanmak için bir örnek:

public function createUser(Request $request)
{
    $userDTO = new UserDTO(
        $request->input('name'),
        $request->input('email'),
        $request->input('password')
    );

    $user = $this->userService->createUser($userDTO);

    return response()->json($user);
}

Ancak biri şöyle diyebilir: DTO kullanmak zorunda mıyım? Bunun yerine şunu yapabilirim:

$user = $this->userService->createUser($request->all()); // $request->validate()

Bu noktada $fillable ile kitle atama korumam vardır.

Doğru: Haklısınız.

Gerçek Dünya Örneği: Büyük Veriler ve Katmanlar

Büyük verilerle çalıştığımızda ve verileri çeşitli katmanlardan ilettiğimizde genellikle diziler kullanırız. Aşağıdaki $history yapısına bir göz atalım:

Aynı yapıyı kullanıyorum:

  • HolidayShift
  • PublicHoliday
  • Errands
  • Leaves
  • OvertimeRequest

Bu yapılarda bazı öğeler 0, null veya hiç var olmayabilir.

public function getHolidayHistory($timeManagement, $overtime_schedule, $contract, $work_schedule, $publicHolidays, $attend)
{
    $holiday = [];

    foreach ($publicHolidays as $holiday) {
        if (Carbon::parse($attend->date)->between($holiday->start_date, $holiday->end_date)) {
            $latesSignInMinutes = $this->calculator->calculateLateSignIn($attend, $work_schedule->start_time);
            $earlyLeaving = $this->calculator->calculateEarlyLeaving($attend, $work_schedule->end_time);

            $history[] = [
                'absent'      => false,
                'type'        => 'holiday',
                'date'        => $attend->date,
                'item'        => $holiday,
                'attend_item' => $attend,
                'data'        => [
                    'sign_in'                        => $attend->sign_in,
                    'sign_out'                       => $attend->sign_out,
                    'late'                           => $latesSignInMinutes,
                    'late_deducted_percent'          => 0,
                    'early_leaving_deducted_percent' => 0,
                    'early_leaving'                  => $this->calculator->checkFromFingerprintOut($timeManagement, $earlyLeaving),
                    'deducted_percent'               => 0,
                    'overtime'                       => Carbon::parse($attend->duration)->hour,
                    'amount_overtime'                => $this->presentPublicHolidays->getPresentPublicHolidayAmount(
                        $overtime_schedule,
                        $contract,
                        $attend->duration
                    ),
                ],
            ];
        }
    }

    $history[] = [
        => true,
        => ,
        => $attend->date,
        => $attend,
    ];

    return $history;
}

Peki burada potansiyel problemler görebiliyor musunuz? Kodlama açısından, hata almadan çalışabiliriz ancak gerçek dünyada her zaman %100 güvenilir değiliz.

Büyük özellikler için test kullanımını benimsiyoruz; ancak bu gibi durumlarda TDD her zaman uygulanabilir olmayabiliyor. Dolayısıyla, bazı öğeler yoksa her kullanımda $history için her seferinde yazmamız gereken kod:

isset($history[]) ? $history[] : 0; // or
$history[] ?? 0;

DTO’lar Burada Kullanılabilir Mi?

$history[] = new AttendanceHistoryDTO(
    absent: false,
    type: ,
    date: $attend->date,
    item: $holiday,
    attend_item: $attend,
    data: new AttendanceDataDTO(
        : $attend->sign_in,
        : $attend->sign_out,
        : $latesSignInMinutes,
        : $this->->(, ),
        : 0,
        : Carbon::($attend->duration)->hour,
        : $this->presentPublicHolidays->(
            $overtime_schedule,
            $contract,
            $attend->duration
        ),
        : 0,
        : 0,
    )

Artık $history‘yi kullanırken endişelenmemize gerek yok:

isset($history[]) ? $history[] : 0;

Çünkü varsayılan değerler artık DTO’nun içinde saklı.

Gerçek Kullanımda Eksik Verilerin İşlenmesi

Aşağıda gerçek kullanım örneği:

isset($content?->data?->total_late) ? $content?->data?->total_late : 0;

Neden hala bunu yapıyorum?

DTO’lar kullanıldığında:

  • Varlık olmayan bir şey yazarsanız, editörünüz sizi uyarır.
  • PHP, geliştirme ve test sürecinde bir istisna fırlatır — bu iyi bir durumdur.
  • Ancak üretimde istisnalara sahip olmak her zaman iyi bir fikir değildir. 😅

Doğru Yaklaşım: İş İhtiyaçlarına Odaklanmak

DTO’ları kullanmanın birçok doğru yolu vardır. Ancak her zaman öncelikle iş ihtiyaçlarına odaklanmalısınız. Problemi anlamak, ardından doğru aracı seçmek gerekir.

Kişisel olarak, tercih ettiğim yöntem:

Kodu kötü yaz → normal hale getir → sonra en iyi çözüm nedir diye sor.

Sizce bu konuda ne düşünüyorsunuz? 😃

Kaynak: Orijinal Makale

Laravel AI SDK 17 Mart’ta Stabil Hale Geliyor: Değişiklikler ve Göndermeden Önce Kontrol Edilmesi Gerekenler
Yeni Yayınlandı: API’leri Ustalıkla Öğrenmek için Bir Sandbox (Laravel ile Geliştirildi)
Laravel için Basit Bir API İzleme Aracı Geliştirdim (Datadog Gerekmeden)
2026’da Laravel Dağıtım Durumu: Neler Değişti ve Hala Ne Zorlayıcı?
WordPress Sitesi Nasıl Kurulur?
Bu Makaleyi Paylaş
Facebook Bağlantıyı Kopyala Yazdır
Paylaş
Önceki Makale Asus’un Yeni Oyun Monitörüyle Oyununuzda Fark Yaratın
Sonraki Makale Acil Uyarı: Büyük Perakendeciler ve Ödeme Platformlarına Saldırı!

Sanal Medya

FacebookBeğen
452Takip Et
PinterestSabitle
237Takip Et

Son Eklenenler

Amseatec Criss Cross Ofis Sandalyesi: Konforun ve Şıklığın Buluşması
Genel
Microsoft, Exchange Server’da OWA Light’ı Acil Kapatıyor!
Siber Güvenlik
Kritik: Microsoft RoguePlanet Defender Açığını Acil Olarak Kapatıyor
Siber Güvenlik
2027’de AI sunucuları, veri merkezi enerji tüketimini artıracak
Donanım
Palworld’tan Önemli 1.0 Mod Uyarısı Geliyor
Oyun
Otonom Araçlar Acil Durum Ekiplerini Rahatsız Ediyor! Feds Tepkili
Genel
//

Siber güvenlik, yapay zeka ve savunma sanayiinden; finans ve sinema dünyasına uzanan geniş bir yelpaze. Teknomers; teknoloji, strateji ve yazılım dünyasını sade bir dille sizlerle buluşturuyor.

Kurumsal

  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti

Kategoriler

  • Teknoloji
  • Oyun
  • Sinema
  • Siber Güvenlik
  • Bilim
  • Finans
  • Dünyadan Güncel Haberler

Populer

  • TV'de Ücretsiz İzlenebilen Şifresiz Erotik Kanallar (2025 Güncel Frekans Listesi)

  • The Last of Us PC Kontrolleri: Hızlı Silah Değiştirme ve Tüm Tuşlar (2025)

  • Hogwarts Legacy'de Odaklanma İksiri Nasıl Yapılır?

Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Bizi Takip Et
© 2026 Teknomers. All Rights Reserved.
Welcome Back!

Sign in to your account

Kullanıcı Adı veya E-posta Adresi
Şifre

Şifrenizi mi unuttunuz?