C # 'nın Pascal kasası yöntem isimlerinin ardındaki felsefe / akıl yürütme nedir?


22

C # öğrenmeye yeni başladım. Java, C ++ ve Objective-C'deki bir arka plandan gelince, C # 'nın Pascal-adlarını oldukça benzersiz ve ilk başta kullanması biraz zor buluyor. Bunun arkasındaki sebep ve felsefe nedir?

Sanırım C # özelliklerinden kaynaklanıyor. Objective-C'den farklı olarak, yöntem adlarının örnek değişkenlerle tam olarak aynı olduğu durumlarda, C # ile durum böyle değildir. Özellikleri olan hedeflerden birinin (onu destekleyen dillerin çoğunda olduğu gibi) özelliklerin gerçekten değişkenlerden ve yöntemlerden ayırt edilemez olmasını sağlamak olacağını tahmin ediyorum. Dolayısıyla, C # 'da "int x" olabilir ve karşılık gelen özellik X olur. Özelliklerin ve yöntemlerin ayırt edilemez olmasını sağlamak için, tahmin ettiğim tüm yöntem adlarının da büyük harfle başlaması beklenir. (Bu sadece şu ana kadar C # hakkında bildiklerime dayanan hipotezim - hala öğreniyorum). Bu meraklı rehberin nasıl ortaya çıktığını bilmek çok meraklıyım.

(EDIT: Pascal kasası ile demek istediğim, PascalCase (temel olarak camelCase'dir ancak büyük harfle başlar). Yöntem adları genellikle çoğu dilde küçük harfle başlar)


Belirli bir ailenin tüm üyelerinin tüm evlerinde bütün evlerinde tuhaf bir nişanla boyanmış olduğunu gördüyseniz, neden bu kadar garip bir şey yaptıklarını merak eder misiniz?
Nocturne

1
Sence neden Pascal davası deniyor ?
R. Martinho Fernandes

1
@Martinho Fernandes bu stil için standart addır, Google'ı kontrol edin
Andrey

1
@ Gece - Evet. Merak ediyorum :)
Joel Etherton

1
"Yöntem adları çoğu dilde küçük harfle başlar" tecrübelerime göre yanlıştır. Büyük harfle başlayan sözleşmeler - kelime ayrılmasının altını çizen veya içermeyen - ancak resmi dil kurallarında bulunmamakla birlikte oldukça yaygındır. Dil standartlarının çoğunda herhangi bir resmi stil rehberi bulunmamaktadır. Oldukça az sayıda dil (çoğunlukla eski) zaten durumu göz ardı ediyor ve çoğu zaman küçük harfli bir kongre düzenliyor; .
Steve314

Yanıtlar:


27

Tat meselesi. Birisi bir zamanlar Pascal stilini isimler için kullanmaya karar verdi ve standart oldu.

Pascal'ın halefi Delphi'nin mimarı Anders Hejlsberg olduğunu tahmin ediyorum . Vaka stili orada C # ile aynıdır.


bu benim cevabım olacaktı. : P
DevSolo

@DevSolo üzgünüm, soru Stackoverflow :) iken cevap yazmaya başladım :)
Andrey

Sanırım kökler eski tarihe daha da derine iniyor - aşağıdaki cevabımı görün :)
davka '

20

Nedenlerle ilgili sorular soruyorsanız, işte atın ağzından doğrudan bir tanesi:

Pascal Blog ve Camel Casing'in etrafındaki tarihi MSDN Abras’tan Brad Abrams’ın makalesi

Çerçevenin ilk tasarımında, adlandırma stiliyle ilgili yüzlerce saatlik tartışmalar yaptık. Bu tartışmaları kolaylaştırmak için birkaç terim oluşturduk. Tasarım ekibinin kilit üyesi Anders Heilsberg ( Turbo Pascal'ın özgün tasarımcısı ) ile Pascal programlama dili tarafından popüler olan gövde stili için Pascal Casing terimini seçmemiz şaşırtıcı değil ...

Pascal Casing kongresi her kelimenin ilk karakterini (iki harf uzunluğundaki kısaltmalar dahil) büyük harfle yazdı ...

Ve burada tasarım yönergeleri: Sınıf Kütüphanesi Geliştiricileri için Tasarım Kuralları

Bu kurallar, sınıf kütüphanesi tasarımcılarının farklı çözümler arasındaki dengeleri anlamalarına yardımcı olmak amacıyla hazırlanmıştır. İyi kütüphane tasarımının bu tasarım kurallarını ihlal etmenizi gerektirdiği durumlar olabilir. Bu gibi durumlar nadir olmalı ve kararınız için sağlam bir gerekçe sunmanız önemlidir. Bu bölüm, .NET Framework'teki türler için adlandırma ve kullanım yönergelerinin yanı sıra genel tasarım modellerini uygulamak için yönergeler sağlar ...


2
TurboPascalbir bebek Philip Kahn(aka BorlandMicrosoft unutmak için çok uygundur). Politika ....
davka

1
İlk bağlantıdaki yorumlar harika, lol.
jmq

7

Felsefeyi bilmiyorum ama en azından Win32 API günlerinden beri Pascal kasaları Microsoft platformlarında yaygın görünüyor.


8
ve hala ondan nefret ediyorum, lol.
jmq

2

Arkasında belirli bir felsefe olduğunu sanmıyorum. Kurallar olması gerekiyordu ve onu etkileyebilecek birçok nokta vardı:

  • Herhangi bir ön ek notundan kurtulmak istediler (burada Macarca oku)
  • Yerel / özel üyelerin ve genel üyelerin sadece isimlerini okuyarak ayırt edilmesini istediler.
  • C # kodunun Java koduna benzemesini istemiyorlardı (yoğun olarak deve kılıfını kullanıyor)

Bu adlandırma kılavuzunun .NET çerçevesi için olduğunu ve özellikle C # için olmadığını unutmayın. Büyük küçük harf duyarlı bir dil olan VB.NET'te, sözleşme aynı kalır, ancak özel ve kamu üyelerini durumdan ayırt etmek için kullanamazsınız.
R. Martinho Fernandes

@Martinho: kabul etti. ama yine de hissediyorum nedenlerinden biriydi.
decyclone

7
+1: "C # kodunun Java koduna benzemesini istemediler (yoğun deve kılıfı kullanıyor)": Burada olduğunuzu kesinlikle düşünüyorum!
Giorgio

İronik olan şu ki, bazılarının Macar gösterimine olan nefretlerine rağmen, Java ve C #, değiştirilebilen bir nesneye "sahip" referans türü alanları ayırt etmek için Uygulamalar Macarcasını (veya diğer adlandırma kuralları) benimsemiş olsalardı, muhtemelen pratikte daha iyi diller olurdu. Böylece, hiçbir zaman mutasyona uğratılmaması gereken değişken tipte bir örneği tanımlayanlar , vb. tanımlanırsa, Çalışma Zamanı bu tür farklılıkları umursamasa da, hangi değişkenlerin hangi türden olduğunu bilmeden, verimli ve doğru kod yazmak imkansızdır.
Supercat,

0

Kasanın arkasında hoş ve kompakt olanın dışında bir "felsefe" olduğunu bilmiyorum ve alt çizgi kullanmadan kolayca birden fazla kelime olarak görünebilir.

Geçtiğimiz birkaç on yıl boyunca birçok kaplama çeşitliliği olmuştur. Her kelimeyi birbirinden ayıran alt çizgilerle çok kısa (en C ve standart C kütüphanesine bakınız) arasında ayrıntılı bir şekilde yer aldılar. .NET kütüphane isimlendirme konvansiyonu hala oldukça ayrıntılı olsa da, sanırım kasaya kadar bir miktar orta zemine çarpıyor.


5
-unutma-lisp tarzı adlandırma!
R. Martinho Fernandes

@Martinho Fernandes aslında c-dilleri bağlamında geçerli değil.
Andrey

Evet, Lisp boşlukları hesaba katar. (- var1 var2)
Michael K,

@Martinho Fernandes: Tabii ki, belirteçleri ayırmak için boşluk kullanılması gerekiyor. Aynı zamanda COBOL-STYLE-NAMING, en çok hayran kaldığım ve en az hayran olduğum dilleri ortak yapıyor.
David Thornley

0

Bir vahşi (ama mantıksız, IMHO) tahmin alarak - C # tasarım Niklaus Wirth tarafından denetlendi dayanarak Pascal'ın ilk mucidi . Bağlantıya bakınız? ... :)

Meraklı # 1: .NET ve C #'nın duyurularını (evet, tarih öncesi yaşıyorum ...) ve Microsoft'un Wirth'in adını C # ile nasıl övündüğünü olumlu hatırlıyorum. Ancak, Vikipedi sayfalarında hiçbiri (C # ve Wirth) bundan bahsetmiyor.

Meraklı # 2: Her ne kadar çağrılsa da, dilin kendisi PascalCasetarafından TurboPascalderleyici tarafından (sonunda oldu Borland) popülerleştirildi .


4
TurboPascal, Anders Hejlsberg tarafından uygun bir şekilde tasarlanmış ve üretilmiştir ...
SWeko

3
Anders Hejlsberg, Delphi'nin baş tasarımcısı IIRC idi ve Turbo Pascal'da çok çalıştı, ancak Turbo Pascal aslen onun bebeği değildi (Philip Kahns'tı). Niklaus Wirth orijinal Pascal'ı icat etti ve standardizasyona soktu, sonra standardı büyük ölçüde görmezden geldi. Ayrıca, Wirth, C # 'ın ömrü boyunca emekli oldu ve ondan önce birkaç ardışık-Pascal dili tasarladı (en son Oberon 2). Microsoft, Hejlsberg'in gemiye binmesi konusunda yüksek sesle övündü. Turbo Pascal, başından beri bir Borland ürünü idi.
Steve314

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.