Какова философия / обоснование имен методов Cascal-Casing?

22

Я только начинаю изучать C #. Исходя из опыта работы с Java, C ++ и Objective-C, я нахожу Pascal в C # с именами методов довольно уникальными, и сначала их трудно привыкнуть. В чем причина и философия?

Я предполагаю, что это из-за свойств C #. В отличие от Objective-C, где имена методов могут совпадать с переменными экземпляра, это не относится к C #. Я бы предположил, что одна из целей свойств (как и в большинстве языков, которые его поддерживают) - сделать свойства действительно неотличимыми от переменных и методов. Таким образом, в C # может быть «int x», и соответствующее свойство становится X. Чтобы гарантировать, что свойства и методы неразличимы, поэтому все имена методов, которые я предполагаю, также должны начинаться с заглавной буквы. (Это всего лишь моя гипотеза, основанная на том, что я знаю о C # до сих пор - я все еще учусь). Мне очень любопытно узнать, как возникло это любопытное руководство (учитывая, что оно '

(РЕДАКТИРОВАТЬ: под Pascal-case я подразумеваю PascalCase (в основном это camelCase, но начинающийся с заглавной буквы). Имена методов обычно начинаются со строчной буквы в большинстве языков)

Ноктюрн
источник
Если бы вы увидели, что у всех членов определенной семьи все их стены во всех их домах были окрашены странным знаком, вам было бы интересно, почему они сделали это так странно?
Ноктюрн
1
Как вы думаете, почему это дело Паскаля ?
Р. Мартиньо Фернандес
1
@Martinho Fernandes это стандартное название для этого стиля, проверьте Google
Андрей
1
@ Ноктюрн - Да. Мне было бы любопытно :)
Джоэл Этертон
1
«В большинстве языков названия методов начинаются со строчной буквы» - это ложь. Условные обозначения, начинающиеся с заглавной буквы - с разделением слов или без него - встречаются довольно часто, хотя и не обязательно в руководящих принципах официального языка. Большинство языковых стандартов не имеют каких-либо официальных руководств по стилю. Многие языки (в основном более старые) в любом случае игнорируют регистр и часто имеют соглашение «все в нижнем регистре», потому что «не нажатие на смещение» - это самое ленивое правило, которое означает, что вы не воспринимаете написание слов с разным смешанным регистром как одинаковую путаницу ,
Steve314

Ответы:

27

Это вопрос вкуса. Кто-то однажды решил использовать стиль Pascal для имен, и это стало стандартом.

У меня есть дикое предположение, что именно Андерс Хейлсберг был архитектором Delphi, преемника Паскаля. Стиль корпуса там такой же, как в C #.

Андрей
источник
это будет мой ответ. : P
DevSolo
@DevSolo извините, я начал набирать ответ, когда вопрос был в Stackoverflow :)
Андрей
Я думаю, что корни уходят еще глубже в древнюю историю - смотрите мой ответ ниже :)
Давка
20

Если вы спрашиваете о причинах, вот один прямо изо рта лошади:

Статья Брэда Абрамса « История вокруг корпуса Паскаля и корпуса верблюда » в блогах MSDN

В первоначальном дизайне Framework у нас были сотни часов дебатов о стиле именования. Чтобы облегчить эти дебаты, мы придумали несколько терминов. Учитывая, что Андерс Хейлсберг (первоначальный дизайнер Turbo Pascal ) является ключевым членом команды разработчиков, неудивительно, что мы выбрали термин Pascal Casing для стиля оболочки, популяризированного языком программирования Pascal ...

В соглашении Pascal Casing прописные буквы каждого слова пишутся с заглавной буквы (включая сокращения длиной более двух букв) ...

И вот рекомендации по проектированию: Рекомендации по проектированию для разработчиков библиотек классов

Эти рекомендации предназначены для того, чтобы помочь разработчикам библиотек классов понять компромиссы между различными решениями. Могут быть ситуации, когда хороший дизайн библиотеки требует нарушения этих правил проектирования. Такие случаи должны быть редкими, и важно, чтобы вы предоставили веское обоснование своего решения. В этом разделе приведены рекомендации по именованию и использованию типов в .NET Framework, а также рекомендации по реализации общих шаблонов проектирования ...

Yogesh
источник
2
TurboPascalэто ребенок Philip Kahn(aka Borland), который очень удобно забыть для Microsoft. Политика ....
Давка
1
Комментарии к первой ссылке отличные, лол.
JMQ
7

Не знаю о философии, но оболочка Pascal, кажется, распространена на платформах Microsoft, по крайней мере, с Win32 API дней.

Неманья Трифунович
источник
8
и я все еще ненавижу это, лол.
JMQ
2

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

  • Они хотели избавиться от любых префиксных обозначений (читай венгерский здесь)
  • Они хотели, чтобы местные / частные члены и публичные участники отличались, просто читая их имена.
  • Они не хотели, чтобы код C # выглядел как код Java (который интенсивно использует верблюжий случай)
decyclone
источник
Обратите внимание, что это руководство по именованию относится к .NET Framework, а не к C # в частности. В VB.NET, регистронезависимом языке, соглашение остается тем же, но вы не можете использовать его для различения частных и открытых членов в каждом конкретном случае.
Р. Мартиньо Фернандес
@Martinho: согласился. но я все еще чувствую, что это была одна из причин.
дециклон
7
+1: «Они не хотели, чтобы код C # выглядел как код Java (который интенсивно использует верблюжий случай)»: я сильно подозреваю, что вы здесь!
Джорджио
Ирония заключается в том, что, несмотря на ненависть некоторых людей к венгерской нотации, Java и C #, вероятно, были бы на практике гораздо лучшими языками, если бы они использовали Apps Hungarian (или другое соглашение об именах) для различения полей ссылочного типа, которые «владеют» изменяемым объектом. таким образом, идентифицируются те, которые идентифицируют экземпляр изменяемого типа, который никогда не должен изменяться и т. д. Даже если среда выполнения не заботится о таких различиях, невозможно написать эффективный и правильный код, не зная, какие переменные какого типа.
суперкат
0

Я не знаю, что за корпусом есть «философия», за исключением того, что он красив и компактен и может легко отображаться в виде нескольких слов без подчеркивания.

За последние несколько десятилетий было много вариантов обсадных колонн. Они варьировались от очень кратких (см. C и стандартная библиотека C) до многословных с подчеркиванием, разделяющим каждое слово. Хотя соглашение об именах в библиотеке .NET все еще довольно многословно, я думаю, что оно занимает некоторую среднюю позицию в отношении корпусов.

Джонатан Вуд
источник
5
делать-не-забыл-LISP-стиль-именование!
Р. Мартиньо Фернандес
@Martinho Fernandes на самом деле в контексте c-подобных языков это не действует.
Андрей
Да, Лисп учитывает пробелы. (- var1 var2)
Майкл К
@Martinho Fernandes: Конечно, это требует использования пробела для разделения токенов. Это также название в стиле кобол, что делает его общим для языков, которыми я больше всего восхищаюсь и которыми меньше всего восхищаюсь.
Дэвид Торнли
0

Принимая дикие (но не лишенные смысла, догадки) предположения, дизайн C # курировал Никлаус Вирт , первоначальный изобретатель Паскаля. Видишь связь? ... :)

Любопытно # 1: я точно помню объявление .NET и C # (да, я доисторический ...) и как Microsoft хвасталась, имея имя Вирта на C #. Тем не менее, страницы Википедии ни на одном (C # и Wirth) не упоминают об этом.

Любопытный # 2: Хотя он и называется PascalCase, он был популяризирован TurboPascalкомпилятором (который в итоге стал Borland), а не самим языком.

DAVKA
источник
4
и TurboPascal был удобно спроектирован и построен Андерсом Хейлсбергом ...
SWeko
3
Андерс Хейлсберг был IIRC, ведущим дизайнером Delphi, и много работал над Turbo Pascal, но Turbo Pascal изначально не был его ребенком (это был Филипп Канс). Никлаус Вирт изобрел оригинальный Паскаль и прошел его через стандартизацию, затем увидел, что стандарт в значительной степени игнорируется. Кроме того, Вирт был на пенсии почти всю жизнь C # и до этого разработал несколько языков, предшествующих Паскалю (последний из них - Оберон 2), поэтому я сомневаюсь, что он вообще имел какое-либо непосредственное участие. Microsoft громко хвасталась, что Хейлсберг на борту. Turbo Pascal с самого начала был продуктом Borland.
Steve314
Я не возражаю против понижения рейтинга - у меня достаточно очков на StackOverflow, но мне любопытно узнать причину
davka