Macar notasyonu sadece dilde mantıklı kullanıcı tanımlı tipler olmadan . Modern bir işlevsel veya OO dilinde, değerin "türü" hakkındaki bilgileri değişken adı yerine veri türü veya sınıfa kodlarsınız.
Birkaç cevap Joels makalesine atıfta bulunur . Bununla birlikte, örneğinin, kullanıcı tanımlı sınıfları (en azından uzun bir süre) desteklemeyen VBScript'te olduğuna dikkat edin. Kullanıcı tanımlı türlere sahip bir dilde, bir HtmlEncodedString türü oluşturarak aynı sorunu çözersiniz ve ardından Write yönteminin yalnızca bunu kabul etmesine izin verirsiniz. Statik olarak yazılmış bir dilde, derleyici herhangi bir kodlama hatasını yakalar, dinamik olarak yazıldığında bir çalışma zamanı istisnası alırsınız - ancak her durumda kodlanmamış dizeler yazmaya karşı korunursunuz. Macar notasyonları, programcıyı bir insan tipi denetleyiciye dönüştürür, tipik olarak yazılım tarafından daha iyi işlenen türden bir iştir.
Joel, "Macarca sistemler" ile "macarca uygulamalar" arasında ayrım yapar; burada "sistemler macarca", int, float ve benzeri yerleşik türleri kodlar ve "macarca uygulamalar" "türleri", daha üst düzey meta bilgi kodlar makine türünün dışındaki değişkenler hakkında, Bir OO veya modern işlevsel dilde, kullanıcı tanımlı türler oluşturabilirsiniz, bu nedenle bu anlamda tür ve "tür" arasında bir ayrım yoktur - her ikisi de tür sistemi tarafından temsil edilebilir - ve "uygulamalar" macarca, "sistemler" macarcası kadar fazladır.
Yani sorunuzu cevaplamak için: Sistem Macarcası yalnızca güvenli olmayan, zayıf yazılan bir dilde yararlı olacaktır, örneğin bir int değişkenine bir float değeri atamak sistemi çökertecektir. Macar notasyonu, hiçbir tür denetimi yapmayan oldukça düşük seviyeli bir dil olan BCPL'de kullanılmak üzere altmışlı yıllarda özel olarak icat edildi . Bugün genel olarak kullanılan herhangi bir dilin bu sorunu yaşadığını sanmıyorum, ancak gösterim bir tür kargo kültü programlama olarak yaşandı .
Eski VBScript veya VB'nin ilk sürümleri gibi kullanıcı tanımlı türler olmayan bir dille çalışıyorsanız, Macarca uygulamaları anlamlıdır. Belki de Perl ve PHP'nin erken sürümleri. Yine, onu modern bir dille kullanmak, saf kargo kültüdür.
Başka herhangi bir dilde, Macarca sadece çirkin, gereksiz ve kırılgandır. Tip sisteminden zaten bilinen bilgileri tekrarlar ve kendinizi tekrar etmemelisiniz . Değişken için, türün bu belirli örneğinin amacını açıklayan açıklayıcı bir ad kullanın. Değişmezleri kodlamak için tür sistemini ve değişkenlerin "türleri" veya "sınıfları" hakkındaki meta bilgileri - yani. türleri.
Joels makalesinin genel noktası - yanlış kodun yanlış görünmesi - çok iyi bir ilkedir. Bununla birlikte, hatalara karşı daha da iyi bir koruma - mümkün olduğunda - derleyici tarafından otomatik olarak algılanacak yanlış koda sahip olmaktır.