LINUX.ORG.RU

[python]Стиль именования переменных

 


0

2

Здравствуй, ЛОР!
Как я понимаю, PEP 8 рекомендует использовать для именования функций lowercase_with_underscores, а для классов — CapWords. А что насчёт переменных? Чёткой формулировки я так и не смог найти, но гуглится рекомендация использовать для них lowercase_with_underscores. Но разве не было бы удобнее отличать переменные от функций и классов, используя для первых mixedCase?
Что вы думаете на этот счёт, как вы называете переменные (когда пишете на Python)?

Deleted
Ответ на: комментарий от Deleted

some_object.do_something()

someObject.do_something()

some_object.doSomething()

anonymous
()
Ответ на: комментарий от Deleted

Функция это и есть переменная. Это же питон.

anonymous
()
Ответ на: комментарий от Deleted

Потому что уродство. А вот это:

KevinDetry> Но разве не было бы удобнее отличать переменные от функций и классов, используя для первых mixedCase?

просто из пальца высосано. У тебя проблемы с отличением имен переменных от имен функций и классов, при том, что классы в CapWords а функции вызываются? Нет, правда?

tailgunner ★★★★★
()
Ответ на: комментарий от Deleted

some_function()

some_variable = some_function

some_variable()

anonymous
()
Ответ на: комментарий от tailgunner

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

Deleted
()

Может еще венгерскую нотацию использовать?

anonymous
()
Ответ на: комментарий от Deleted

мне показалось, что одинаково именовать переменные и функции немного нехорошо

Еще немного, и ты дойдешь до венгерской нотации.

Но зачем тогда классы именовать в CapWords?

Нет никакой _необходимости_ именовать классы в CapWords - тот же Си без этого вполне обходится.

Соглашение об именовании - всегда компромисс между вкусами, простотой и «всеобъемлимостью». В Python этот компромисс самый здравый.

И чем CapWords читабельнее mixedCase?

Давай ты объяснишь мне, почему mixedCaseNames начинаются со строчной буквы?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Еще немного, и ты дойдешь до венгерской нотации.

Вряд ли она уместна в питоне.

Соглашение об именовании - всегда компромисс между вкусами, простотой и «всеобъемлимостью». В Python этот компромисс самый здравый.

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

Давай ты объяснишь мне, почему mixedCaseNames начинаются со строчной буквы?

Не я его придумал, не мне объяснять =)

Deleted
()
Ответ на: комментарий от tailgunner

Давай ты объяснишь мне, почему mixedCaseNames начинаются со строчной буквы?

Я попробую. Возможно потому, что первая часть - часто - глагол-действие, а после него идет субъект действия (т.е. объект, на который это дейстиве распространяется): getWidth(), setSize, makeLove, hasBrain, etc.

theos ★★★
()
Ответ на: комментарий от Deleted

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

Ну, прекрасно. Смысл этого компромисса понимаешь? Объясни мне.

tailgunner ★★★★★
()

В питоне нет различия между переменными и функциями по сути и пример приводили уже тут, поэтому бессмысленно их различать . А вот синтаксис инстанциации объекта и вызова функции совпадает, в то время как конструктор это «хитрая» функция, отличающаяся от остальных, и (лично мне) удобно конструкторы таки различать.

theos ★★★
()
Ответ на: комментарий от tailgunner

Ну, прекрасно. Смысл этого компромисса понимаешь? Объясни мне.

Этого?

всё оформлять строчными буквами с подчёркиванием

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

Deleted
()
Ответ на: комментарий от theos

Давай ты объяснишь мне, почему mixedCaseNames начинаются со строчной буквы?

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

Не-а. Это объяснение могло бы прокатить для методов (но даже тогда остаются имена ввроде setUp и tearDown), но этот же mixedCase используется и для полей, и для переменных (которые обычно существительные, а не глаголы).

Фольклор говорит, что этот абортивный материал, mixedCase, увидел свет потому, что на клавиатурах машин D-серии тупо не было знака '_', вдобавок в Smalltalk (или его ранних версиях) тип объекта зависел от регистра первой буквы его имени. А потом хомячки внезапно решили, что это круто, и разнесли заразу.

tailgunner ★★★★★
()
Ответ на: комментарий от Deleted

Повышение читабельности же.

Как так? Ты вроде ратуешь за то, чтобы идентификаторы разных видов отличались написанием, и вдруг «snake_case_everywhere повышает читабельность».

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

именовать классы в CapWords - тот же Си без этого вполне обходится

Ну в Си вообще отлично решена проблема именования классов, не поспоришь.

anonymous
()
Ответ на: комментарий от tailgunner

Я ратую за то, что либо уж всё отличать разными стилями написания, либо для всего один стиль. Хотя объяснение theos мне понравилось, пожалуй, соглашусь.

Deleted
()
Ответ на: комментарий от Deleted

Но зачем тогда классы именовать в CapWords? И чем CapWords читабельнее mixedCase?

Напиши свой язык, а в аналоге PEP 8 сделай mixedCase для классов. Это просто соглашение, как хочешь - так и делаешь.

А вообще CamelCase просто красивее и солиднее смотрится, для классов - самое то.

anonymous
()
Ответ на: комментарий от anonymous

Ну в Си вообще отлично решена проблема именования классов, не поспоришь.

Язнал, что кто-то решит продемонстрировать глубину своих знаний именно так %)

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

тип объекта зависел от регистра первой буквы его имени.

В отсутсви _ (как причине) верится с трудом, вот c типами поверю - именно так обстоит дело в хаскелле, но я думаю это следствие, а не причина миксед-кейза (типа авторам нравился миксед-кейз и они его «зашили» в язык).

А потом хомячки внезапно решили, что это круто, и разнесли заразу.

Не вижу ничего неприятно со своей точки зрения. Мне одинаково читабельно и mixedCase & snake_case и пользуюсь первым в Java и вторым в питоне. Бесит - стиль CamelCase везде, и snake_everywhere - хотя бы потому что часто называю переменную как класс и нужно чтобы их имена не совпадали. Ну и вообще CamelCase везде мне кажется омерзительным (и в томже С#, котором он принят его вроде как даже разработчики не любят и делают публичное в CamelCase а приватное в mixedCase что уже полный треш)

theos ★★★
()
Ответ на: комментарий от Deleted

Хотя объяснение theos мне понравилось, пожалуй, соглашусь.

Оно неправильно как минимум наполовину, но, если тебе нравится %)

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Оно неправильно как минимум наполовину, но, если тебе нравится %)

Да, этот принцип действительно верен на небольшую часть (хотя и романтичен) и наверно mixedCase возник просто чтобы отличаться от CamelCase но при этом минимально, чтобы различать классы и функции/переменные и иметь возможность писать SomeClass someClass;

theos ★★★
()
Ответ на: комментарий от tailgunner

Оно неправильно как минимум наполовину, но, если тебе нравится %)

А что в нём неправильно?

Deleted
()
Ответ на: комментарий от tailgunner

tailgunner

Фольклор говорит, что этот абортивный материал, mixedCase, увидел свет потому, что на клавиатурах машин D-серии тупо не было знака '_' [..] А потом хомячки внезапно решили, что это круто, и разнесли заразу.

O'RLY? а вот другой «фольклор» предполагает несколько иное обоснование mixedCase:

7.1.3 Reserved identifiers

[..]

All identifiers that begin with an underscore and either an uppercase letter or another underscore are always reserved for any use.

shty ★★★★★
()
Ответ на: комментарий от Deleted

В нем неправильно заявление о том, что переменные и функции - одно и то же.

tailgunner ★★★★★
()
Ответ на: комментарий от shty

а вот другой «фольклор» предполагает несколько иное обоснование mixedCase:

Откуда цитата и в чем именно она противоречит моей версии?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

mixedCaseMustDieForever

Это разве миксед кейс? А где андерскоры? Мне кэмел со строчной первой буквой наоборот очень даже нравится. В определенных языках, разумеется

anonymous
()
Ответ на: комментарий от tailgunner

tailgunner

Откуда цитата

стандарт C99

tailgunner

и в чем именно она противоречит моей версии?

противоречит твоей версии в части:

А потом хомячки внезапно решили, что это круто, и разнесли заразу.

довольно часто при разработке «конпеляторов» принимается, что имена сущностей начинающихся с 1 или 2-х подчёркиваний зарезервированы для внутренних нужд конпелятора, так что mixedCase довольно удобен порой

shty ★★★★★
()
Ответ на: комментарий от shty

Мде. Как обычно, ты так хотел сорвать покровы и показать глубину своих познаний, что не озаботился прочитать текст.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

о волнитель всех волнений и раскрыватель всех тайн, ты, конечно, помнишь что речь шла о:

объяснишь мне, почему mixedCaseNames __начинаются__ со строчной буквы?

после чего разговор перешёл на underscore, на его наличие и отсутствие?

shty ★★★★★
()
Ответ на: комментарий от shty

ты, конечно, помнишь

Я, конечно, помню.

объяснишь мне, почему mixedCaseNames __начинаются__ со строчной буквы?

после чего разговор перешёл на

...Smalltalk, как источник mixedCase. После этого было просто неизбежно твое появление. С цитатой из C99.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

tailgunner

После этого было просто неизбежно твое появление.

можем поставить эксперимент, если хочешь, появление не неизбежно :)

tailgunner

после чего разговор перешёл на


...Smalltalk, как источник mixedCase.

предмет разговора не был перекрыт

shty ★★★★★
()
Ответ на: комментарий от anonymous

Странно, что Гвидо еще не закрепил стиль как часть синтаксиса

Было бы неплохо, кстати.

pevzi ★★★★★
()

Школьников теперь заставляют заниматься ынтрпрайзным программированием что ли?

aedeph
()

Что вы думаете на этот счёт, как вы называете переменные (когда пишете на Python)?

Я считать что нужно придерживаться стиля который принят (пусть и не формально) в данном языке. Так в Питоне следует использовать PEP 8, в Java сановский формат, в модулях Ядра стиль Линуса и т. д.

И за это я шлю привет разрабам Твистеда.

urxvt ★★★★★
()
Ответ на: комментарий от shty

Наводящие вопросы:

1. как связаны underscope и leading undescope.

2. какого года розлива C99 и mixedCase соответсвенно.

Бонусный:

3. что ты собственно хочешь, но не можешь, нам донести.

zz ★★★★
()
Ответ на: комментарий от zz

1. как связаны underscope и leading undescope.

очевидно же, и первое и второе - underscore

2. какого года розлива C99 и mixedCase соответсвенно.

причём тут год розлива стандарта и mixedCase?

3. что ты собственно хочешь, но не можешь, нам донести.

во-первых все давно уже поняли, включая tailgunner, который просто не может не ехидничать, но это исключая тебя, конечно

во-вторых - это очевидно, mixedCase отнюдь не небесполезен и не разнесён на лапках хомячками, а вполне даже разумен и обоснован в некоторых случаях

shty ★★★★★
()
Ответ на: комментарий от shty

1. а применительно к теме разговора

2. причем тут C99 тогда?

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

zz ★★★★
()
Ответ на: комментарий от zz

а применительно к теме разговора

это применительно к теме разговора

причем тут C99 тогда?

официальный документ

я нипонил твоей логики, согласен, но хочу понять

перечитай тред, это просто

shty ★★★★★
()
Ответ на: комментарий от shty

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

zz ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.