Tam Sürümünü Görmek İçin : Hungarian notation üzerine
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?
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...
mkarabulut
14/11/2002, 07:58
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...
Mingitau
14/11/2002, 09:10
O ne? :D
CrazyCat
14/11/2002, 09:25
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
torvalds burda zaten fikrini belirtmek yerine, neden kernel progmlamada kullanmadıklarını acıklıyor.
tabi ms e laf sokuyor ama o normal :)
mkarabulut
14/11/2002, 10:30
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..
acehreli
21/11/2002, 19:34
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:
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
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.