Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Hungarian notation üzerine

Konu, 'Yazılım Geliştirme' kısmında RaiST tarafından paylaşıldı.

  1. RaiST

    RaiST Daimi Üye

    Kayıt:
    24 Temmuz 2002
    Mesajlar:
    1,932
    Beğenilen Mesajlar:
    0
    Meslek:
    linuxrocker
    Şehir:
    krynn
    Sizce Hungarian notation kullanılmalımı? yeterlimi ? işe yararmı..


    Geçenlerde linux kernel coding dökümanları okurken linus torvalds tarafından yazılmış olan bir cümle. ilgimi çekti:

    "Encoding the type of a function into the name (so-called Hungarian
    notation) is brain damaged - the compiler knows the types anyway and can
    check those, and it only confuses the programmer. No wonder MicroSoft
    makes buggy programs. "

    Bayağı bir anlamlı:)

    Sizde katılıyormusunuz?
     
  2. ee++

    ee++ Daimi Üye

    Kayıt:
    25 Temmuz 2002
    Mesajlar:
    1,122
    Beğenilen Mesajlar:
    0
    Şehir:
    Ankara
    Hungarian Notation artık terkediliyor. MS'in kendi mensuplari da bu sekilde davraniyor. Mesela Ms Press yayini olan Inside C# kitabinda da yazar bu konudan bahsediyordu. Ozellikle nesneye yonelik ve modern dillerde buna gerek yok. Netici itibari ile, anladiginiz sekilde yazin...
     
  3. mkarabulut

    mkarabulut Misafir

    Sanırım nesneye yönelik yaklaşım için hungarian pek anlamlı olmuyor...

    Yapısal programlamada ise belki farklı programcıların birbirlerinin kodlarını anlamalarına yardımcı oluyordur,ben hiç kullanmadım esasen...
     
  4. Mingitau

    Mingitau Misafir

    O ne? :D
     
  5. CrazyCat

    CrazyCat Daimi Üye

    Kayıt:
    25 Temmuz 2002
    Mesajlar:
    653
    Beğenilen Mesajlar:
    0
    Meslek:
    lecturer
    Şehir:
    Adana
    Charles Simonyi Tarihin en önemli buluşunu yapmamıştır.
    sadece insanlar nede olsa bunlar windows gibi düzenli olarak çökmeyi beceren bir program yazdıklarına göre bir bildikleri vardır diye düşünüp kodlamada kullandıkları metodu benimsemişler :D

    Asıl olan bir bildirim tarzınızın olması. ve sizin onu ii ce anlamanız. Ekip çalışması için ise bunun belgelendirilmesi yeterli.

    Nesneye yönelik yaklaşımda tasarım aşamasında nesneler belgelendirildiği için programcılar nesnelere ait özelliklerin veya metotların hangi tipte işlem yaptığını rahatlıkla hatırlarlar çünkü ellerinde tasarım notları vardır :)

    Yine de söylemek gerekirse Hungarian Notation çok da saçma diil. yapılabilecek bir kaç güzellikten en iisine sahip çıkılmış. Değişkenlerin başında tipini belirtme zekice bir yaklaşım. Sizde Simonyi e maledilmesinden gıcık alıyorsanız bir alternatif geliştirebilirsiniz :)

    Yine yapısal yaklaşımda tasarım için ekibe bir güzellik düşünmeyi ihmal etmemişler "Project Dictionary" :D her nekadar sadece veri leri ilgilendirsede diğer bildirimler içinde bir benzeri kullanılabiliyor.

    Bu arada MS in herhangi bir şeyi için Tovards ın fikrini sormak biraz sadistlik oluyor :D
     
  6. RaiST

    RaiST Daimi Üye

    Kayıt:
    24 Temmuz 2002
    Mesajlar:
    1,932
    Beğenilen Mesajlar:
    0
    Meslek:
    linuxrocker
    Şehir:
    krynn
    torvalds burda zaten fikrini belirtmek yerine, neden kernel progmlamada kullanmadıklarını acıklıyor.
    tabi ms e laf sokuyor ama o normal :)
     
  7. redial

    redial Misafir

    ve de mantikli...
     
  8. mkarabulut

    mkarabulut Misafir

    Ben şahsen Linus beyin açıklama ve eleştirilerini yanlı buluyorum, MS hakkındaki görüşleri bir yana, hadi hungarian da gereksiz bi şeyde, programcının kafasını karıştıran bir şey olduğunu kabul etmiyorum, bir düzen getirdiği muhakkak, ama gereksiz ve tercih edilmeyen bir yol olabilir o ayrı mesele..
     
  9. acehreli

    acehreli Ali Çehreli

    Kayıt:
    19 Ekim 2002
    Mesajlar:
    4,973
    Beğenilen Mesajlar:
    2
    Bence 'Hungarian notation' üzerine yapılan tartışmaların çoğu (buradakiler dahil); programların önce tasarımdan geçtiği, sonra da kodlandığı varsayımı üzerine dayanıyor. Halbuki kod çok nadiren değişmeden kalır. Değişkenlerin türleri de sık değişen şeyler arasındadır.

    Ben Martin Fowler'ın 'refactor mercilessly' (kodu acımadan değiştirin/parçalayın/oradan oraya taşıyın) önerisinin sadık bir uygulayıcısıyım. :) Bu, 'doğru çalışan kodu düzeltmeyin' mantığının da karşısındadır. Kod bozuksa bozuktur, bugünkü kullanımda doğru çalışıyor diye dokunmamak doğru değildir. (Bunları, kodun neden sürekli olarak değiştiğinin örnekleri olarak gösteriyorum.)

    Bugün 'int' olarak kullandığım değişkenin adının başına onun 'int' olduğunu belirten karakterler koyarsam, yarın onu örneğin adı HavaSicakligi adlı bir sınıfla değiştirdiğimde eski ad o değişkene uymamaya başlar.

    Değişkenler kavramları modellerler, türleri değil... Değişkenlerin adları, açık bir şekilde neleri modellediklerini göstermelidirler; türlerini değil...

    Örneğin ben de bazı programcılar gibi, gösterge türünden değişkenlerin bile başına 'p' koymam:

    Kod:
    void foo(HavaSicakligi * sicaklik)
    {
        sicaklik->azalt(3);
    }
    
    Aslında bu da programcıların kişisel olarak aldıkları konulardan... Ne kadar konuşursak konuşalım, bu konunun tartışması bitmez :)

    Ali