Benim kendimce kodlamada gördüğüm eksiklikler;
** Yığıt sınıfının bellek üye degişkenine program içinden erişim tehlikeli. Örneğin konum değeri beş olduğu bir durumda ben program içinden bellek dizisine erişip bir elemanı silersem Yığıt nesnesinin tutarlılığı bozulmuş olacaktır.
** 'bellek = bellek[0..0];' kısmını anlamadım Salih, buradaki amaç bellek dizisini boşaltmak mı?
** 'if(temizle) goto atla;' temizle metodu her zaman true döndürdügüne göre bu satırın altındaki kodlar hiç çalışmayacaktır. (goto deyiminin işlemi atla: etiketine gönderdiğini varsayıyorum.) Ayrıca bu bölümde oluşturulan yığıt ekrana hiç yazılmıyor?
Benim görebildiklerim bunlar, elbette başka arkadaşlar daha başka yönlerden kodu inceliyip başka tavsiyeler verebilir. Bunların dışında bence güzel olmuş eline sağlık Salih.
Alıntı (Salih Dinçer):
> Çünkü public gibi davranıyor.
Bu durum sınıf ile test kodunun aynı modülde olmasından kaynaklanıyor. Eger sınıfı başka bir modüle taşırsan o zaman erişim belirteçlerinin etkisini görebilirsin.
Alıntı (canalpay):
> Çok fazla kod ve yazı yazılmış okuyamadım :-)
Hatırladın mı Can havalanı binasına baktıgımızda ne kadar güzel ve büyük bir yapı diye konuşmuştuk. İlk bakışta büyük bir kod parçası sizi ürkütebilir ancak o büyük kod parçasıda tek bir satır ile başlayıp bu hale gelmiştir. Uzun lafın kısası kodlar gözünü korkutmasın al yapıştır bir metin editörüne (veya Divid'e :)) sonra yazıcıdan çıktı al ve bir derleyici gibi giriş metodundan başla ve devam et, o sana yolu gösterecektir ;)
Alıntı (Kadir Can):
> ama biz küçükken hata atıyoruz.
Kadir düzeltme için teşekkürler. Bu küçük ve basit bir metot bile insanın nasıl hatalı kod yazabilecegine çok güzel bir örnek oldu. Ben bu metodun çıktısını alıp işyerimdeki panoma çiviledim ;)
public void Clear()
{
yedek = new Yigin!T(yigin.length);
yedek.yigin[] = yigin[];
yigin = yigin.init;
}
Kadir, Clear() metodunu güzel gerçekleştirmişsin. Özellikle 'yigin = yigin.init;' kısmı benim çok hoşuma gitti. Doğrusu ben bu işlem için bir döngü kullanırdım sanırım, bu çok daha temiz ve güzel bir kodlama olmuş. Yedekleme konusunda ise ben şöyle düşünüyorum; Yıgın sınıfı bir hizmet sınıfı amacı geliştiriciye yıgın yapısını kullanabilme imkanını daha kolay bir şekilde sağlamak. Ayrıca yıgın sınıfının temel görevi mevcut yıgın yapısının yönetimini sağlamak. Bundan dolayı geliştirici yıgın sınıfının mevcut halini saklamak istiyorsa bu onu ilgilendirmeli yıgın sınıfı olarak bizi degil. Yani en basit manada Clear() metodu yıgını temizlemeli, verilerin durumu onların esas sahibi olan geliştiriciyi ilgilendirir bizi degil ;)
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]