Подтвердить что ты не робот

По какой причине у нас есть соглашение об именах lower_case_with_underscores?

В зависимости от вашей интерпретации это может быть или не быть риторическим вопросом, но это действительно меня озадачивает. Какой смысл делает эта конвенция? Я понимаю, что соглашения об именах необязательно должны содержать рифму или причину, но почему они отклоняются от уже популярного camelCase? Есть ли рифма и причина, стоящие за lower_case_with_underscores, что я как-то не хватает? (и да, я полностью прочитал PEP 8, и да, я понимаю, что это просто предложение, руководство и т.д.)

Я полагаю, что мой реальный вопрос будет следующим: я пишу библиотеку Python. На самом деле, при любой удаче, это может быть довольно большая библиотека по сравнению с моими другими проектами. Я уже стараюсь как можно больше придерживаться PEP 8, и до сих пор я даже поддерживал lower_case_with_underscores, поскольку PEP 8 инструктирует имена функций и методов. Но мне кажется, что я должен помнить, что использовать camelCase для Twisted, camelCase для logging и почти все остальное. Какое соглашение об именах следует использовать и почему?

Вероятно, это поразило бы людей, которые меня так сильно волнуют, и достаточно, чтобы написать длинный вопрос об этом, и меня это тоже поражает. Возможно, у меня есть небольшое ОКР, когда дело доходит до этих вещей. У меня нет большого "личного мнения" об этом, так как у меня есть склонность просто пойти на то, что используется больше всего, что в данном случае будет camelCase, - но это еще больше раздражает меня, чтобы узнать, что Я, вероятно, наружу некоторые вечные законы о явных vs неявных и дзен питона, написанных на камне или что-то в этом роде.

4b9b3361

Ответ 1

camelCase и/или camelCase (и что дискуссия сама по себе;-) может быть в подавляющем большинстве наиболее популярна для тех сред, с которыми вы наиболее знакомы, но которые вряд ли делают их универсальными - или вы никогда не слышали о неясном языке под названием С++, с его алгоритмами std::find_first_of и std::replace_copy_if и т.д.?!

Таким образом, нет никакого "отклонения", как вы заявляете, в PEP 8 - просто выбор в отношении стандартных соглашений С++ против более популярных, скажем, Java или С#.

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

Думаю, вы поймете, почему полагаться на чувствительность к регистру - это ужасная идея, только если вам нужно полагаться на экранное устройство, чтобы прочитать код для вас - большинство читателей экрана делают ужасную работу по выявлению проблем, и там нет действительно хорошего способа, нет сильного или простого соглашения для преобразования различий между случаями в простые аудиальные подсказки (при переводе подчеркиваний на "клики", в удобном настраиваемом читателе экрана, это делает его легким). Для людей без каких-либо нарушений зрения, которые, без сомнения, 90% и более, вам не нужно заботиться (если вы не хотите быть инклюзивным и помогать людям, < не делиться своим даром совершенства видение... naah, кто заботится о тех парнях, правильно?!).

Но согласованность по-прежнему важна и помогает _every_body.

Ответ 2

Я слышал, как он говорил в других контекстах, что слова_with_underscores легче разделять для не-родных английских читателей, чем wordByCamelCase. Визуально это требует меньше усилий для анализа отдельных иностранных слов.

Ответ 3

LowerCaseWithUnderScoresAreSuperiorBecauseTheTextYouNormallyReadInABookOrNewsPaperForExampleIsNotWrittenLikeThis..

Ответ 4

Одна из причин может быть исторически, многие компьютеры не имеют смешанных возможностей случая. В дни COBOL программы были в верхнем регистре. В начале 80-х многие "персональные компьютеры" появились только с верхними шрифтами. Например, вы можете получить карту расширения для Apple II+. Когда программы начали допускать смешанный случай, случай с верблюдом был не популярен. Многие программы занимали то, что раньше было во всех шапках, и просто преобразовывались в нижний регистр. Через 80 различных языков отнесено значение к случаю, а в 90 Java популяризировал синтаксис camelCase. Языки, которые имеют более старую историю или более тесно привязаны к системному программированию Unix, обычно избегают использования семантического использования смешанного случая.

Ответ 5

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

Ответ 6

Используйте соглашение об именах, которое использует ваш магазин.

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

Ответ 7

Что бы вы ни делали, я думаю, что важно, чтобы вы были последовательны. Я видел пару руководств по стилям (например, Руководство по стилю Google Python), которые говорят вам использовать символы подчеркивания.

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

Вы используете camelCasing? Я не возражаю! Всегда есть режим очков.:)

Ответ 8

Это просто соглашение, но полезно, если вы работаете с большим количеством сокращений.

Как вы пишете EmailConfig (или это EMailConfig)? HTTPRequest? email_config и http_request - это гораздо более четкое соглашение.

Ответ 9

Было ли это Meyers, который придумал сравнение aLongAndTotallyUnreadableMethodeName vs an_even_longer_but_perfectly_readable_method_name?

Если вы уже привыкли к одному, то ваше любимое соглашение будет выглядеть более естественным. Но новые программисты могут предпочесть подчеркивания (размер выборки N = me, в 2001 году).

Я думаю, что некоторые языки используют camelCase, потому что их API может быть действительно ужасным. Вам нужно дополнительное пространство, поэтому код может вставляться в среду IDE без упаковки.

Например:

poly = geometryLibrary.polygonGenerator.createFromPointSet(myList.listContentsToPointset())

Ответ 10

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

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