Merhaba Ali,
Paylaşım için teşekkürler, bende şu sıralar resim işleri ile uğraşıyordum. Böyle bir şey şimdilik işimi görür gibi geliyor.
Diğer taraftan kodlama konusunda beni yanlış anlama ama berbat bir kod yazmışsın. Başında geçen class ibaresi dışında bu kodun sınıf olarak hiç bir anlamı yok. Açıkcası tek bir metodun içine her şeyi tıkıştırmışsin. Ayrıca yazım tarzın çok kötü tek bir satıra sığdırdığın kodları okumak ve anlamak gerçekten zor. Koda ilk bakıldığında görünmese bile kodun içinde hiç bir görevi olmayan else if yapısı bile var. else if kontrolü yazılmış içi boş bırakılmış, ya unutuldu yada yanlış tasarım yüzünden, sorunu çözmek için öyle kullanılmak zorunda kaldı bilemiyorum.
Forumda bir çok arkadaşın mesajında SOLID prensiplerinin adı geçiyor. Bu prensiblerden biri olan (S)ingle Responsibility'ye göre her modül tek bir sorumluluğa sahip olmalı, senin metoda bakınca, ne iş olsa yaparım abi der gibi.
Bir örnek vererek bitireyim; kodun başlarında bir mime testi ve buna istinaden bir kaynak nesnesi oluşturma işlemin var. if ve elseif kullanımı o kadar yoğun ki ilk bakışta çok karışık görünüyor. O kod parçasının sorumluluğu mime türüne göre yeni bir kaynak nesnesi oluşturmak, dolayısıyla onun yeri burası değil yeni bir metot olmalı bence, ayrıca if yerine switch cok daha okunaklı olacaktır. Buna göre benim yeni metodum şöyle olabilir.
public function kaynakHazirla($mime, $resim)
{
$kaynak = false;
switch ($mime)
{
case "image/jpg":
case "image/jpeg":
case "image/pjpeg":
$kaynak = imagecreatefromjpeg($resim);
break;
case "image/gif":
$kaynak = imagecreatefromgif($resim);
break;
case "image/png":
$kaynak = imagecreatefrompng($resim);
break;
}
return $kaynak;
}
Lütfen eleştirilerimi yanlış anlama, amacım sadece bildiğim kadarıyla daha iyisini gösterebilmek. Ancak neden daha iyi yazılımlar geliştirmeliyim diye düşünen, SOLID ve tasarım desenleri ile ilgilenen arkadaşların önce bu koda bakmalarını öneriyorum.