Şub062010

Sizce hata nerede?

Yazan : Zafer    06.02.2010 | Yazılım

Hepimiz kodlamalar esnasında fark edemediğimiz durumlar için önlem almayı unuturuz. Bu çok normal bir durumdur, çünkü oluşacağını bildiğimiz bir durum için elbette hepimiz bir şekilde bir önlem alabiliriz. Bir diğeri ise istisna olarak oluşabilecek durumlardır ki bunlara da programlama dillerinin sunduğu istisna yakalama yöntemlerini kullanarak engel olmaya çalışırız. Ancak bazı hatalar vardır ki bunlar en tehlikeli olanlardır. Ben bunlara sinsi hatalar diyorum, programlamada ise mantık hataları olarak biliriz. Gerçekte bir hata uyarısı verip kendilerini göstermezler ama bizim istediğimiz sonuç yerine farklı bir sonuç üreterek herşey yolundaymış gibi gösterirler, oysa hata oradadır ve işlem hatalıdır.

Biliyoruz ki bilgisayar programlama tarihinde kod yazan geliştiriciler bazen gerçekten çok büyük sorunlara yol açan küçük hatalar yapmışlardır. Hatta bu hataların derlendiği bir listeyi daha önceki yazılarımda bu site üzerinden sizlere sunmuştum. Bu arada bu küçük hataları gördüğünüzde bu hataları ben yapmam diye düşünebilirsiniz ama emin olun hepimiz bir şekilde bu basit ve küçük hataları yapıyoruz. Okumak isterseniz işte size o yazımın bağlantısı buradan buyurun.

Bugün bu kadar büyük olmamakla birlikte kendi kodladığım bir fonksiyonda meydana gelen hatayı sizlerle paylaşmak istedim. Amacım bu basit hatanın belkide herkesin karşısına bir gün çıkabileceği gerçeğini göstermek. Sizden ricam bu fonksiyonda yer alan hatayı sizlerin bulması ve telafi edilmesi için gerekli yöntemide yorumlarınızda paylaşmanız. Fonksiyonumuzu kısaca tanıtmak gerekirse, fonksiyonun amacı sayısal bir değer içinde bulunan virgülden (,)  sonraki basamakları kaldırmak. Örnek vermek gekerkirse 120,55 sayısı fonksiyonumuzdan çıktığında 120 olmalıdır. Yani virgülden sonraki kısmı atıp kalan kısmı fonksiyonu çağrıran yere veriyoruz. Fonksiyonumuz ise aşağıda, fonksiyon c# ile kodlanmıştır.

private string TutarTemizle(string ToplamTutar)
{
   string Tutar = "0";

   if (ToplamTutar != null)
   {
      if (ToplamTutar.IndexOf(',') > 0)
         Tutar = ToplamTutar.Substring(0, ToplamTutar.IndexOf(','));
   }
   
   return Tutar;
}

Peki, hata nerede? Bu fonksiyon gayet başarılı çalışıyor ama bazı değerler için hatalı sonuç döndürüyor. Siz hatalı sonuç döndürdüğü örnek bir değeri, neden sonucun hatalı olduğunu ve tasarımdaki hatayı bulabilecek misiniz?



Etiketler: ,

E-mail | Permalink | Trackback | Post RSSRSS comment feed 0 Yorum

Yorum ekle


(Gravatar simgesini gösterecek)

  Country flag

biuquote
  • Yorum
  • Canlı önizleme
Loading