
Bir önceki çalıştığım firmada çok güzel bir yaklaşımla mapping işlemleri yapıyorduk. AutoMapper gibi kütüphaneler kullanmadık.
Çünkü AutoMapper, bazı görünmeyen ve fark edilmesi zor hatalara yol açabiliyor. Örneğin:
- AutoMapper bazı görünmeyen, farkedilmeyen hatalara yol açabilirdi (null mapping, unutulan bir property gibi)
- Birisi kodu refactor ederken istemeden bozabilirdi. Mapping runtime’da çalışır ve dolayısıyla hata çalışma zamanında farkedilir.
- Oluşan hatayı debug ile takip etmek zordur, daha çok önsezilerinle hareket etmek zorunda kalırsın.
- Yoğun mapping işlemlerinde kaynak tüketimini arttırır çünkü reflection kullanır.Test için ayrıca çaba harcarsın.
Bu yüzden biz mapping işlemlerini doğrudan extension methodlar ile, açık ve test edilebilir bir şekilde yönetiyorduk. Refactor dostu, okunabilir ve kontrol tamamen bizdeydi.
Bu tür kütüphaneler yerine basitçe nasıl mapping işlemleri yaptık aşağıda:
public record CompanyDto(
long TenantId,
string CompanyName,
string Email
);
public class Company
{
public long TenantId { get; set; }
public string CompanyName { get; set; }
public string Email { get; set; }
public string Password { get; set; }
}
public static class CompanyMappingExtensions
{
public static CompanyDto ToDto(this Company entity)
{
return new CompanyDto(
entity.TenantId,
entity.CompanyName,
entity.Email
);
}
public static Company ToEntity(this CompanyDto dto)
{
return new Company
{
TenantId = dto.TenantId,
CompanyName = dto.CompanyName,
Email = dto.Email,
Password = "" // veya bir default değer
};
}
}
Bir yanıt yazın