Яка філософія / міркування за назви методу обкладинки Паскаля C #?


22

Я тільки починаю вивчати C #. Виходячи з фону в Java, C ++ та Objective-C, я вважаю, що C # у Pascal-casing його методах називає досить унікальними, і до початку важко звикнути. Які міркування та філософія стоять за цим?

Я здогадуюсь це через властивості C #. На відміну від Objective-C, де імена методів можуть точно збігатися зі змінними екземпляра, це не так у C #. Я б здогадався, що одна з цілей властивостей (як це стосується більшості мов, які її підтримують) - це зробити властивості по-справжньому невідрізними від змінних та методів. Таким чином, у C # може бути "int x", а відповідне властивість стає X. Щоб переконатися, що властивості та методи не відрізняються, усі назви методів, на які я здогадуюсь, також очікуються, що вони починаються з великої літери. (Це лише моя гіпотеза, заснована на тому, що я знаю про C # досі - я все ще вчуся). Мені дуже цікаво знати, як виник цей цікавий настанов (враховуючи, що це "

(EDIT: Під Pascal-casing маю на увазі PascalCase (це в основному camelCase, але починається з великої літери). Назви методів зазвичай починаються з малої літери більшості мов)


Якщо ви побачили, що всі члени певної родини всі свої стіни у всіх своїх будинках пофарбовані дивним знаком, то вам буде цікаво, чому вони зробили це так дивно?
Ноктюрн

1
Чому, на вашу думку, це називається Паскаль справа?
Р. Мартіньо Фернандес

1
@Martinho Fernandes це стандартна назва цього стилю, перевіряйте Google
Андрій

1
@Nocturne - Так. Мені було б цікаво :)
Joel Etherton

1
"Імена методів починаються з малої літери більшості мов" є помилковим для мого досвіду. Конвенції, що починаються з великої літери - з підкресленням або без підкреслення слів, є досить поширеними, хоча й не обов'язково в офіційних мовних інструкціях. Більшість мовних стандартів не мають жодного офіційного керівництва стилем. Досить небагато мов (в основному старших) ігнорують випадок у будь-якому випадку, і часто мають всенічне обмеження, тому що не натискати на зсув - це найменше правило, яке означає, що ви не маєте правописів різного змішаного випадку, які трактуються як однакова плутанина .
Стів314

Відповіді:


27

Це питання смаку. Хтось одного разу вирішив використовувати стиль Pascal для імен, і це стало стандартом.

Я дико здогадуюсь, що це був Андерс Хейльсберг , архітектор Дельфі, наступник Паскаля. Стиль корпусу такий же, як і в C #.


це буде моєю відповіддю. : P
DevSolo

@DevSolo вибачте, я почав набирати відповідь, коли питання було в Stackoverflow :)
Андрій

Я думаю, що коріння заглиблюються ще в давню історію - дивіться мою відповідь нижче :)
davka

20

Якщо ви запитуєте про причини, ось одна прямо з уст коня:

Історія навколо статті Pascal Casing та Camel Casing від Бреда Абрамса в блогах MSDN

У початковому дизайні Рамки ми мали сотні годин дискусій щодо стилю іменування. Для полегшення цих дебатів ми створили ряд термінів. З Андерсом Хайльсбергом (оригінальним дизайнером Turbo Pascal ) ключовим членом команди дизайнерів, недарма ми вибрали термін Pascal Casing для стилю корпусу, популяризованого мовою програмування Pascal ...

Конвенція Pascal Casing пише великі літери кожного слова (включаючи абревіатури довжиною понад двох літер) ...

А ось рекомендації щодо дизайну: Посібники з дизайну для розробників бібліотек класів

Ці вказівки покликані допомогти дизайнерам бібліотеки класів зрозуміти компроміси між різними рішеннями. Можуть бути ситуації, коли для хорошого дизайну бібліотеки потрібно порушувати ці інструкції щодо дизайну. Такі випадки мають бути рідкісними, і важливо, щоб ви надали ґрунтовне обгрунтування свого рішення. У цьому розділі наведено рекомендації щодо найменування та використання типів у .NET Framework, а також вказівки щодо впровадження загальних моделей дизайну ...


2
TurboPascalце дитина Philip Kahn(ака Borland), що дуже зручно для Microsoft забути. Політика ....
davka

1
Коментарі до першого посилання чудові, хаха.
jmq

7

Не знаєте про філософію, але корпус Паскаля, здається, є поширеним на платформах Microsoft з принаймні днів API Win32.


8
і я все ще ненавиджу це, хаха.
jmq

2

Я не думаю, що за цим стояла конкретна філософія. Потрібно було бути вказівками, і багато питань, які можуть вплинути на це:

  • Вони хотіли позбутися будь-яких позначень префікса (читати угорську тут)
  • Вони хотіли, щоб місцеві / приватні члени та громадські члени відрізнялися лише читанням їх імен.
  • Вони не хотіли, щоб код C # був схожий на код Java (який широко використовує чохол верблюда)

Зауважте, що ця інструкція щодо іменування призначена для .NET рамки, а не C # зокрема. У VB.NET, нечутливій до речей мові, конвенція залишається тією ж, але ви не можете використовувати її для розрізнення приватних та державних членів у кожному випадку.
Р. Мартіньо Фернандес

@Martinho: погодився. але я все ще вважаю, що це була одна з причин.
дециклон

7
+1: "Вони не хотіли, щоб код C # був схожий на код Java (який дуже використовує чохол верблюда)": Я напевно підозрюю, що ви тут!
Джорджіо

Іронічно, що незважаючи на ненависть деяких людей до угорських позначень, Java і C #, ймовірно, були б набагато кращими мовами на практиці, якби вони прийняли угорську програму Apps (або іншу конвенцію про іменування) для розрізнення полів опорного типу, які "володіють" об'єктом, що змінюється Ідентифіковані таким чином, ті, що ідентифікують екземпляр мутаційного типу, який ніколи не повинен бути вимкнено , тощо. Навіть якщо Runtime не піклується про такі розрізнення, неможливо написати код, який є ефективним і правильним, не знаючи, які змінні мають такий вид.
supercat

0

Я не знаю, що за корпусом є "філософія", окрім приємної та компактної, і вона може легко відображатися у вигляді декількох слів без використання підкреслення.

За останні кілька десятиліть існувало багато варіацій корпусу. Вони варіювались від дуже коротких (див. С та стандартну бібліотеку С) до багатослівних з підкресленнями кожного слова. Незважаючи на те, що звіт про бібліотеку .NET все ще є досить багатослівним, я думаю, що це вражає деяку середню частину щодо корпусу.


5
робити-не забувай-ліс-стиль-іменування!
Р. Мартіньо Фернандес

@Martinho Fernandes насправді в контексті с-подібних мов не вірно.
Андрій

Так, Лісп враховує пробіли. (- var1 var2)
Майкл К

@Martinho Fernandes: Звичайно, для розділення жетонів потрібно використовувати пробіли. Це також COBOL-STYLE-NAMING, що робить його загальним для мов, якими я найбільше захоплююсь і найменш захоплююся.
Девід Торнлі

0

З диким (але не необгрунтованим IMHO) здогадом - дизайн C # керував Ніклаус Вірт , оригінальний винахідник Паскаля. Дивіться підключення? ... :)

Цікаво # 1: Я позитивно пам’ятаю анонси .NET та C # (так, я доісторичний ...) та як Microsoft похвалилася тим, що ім'я Wirth на C #. Однак сторінки Вікіпедії на жодному з них (C # і Wirth) не згадують про це.

Цікаве №2: Хоч воно і називається PascalCase, його популяризував TurboPascalкомпілятор (який зрештою став Borland), а не сама мова.


4
і TurboPascal зручно спроектував та побудував Андерс Хейльсберг ...
SWeko

3
Андер Хейлсберг був головним дизайнером Delphi IIRC і багато працював над Turbo Pascal, але спочатку Turbo Pascal не був його дитиною (це був Філіп Канс). Ніклаус Вірт винайшов оригінальний Паскаль і прийняв його через стандартизацію, а потім побачив, що стандарт значною мірою ігнорується. Крім того, Вірт був звільнений майже протягом усього життя C #, а до цього розробив декілька мов-наступників Паскаля (останнім часом Оберон 2), тому я сумніваюся, що він взагалі мав безпосередню участь. Microsoft голосно похвалилася тим, що на борту перебував Хейльсберг. Turbo Pascal з самого початку був продуктом Borland.
Стів314

Я не проти пониження рівня - у мене достатньо балів на StackOverflow, але мені цікаво причина
davka
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.