В чем причина использования строчных букв для первого слова в локальной переменной (например, employeeCount, firstName)

20

Я получаю много критики от других программистов из-за того, что я использую полный надлежащий регистр для всех моих переменных. Например, ваш типичный программист будет использовать employeeCountдля имени переменной, но я использую EmployeeCount. Я использую полный надлежащий регистр для всего , будь то метод void, метод возврата, переменная, свойство или константа. Я даже следую этому соглашению в Javascript. Последний действительно шуршит людьми.

Типичная причина, по которой я не должен следовать этому «нестандартному» соглашению о оболочках, заключается в том, что для свойств и методов void следует зарезервировать полный надлежащий регистр. Локальная переменная и методы, которые возвращают значение, должны иметь первое слово в нижнем регистре, как int employeeCount = getEmployeeCount().

Однако я не понимаю, почему.

Когда я подвергаю сомнению это, кажется, что я просто получаю произвольный ответ, что это стандарт . Каким бы ни был ответ, обычно он сводится к тому , что так оно и есть, и я не подвергаю сомнению это. Я просто следую за этим. , Произвольные ответы никогда не были достаточно хороши для меня.

С тех пор, как я начал программировать макросы Excel 97 с помощью Office IDE, я никогда не нуждался в соглашении о регистре, чтобы сказать мне, является ли что-то локальной переменной или свойством. Это потому, что я всегда использовал очень интуитивное соглашение об именах. Например, GetNuggetCount()ясно предлагает метод, который идет куда-то и получает счет всех самородков. SetNuggetCount(x)предполагает, что вы присваиваете новое значение количеству слепков. NuggetCountсамо по себе предлагает свойство или локальную переменную, которая просто содержит значение. На этот последний может возникнуть соблазн сказать: «Ага! Вот в чем вопрос. Свойство или переменная? ЧТО ЭТО?» На это я бы ответил: «Это действительно имеет значение?»

Итак, вот tl; dr ;: Каковы объективные, логические, не произвольные причины использовать строчные буквы для первого слова в вашей переменной или методе возврата?

Изменить: для MainMa

Замените этот код первым примером кода в своем ответе и посмотрите, насколько хорошо ваш аргумент выдерживает:

public void ComputeMetrics()
{
    const int MaxSnapshots = 20;

    var Snapshots = this.LiveMeasurements.IsEnabled ?
        this.GrabSnapshots(MaxSnapshots, this.cache) :
        this.LoadFromMemoryStorage();

    if (!Snapshots.Any())
    {
        this.Report(LogMessage.SnapshotsAreEmpty);
        return;
    }

    var MeasurementCount = Measurements.Count();
    this.Chart.Initialize((count + 1) * 2);

    foreach (var s in Snapshots)
    {
        this.Chart.AppendSnapshot(s);
    }
}
oscilatingcretin
источник
7
Если бы они были в верхнем регистре, был бы кто-то еще, спрашивающий, почему они не в нижнем регистре ...
m3th0dman
11
не было бы неплохо, если бы у всех наших мощных IDE мог быть плагин, который отображал наши собственные личные предпочтения по таким стилистическим вопросам и позволял нам использовать их, но за кулисами, для примененной «реальной версии» исходного файла. семантика стиля "проекта". Это полностью визуальная проблема, пока вам не понадобится проверить официальную версию файла. просто мечтаю ...
Sassafras_wot
59
К сожалению для вас, действительная и действительная причина - «потому что это стандарт». Это платит за то, что люди в одной команде следуют одному и тому же стандарту стиля кода. Если вы не понимаете почему, то, возможно, вам следует задать еще один вопрос: «Почему стандарты полезны?»
Андрес Ф.
3
Я всегда предполагал, что разработчики остановились на camelCase, потому что это выглядело как kewl. Нет никакой «объективной» причины для самого CamelCase выше PascalCase. Лично я считаю, что PascalCase (как и ваш пример) гораздо легче читать, и я использую его в большинстве мест, кроме JavaScript, где я использую camelCase, поэтому я не пропускаю приглашения на вечеринки.
GrandmasterB
7
Исследование преимуществ наличия стандартного стиля кодирования Неважно, что это за стандарт, просто его соблюдение.
Мистер Миндор

Ответы:

88

Это соглашение об именах часто используется, когда люди хотят иметь возможность присвоить переменной то же имя, что и ее типу. Например:

Employee employee;

Некоторые языки даже применяют эту заглавную букву. Это предотвращает использование раздражающих имен переменных , как MyEmployee, CurrentEmployee, EmployeeVarи т.д. Вы всегда можете сказать , если что - то тип или переменный, только от капитализации. Это предотвращает путаницу в ситуациях, таких как:

employee.function(); // instance method
Employee.function(); // static method

Кроме того, в английском языке существительные, как правило, не пишутся с большой буквы, поэтому вы не можете утверждать, что ваша капитализация «правильная».

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

Карл Билефельдт
источник
1
Обратите внимание, что проблема все еще существует в языке, используемом OP, поскольку свойства пишутся с большой буквы (конечно, свойства могут иметь префикс this., что позволяет избежать путаницы; локальные переменные не могут иметь такой префикс).
Арсений Мурзенко
1
@oscilatingcretin это называется PascalCase.
мистер Миндор
21
Employee Employeeработает, но я буду утверждать, что это более запутанно для читателя, чем Employee employee. Последнее выглядит как две разные вещи. Первый выглядит как ненужное повторение.
Джейми Ф
14
@oscilatingcretin Точно: «Предполагается, что читатель понимает основную структуру ...» Мне нравится читать JavaScript, Java, C #, C ++ и другие и переводить код в моей голове. Мне не нравится продолжать думать: «О, компилятор этого языка может иметь дело с х ». пока я просто пытаюсь понять смысл кода.
Джейми Ф
1
Обратите внимание, что это employee.function()также может быть статический метод, если язык позволяет вызывать статические методы из объекта (как это делает Java). Компилятор выдает предупреждение, но ему разрешено это делать.
Uooo
34

Там нет ни одного. Это то, что делает большинство людей, поэтому оно стало стандартом, потому что это то, что делают все. Много литературы следует этой конвенции, поэтому люди приобрели эту привычку.

Соглашение не так важно, как согласованность кода. До тех пор, пока все названо непротиворечивым образом, чтобы я мог понять, что происходит, глядя на них, на самом деле не имеет значения, является ли первая буква заглавной или нет.

Я счел бы неприятным натолкнуться на код, написанный в твоей манере, и сказать, что мне это не нравится. Но это вопрос стиля.

Теперь, если вы делаете это на рабочем месте, было бы лучше кодировать в стиле команды, чтобы код оставался последовательным везде. Вместо того, чтобы ваш код отличался от всех остальных.

http://thecodelesscode.com/case/94

Schleis
источник
3
Я бы хотел, чтобы большинство программистов были такими же, как ты. Многие сомнительно страстны и / или догматичны в отношении следования стандарту обсадных колонн, который я упомянул.
oscilatingcretin
1
@ Schieis имеет значение, если вы следующий программист, который будет работать над проектом.
N4TKD
3
@oscilatingcretin Вы можете стать страстным и / или догматичным, когда будете работать над полным кодом var m_someVariableID = GetVariableValueId(). Особенно, если вам нужно сделать это без поддержки автозаполнения.
Такрой
7
Если вы в команде, важно следовать этому стандарту. Тем не менее, обратите внимание, что многие языки программирования де-факто имеют стандарты, которым вы должны следовать при создании нового проекта, в котором у команды нет стандартов (или когда команда отложила вас устанавливать их). Если вы не уверены, какое соглашение о кодировании использовать, следование соглашению, используемому поставщиком основного языка или включенной платформой, предпочтительнее вашего собственного стандарта, если только вы не можете оправдать свой стандарт.
Брайан
2
@ Schleis хорошее обновление, я не согласен, что это просто вопрос стиля, но конвенция и соглашение становятся конвенцией по веским причинам и должны соблюдаться. Это не религия, и какое-то время вы должны быть очень условны, но у вас должна быть веская причина.
N4TKD
25

1. Почему стандарт существует?

В конце концов, не лучше ли позволить каждому писать код в соответствии с личными предпочтениями и перестать говорить о том, какой стандарт лучше?

Дело в том, что, когда вы привыкли к одному стилю, труднее читать код, который использует другой стиль. Ваш мозг тратит больше времени, пытаясь понять соглашение (если оно есть) вместо понимания того, что делает код.

Что является более читабельным между этими двумя частями кода?

public void comp_metrics ()
{
  int Count;
  List<snapshot> measurements=fromMemoryStorage();
  if (_liveMeasurements.enabled)
    measurements = GrabSnapshots(20, _cache);
    if( !measurements.Any() ) {
        this.Report(LogMessage.Measurements_Are_Empty); return;
    }

    Count = measurements.Count ();

    this.Chart.initialize(( Count + 1 )*2);

    foreach(snapshot S in measurements) {
      this.Chart.append_Snapshot ( S );
    }
}

или:

public void ComputeMetrics()
{
    const int MaxSnapshots = 20;

    var snapshots = this.liveMeasurements.isEnabled ?
        this.GrabSnapshots(MaxSnapshots, this.cache) :
        this.LoadFromMemoryStorage();

    if (!snapshots.Any())
    {
        this.Report(LogMessage.SnapshotsAreEmpty);
        return;
    }

    var count = measurements.Count();
    this.Chart.Initialize((count + 1) * 2);

    foreach (var s in snapshots)
    {
        this.Chart.AppendSnapshot(s);
    }
}

Обе части кода выполняются одинаково. Разница лишь в том, что в первом случае каждый разработчик, работавший над проектом, использовал свой стиль. Это делало код несовместимым, нечитаемым и опасным. Тот факт , что члены команды не смогли договориться о отступа размера, в сочетании с тем , что один из них отказывается использовать фигурные скобки после каждого ifиз кода чрезвычайно подвержен ошибкам: глядя на него, мы можем верить , что второй ifявляется выполняется только тогда, когда первое ifверно, что не так.

Во втором случае все разработчики следовали одному и тому же стандарту. Некоторые из них, возможно, были недовольны, потому что они предпочитали отступ с двумя пробелами или потому, что они использовались для методов, которые начинаются с маленькой буквы. Дело в том, что код все еще гораздо более читабелен, и все равно было бы, если бы они использовали какой-то другой стандарт.

Обладая строгим единообразным стандартом, он облегчает чтение кода.

2. Почему их стандарт лучше, чем тот, который я изобрел прямо сейчас?

Если стандарт используется сотнями тысяч разработчиков по всему миру, просто придерживайтесь его. Не изобретайте свои собственные: даже если это лучше, вам легче перейти на глобальный стандарт, а не на те сотни тысяч разработчиков, которые начнут использовать ваш.

Пример: в моей собственной компании существует специальное соглашение для именования первичных и внешних ключей и индексов в базе данных. Эти имена выглядят так:

  • [FK for Application: CreatedByApplicationId],
  • [IX for SessionIPAddress: SessionId] или
  • [PK for RoleOfPassword: RoleId, PasswordId],

Лично я нахожу это соглашение превосходным и чрезвычайно ясным. Для меня. Но это полностью отстой. Это отстой, потому что это мое, и потому что никто из тысяч администраторов баз данных никогда не использовал его. Это означает, что:

  • Когда я найму DBA, он будет вынужден изучить новое соглашение, вместо того, чтобы начинать свою работу прямо сейчас,

  • Я не могу поделиться частями кода в Интернете как есть: эти странно выглядящие имена будут мешать людям, которые будут читать мой код,

  • Если я возьму код извне, чтобы использовать его по-своему, я был бы вынужден изменить имена, чтобы сделать его единообразным,

  • Если однажды я решу использовать какой-то известный стандарт, я буду вынужден пойти и изменить каждое из нескольких сотен имен.

3. Итак, как насчет капитализации?

Свойства имеют большую область видимости или видимость, чем поля или локальные переменные. Создание свойств начинается с заглавной буквы, а поля и переменные - с маленькой, идет в этом направлении.

Если вы рассматриваете C #, эта логика достаточно последовательна.

Если вы рассматриваете Java, методы начинаются с маленьких букв, которые не следуют логике.

Так что нет, нет точных доказательств того, что эта конвенция лучше, чем ваша. Просто этот используется глобально, а ваш нет. Нет лучше .

В JavaScript функции начинаются с маленькой буквы, если они не требуют newперед ними. Разве не лучше? Может быть. Дело в том, что в течение многих лет разработчики JavaScript использовали этот стандарт, а не наоборот. Переписать каждую книгу и заставить каждого разработчика изменить стиль сейчас будет немного сложно.

Арсений Мурзенко
источник
1
Что касается части о том, что код менее читабелен, потому что он следует немного другому стандарту, у меня никогда не было этой проблемы. Если чьи-то переменные не названы как hookyDookyDoo, никакие соглашения об именовании или регистре не ухудшают читабельность. Кроме того, имейте в виду, что я не говорю, что мое соглашение «лучше», так как оно не вносит ничего особенного в таблицу разработчиков. Наконец, я не понимаю вашу точку зрения [Свойства имеют большую сферу ... идет в этом направлении] . Какое отношение имеет область применения к соглашению об обсадных колоннах? Идти в каком направлении?
oscilatingcretin
23
@oscilatingcretin, вопрос не в том, была ли у вас когда- либо эта проблема, а в том, есть ли у ваших коллег . Очевидно, что они имеют, или они не будут жаловаться.
Карл Билефельдт
1
Re: ваше редактирование: ваш первый пример кода демонстрирует просто плохо сконструированный, подверженный бедствиям код. Мой OP не о плохо сконструированном, подверженном бедствиям коде. Это примерно тот же код, что и во втором примере, но с другим соглашением об использовании. Я отредактировал ваш второй пример кода и разместил его в своем OP с моим соглашением об использовании оболочки. Замените это своим первым примером кода, пожалуйста.
oscilatingcretin
5
@oscilatingcretin: первый пример кода демонстрирует не плохо сконструированный код, а код, написанный командой, в которой каждый разработчик придерживается своего собственного стиля. Это происходит со слишком большим количеством кодовых баз, учитывая достаточное количество времени (например, пять лет). Примечание: вы пропустили: «Дело в том, что код все еще намного более читабелен, и все равно будет, если бы они использовали какой-то другой стандарт». ?
Арсений Мурзенко
6
@oscilatingcretin Существует множество исследований, которые показывают, что последовательность значительно снижает когнитивные усилия, необходимые для понимания того, что вы читаете. Для обычной прозы, плохой орфографии, плохой пунктуации и паршивой грамматики все затрудняют чтение - независимо от того, замечают они это сознательно или нет. Код достаточно сложен для чтения, не усложняя его - соблюдение «общего стандарта» (для вашего технологического стека по выбору) повышает общую согласованность и освобождает нейроны, чтобы сконцентрироваться на важном аспекте работы кода, а не на том, как это написано.
Беван
10

Технически это не имеет значения (или, по крайней мере, в большинстве языков это не имеет значения).

Однако большинство программных сообществ (будь то всемирные сообщества, которые сформировались вокруг одного конкретного языка, подгруппы таких сообществ, группы, которые сформировались вокруг какой-то популярной библиотеки или инструментария, или просто отдельные команды) разработали установленные стандарты кодирования. Точные детали относительно не важны (хотя во многих случаях, хороший аргумент может быть сделано для них), то , что является важным является то , что вы будете придерживаться их.

Не потому, что они лучшие, а потому, что они - то, что все остальные используют; если вы придерживаетесь стандарта, ваш код будет соответствовать большей части другого кода, который вы в конечном итоге будете использовать - библиотеки, код товарищей по команде, встроенные языки. Последовательное именование является одним из мощных инструментов повышения производительности, поскольку оно означает, что когда вы угадываете название чего-либо, вы обычно угадываете правильно. Это file.SaveTo(), File.saveTo(), file.save_to(), FILE.save_to()? Соглашение об именах скажет вам.

Перенос ваших личных предпочтений на каждый язык, с которым вы сталкиваетесь, особенно опасен, потому что, во-первых, каждый язык имеет свою собственную культуру, а соглашения об именах часто несовместимы; и во-вторых, между именами существует много тонких различий между языками.

Только один пример: в C # типы и переменные живут в отдельных пространствах имен; компилятор достаточно умен, чтобы понять разницу. В C, однако, оба вида имен имеют общее пространство имен, поэтому нельзя иметь тип и переменную с одинаковым именем в одной и той же области видимости. Из-за этого C нуждается в соглашении об именовании, которое отличает типы от переменных, а C # - нет.

tdammers
источник
Таким образом, действительно кажется, что некоторые более старые языки проложили дорогу для стандартов кодирования будущих языков (как ваш пример C / C #). Это очень прискорбно, потому что необходимость отслеживать, как обрабатывать переменные и члены объекта, просто добавляет ненужный уровень сложности, без которого можно обойтись.
oscilatingcretin
4
@oscilatingcretin Когда все используют одно и то же соглашение, оно не добавляет постоянной сложности, соглашение становится частью вашей ментальной модели для рассматриваемого языка И облегчает использование этого языка. Это наглядно и измеримо.
Мистер Миндор
Я собирался проголосовать за вас, но вы сначала говорите, что это не имеет значения, тогда вы пишете несколько параграфов, объясняющих, почему это важно. Если вы удалите «это не имеет значения» в начале, я вас проголосую.
Тулаинс Кордова
10

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

В современном Intellisense это имеет значение все меньше и меньше, но все же дает мне некоторые ориентиры, когда я читаю код, чтобы знать, где мне искать, чтобы найти определение.

И довольно многое из этого может быть перенесено из моего худшего стиля много лет назад, когда методы не всегда подходили для одного экрана.

Джейми Ф
источник
Ряд проектов, над которыми я работал, указывают что-то подобное в своем руководстве по стилю.
Анаксимандр
7

Это больше похоже на вопрос об условностях, а не о вашем конкретном соглашении.

Для каждого соглашения, которое вы нарушаете, вы просто добавляете больше работы для всех остальных. Возможно, в идеальном мире вся компания работает над одним продуктом всю свою жизнь ... однако в действительности это не так. Люди прыгают между проектами, иногда между компаниями или даже ради удовольствия. Чем более случайный код, тем сложнее и дороже работать с ним. Как владелец бизнеса или заинтересованная сторона, я бы не хотел нанимать разработчиков, которые думают эгоистично, а не во благо проекта.

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

Что касается вашего фактического соглашения, CapitalCamelCase обычно зарезервирован для имен классов (или в Javascript, конструкторы). Если я увижу заглавную переменную, образованное предположение потребует, чтобы мне понадобилось создать его экземпляр, чтобы использовать его. Если это не так, я разозлюсь, что код не соответствует стандартам сообщества. Даже с большинством других языков все, кто смотрит на него впервые, мгновенно вводятся в заблуждение. Я хочу, чтобы код был очевидным, а не вводящим в заблуждение.

Адриан Шнайдер
источник
«Если я увижу заглавную переменную, образованное предположение потребует, чтобы мне понадобилось создать экземпляр, чтобы использовать ее». Не понимаю. Каким образом видение заглавной переменной заставит вас думать, что вам нужно создать ее экземпляр перед использованием? Потому что это выглядит как имя класса? Так вы не знаете разницу между MyClass MyClass = nullи class MyClass { }?
oscilatingcretin
3
Да, я вижу разницу. Соглашение существует, чтобы предотвратить двусмысленность. var car = new Car();Что касается моей последней строки - почему бы не сделать это очевидным?
Адриан Шнайдер
3
@oscilatingcretin Разница, конечно, есть. Но человеческий мозг извлекает выгоду из визуальных сигналов, которые не нужны компьютерному анализатору. Кажется, что вы ставите под сомнение необходимость соглашений / стандартов ... что является действительным, если вопрос отличается от того, что вы изначально задавали.
Андрес Ф.
2

«потому что полный надлежащий регистр должен быть зарезервирован для свойств и методов void. Локальная переменная и методы, которые возвращают значение, должны иметь первое слово в нижнем регистре», и потому это стандартное соглашение.

Другие программисты прямо сейчас проверяют ваш код и думают, что это свойство, а на самом деле это локальная переменная, что делает вашу работу более сложной.

N4TKD
источник
1
Вы прочитали мой вопрос полностью? Посмотрите ближе к концу, где я сказал:NuggetCount all by itself suggests a property or local variable that is simply holding a value. To that last one, one may be tempted to say, "Ah ha! That is the question. Property or variable? WHICH IS IT?" To that, I'd reply with, "Does it really matter?"
oscilatingcretin
8
Да и Да, это важно, следующему программисту никогда не нужно думать о NuggetCount, вы должны быть в состоянии посмотреть на имя и сказать. Хорошая книга для чтения - «Чистый код», вы должны уметь читать код как историю и знать, что происходит.
N4TKD
2
@oscilatingcretin Я думаю, что разочарование, которое вы испытываете, когда люди отвечают на несколько иные вопросы, чем вы, указывает на путаницу, которая может возникнуть, когда вы нарушаете принятые соглашения.
мистер Миндор
7
Соглашения несут смысл. Если в соответствии с соглашением NuggetCount подразумевает свойство, это означает, что у него есть область действия, выходящая за рамки локальной переменной. Что означает, что мне нужно больше исследовать, чтобы определить эту область. Мне нужно определить: есть ли побочные эффекты для его изменения? Могу ли я доверять, чтобы его значение не изменялось другим потоком во время его использования? nuggetCount подразумевает локальную область видимости, и я должен предположить, что вся эта история является локальной.
Мистер Миндор
5
@oscilatingcretin ДА! Точно! Я верил, что то, что они написали, следовало за соглашением и несло все, что идет с этим. Я доверял, что они работали как часть команды, и я мог бы воспользоваться преимуществами использования этого соглашения (зная, что такое nuggetCount было с первого взгляда). Если они этого не сделали, я, вероятно, сделаю то, что сделали ваши коллеги: я пытаюсь обучить одного ответственного и я трачу больше времени в следующий раз, когда должен следовать за ними, не доверяя. Не соблюдая соглашение, они создали менее читаемый, менее обслуживаемый код. Есть ли у вас причина желать нарушить соглашение?
Мистер Миндор
0

Поскольку другие не сказали никакой реальной причины, за исключением того, чтобы свалить соглашение об именовании. Если вы можете собрать всю свою команду на одной странице, вы, вероятно, сэкономите себе время. Например, лично я начал заниматься стандартами кодирования, которые вошли в это, и мы использовали camelCase для всех частных переменных, а также для объектов, передаваемых Val, в то время как мы использовали PascalCase для общедоступных и передаваемых в Ref.

Линии становятся немного размытыми, когда имеешь дело с такими вещами, как защищенный или Out или чем-то.

Джон
источник
-2

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

Символы в нижнем и верхнем регистре имеют большие семантические различия в Haskell, также они немного отличаются в Scala, и я использовал оба из них. Другие языки, которые я использую, не делают различий между этими двумя типами идентификаторов, но держать мысли в том, как Хаскелл воспринимает идентификаторы, для меня гораздо проще, чем разбивать мои мысли на разные языки.

ayvango
источник
-2

Для меня все сводится к ожиданиям.

Когда я читаю большую часть кода, я ожидаю, что все, что начинается с a, lowerCaseбудет локальной переменной или функцией (в C # это будет просто переменная). Если я вижу локальную переменную вProperCase , я, скорее всего, на некоторое время запутаюсь и запутаюсь, думая, что это либо имя класса, либо свойство, либо что-то еще. Это заставило бы меня перечитать код и раздражало бы меня.

Это, вероятно, то, что происходит в вашем случае.

Кроме того, удобно узнать, какую роль играет переменная, просто взглянув на первую букву, и это позволяет избежать столкновений между именем экземпляра и именем класса.

IKH
источник
-3

Нижний регистр должен использоваться для локальных переменных для простоты ввода (скорость / без клавиши Shift). Верхний регистр используется для улучшения читаемости, разделяя слова внутри имени. Код с именами локальных переменных, состоящими из одного слова (которые должны быть общими), быстро и легко вводится. Использование верхнего регистра для каждого нового слова в имени также быстрее (и меньше места), чем использование подчеркивания, которое добавляет другой символ - это также называется верблюжьим регистром.

phkahler
источник
Я думаю, что это очень хороший ответ, и я не понимаю отрицательных голосов. Это логичный ответ, основанный на фактах, запрошенных ФП. Если вы проголосовали против, объясните, пожалуйста. Клавиша Shift, нажимаемая повсюду, является массивной. Подумайте об этом, почти каждое слово, которое вы вводите в свой код, будет запускать PascalCase, и для каждого вам понадобится еще одно нажатие клавиши Shift. Если вы хотите быть минималистичным и эффективным, имеет смысл убрать ненужные нажатия клавиш Shift. И, логически говоря, вы хотели бы быть более продуктивным, что означает, что я стою, нажимая меньше клавиш. Зачем нажимать больше?
AION
-3

Я согласен с ОП здесь. CamelCase просто выглядит неправильно. Я также согласен с тем фактом, что это стандарт, и мы должны придерживаться того же стандарта, или какой смысл иметь стандарт. Также имеет смысл использовать PascalCaps для методов и т. Д., А camelCase для собственных переменных и т. Д. Как способ дифференциации, когда не используется IDE, которая окрашивает методы для вас.

Чтобы обойти это, я всегда добавляю к именам своего объекта тип объекта. Поэтому, если это строковая переменная, я вызываю strMyVariable. Если это какой-то объект, я называю его objMyObject и т. Д. Таким образом, он начинается с маленьких заглавных букв в соответствии со стандартом и выглядит правильно.

Филипе
источник
3
кажется, это не дает ничего существенного по сравнению с замечаниями, сделанными и объясненными в предыдущих 11 ответах
комнат