Офер за 1 день в команду BetterMe (Frontend Hiring, JavaScript/React/Redux)
×Закрыть

Пример канонического питон кода

github.com/...er/codereview/patching.py

Приложились: создатель питона Гвидо Ван Россум, пол дюжины гуглеров, энтузиасты из сообщества.

Интересно, у ДОУ код читабельнее?

👍НравитсяПонравилось0
В избранноеВ избранном0
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

А вот как нечто похожее можно сделать на нормальном языке программирования: stackoverflow.com/.../3560513/246677

Вполне кошерный код, учитывая что туда не нужно вносить правки каждый день. Кто умеет так писать, и понимать написанное — вполне может идти работать в Гугл.

После прочтения (и правки!!) инсталляционных кодов программ под Линукс, просто чтобы юзеру поставить готовую софтину — этот код читается просто как сказка Колобок.

После прочтения (и правки!!) инсталляционных кодов программ под Линукс
эт вы еще msi файлы не декомпилировали, правили и пересобирали . вот после этого «инсталяционные коды программ под линукс» (.configure ? .makefile ?) выглядят как стихи

Ниасилил патамушта стихи!

Как по мне, так 2-х пробельные отступы нечитабельные (кроме lisp like), и не хватает пустых строк между логическими блоками. А в остальном вроде код как код.

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

Да, конечно, ООП делает код читабельней :)

Да, конечно, ООП делает код читабельней

разбить на функции с читабельными именами
а если этот код больше нигде не используется ?
переименовать переменные используя читабельные имена
это самая большая проблема в CS. да и питонисты не особо любят длинные имена переменных/функций — это тебе к джавистам.
написать его в ООП стиле используя классы и методы а не спагетти код над кортежами
т.е. нагородить десяток классов и чтобы в каждом было максимум по одному методу? :)
заюзать какую нибуть тулу по разбору заданной граматики в конце концов
а есть ? а пять лет назад была ? а код в этой тулзе для тебя читаем? :)
а если этот код больше нигде не используется ?
Его регулярно пытаются править судя по истории комитов, этого достаточно что бы его облагородить.
т.е. нагородить десяток классов и чтобы в каждом было максимум по одному методу? :)
Ну это от рук уже зависит.
а есть ? а пять лет назад была ? а код в этой тулзе для тебя читаем? :)
Я бы сказал лет 40 назад уже была.
Его регулярно пытаются править судя по истории комитов, этого достаточно что бы его облагородить.
плохо смотрел — там всего 3 коммита изменяющего эту функцию.
Ну это от рук уже зависит.
классы хороши для отделения неймспейса и наследования. не то, ни другое здесь не нужно.
Я бы сказал лет 40 назад уже была.
и ? предлагаешь сделать обёртку над сишной либой чтобы в конце с удивлением обнаружить что это не рабоает на ГАЕ? :)
плохо смотрел — там всего 3 коммита изменяющего эту функцию.
т.е. ты считаешь вполне валидной отмазкой плодить гавнокод: «а его все равно никто менять не будет»?
классы хороши для отделения неймспейса и наследования. не то, ни другое здесь не нужно.
Очевидно что даже в контексте этого примера chunk.new_range выглядит читабельнее чем chunk[1].
и ? предлагаешь сделать обёртку над сишной либой чтобы в конце с удивлением обнаружить что это не рабоает на ГАЕ? :)
Я предлагаю погуглить: wiki.python.org/...LanguageParsing

Вы такой зануда...

Будто вас заставляют сопровождать этот код

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

Ну ты специально утверждаешь, что это «канонический код на питоне». Успешно троллишь, короче.

Его же Сам Гвидо писал.
Наглядно можно посмотреть на взгляды создателя на то каким он видит применение языка.

т.е. ты считаешь вполне валидной отмазкой плодить гавнокод: «а его все равно никто менять не будет»?
я понятия не имею, где в моих комментариях ты увидел отмазки, тем не менее, кто и где его плодит ? пока что, я увидел жалкие попытки анонимного комментатора, с соответствующим ником, назвать чей-то код гавнокодом. не более.
Очевидно что даже в контексте этого примера chunk.new_range выглядит читабельнее чем chunk[1].
представь на публику патч — посмотрим насколько очевиднее.
Я предлагаю погуглить: wiki.python.org/...LanguageParsing
предлагаю найти в этом списке парсинг корявых диффов на чистом питоне.

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

Пыжится и что-то там рефакторить
отличный пример местного колорита — только языком и умеют.

Такое чувство что человек работал с Perl лет так двадцать, а потом в один день резко соскочил на Python !!!

то ты еще xml не видел :)

xml легко изучается в специализированных вьюерах с использованием xpath, а такое говнище не факт что skynet разгребет.

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

не каноничный, отступы в два пробела

это стандарт в гугле.

Огромная функция, которую нужно разбить на 20 мелких

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

Посмотрите сорцы коре либы джавы, там все гораздо хуже :) не знаю, есть ли там код Гослинга, в каких-то местах, связанных с математикой должен быть.

Что не умаляет ни Гвидо, ни Гослинга. Обычно опытные зубры понимают, что код конвеншоны, паттерны и смеллзы — это только инструменты. Для начинающих — очень важны, они просто должны их знать и выполнять. А для синьоров — уже по желанию. Тем более, для BDFL, которые их сами выдумывают :)

Но за счёт красоты и лаконичности питона этот код не так напрягает, как метод такой же длинны на джаве.
Так и на джаве не очень-то и напрягает...пока не надо искать в таком коде баг.
за счёт красоты и лаконичности питона
И где в данном коде она проявляетсо? В отсутствие скобочек, которое превращает код в стену текста?

Поддерживаю. Что такого красивого и лакончиного то? Я понимаю сказать такое про тот же oCaml, но тут ничего интересного.

и? вполне читабельный код.
для сравнения могу предложить почитать парсинг дифов на любом другом языке ;)
или код того-же patch

Годик назад, один знакомый попробовал меня подсадить на питон, после 5 минут его изучения, я узнал, что вложеность блоков определяется кол-вом пробелов с начала строки , я бросил это изучения в сторону и вернулся к С++/С#.
Блин , ну я не знаю , пусть будет что угодно —
{
}
или...
begin;
end;
Но не пробельчики!

Как по мне этот синтаксис ужесен.

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

if (condition)
____foo1();
____foo2();
а потом долго думал почему функции не вызываются вместе, ведь форматирование правильное
Ну и в таком форматировании, код нужно осторожно копипастить, чтоб отступы сохранились, т.е. кинуть код куда-то в чатик часто не вариант, т.к. обычно кушаются пробелы и потом хз как оно было изначально.

а все потому, что двоеточие забыли и точки с запятой не нужны тут xD

не обращайте внимания, это его очередной фейл в комментариях за два дня.

те код на плюсах вы отсутпами не форматируете

Форматирую, конечно.
Но,,, это нужно только для читабельности кода и к синтаксису языка не имеет отношения, и потом редактор делает это форматирование, с отступами, в автоматическом режиме.

Значит, в питоне отступы муляют, а в плюсах нет.
И на питоне все пишут в ed.
Логика-с

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

ну вот, теперь можно открывать холивар

spaces vs {}

Значит, в питоне отступы муляют, а в плюсах нет.
вот вы, гражданские, вроде умные люди, а строем не ходите © [:|||:]
мулят, даже не столько сами отступы, сколько их присутствие в синтаксисе языка.

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

Для читателя абсолютно никакой разницы между


if foo():
....bar()
baz()

и


if foo() {
....bar()
}
baz()

Синдром утенка да и только. Мне это тоже сначала казалось дико.

if ( foo() )
{
. . . bar();
}
bar();

вот она — разница.

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

И, как известно, Python поддерживает скобки, если сильно хочется.


Tolerant programming language.
In fact, Python already supports block delimiters:

if foo: #{
....foo1();
....foo2();
....foo3();
#}

Inspired by Larry Wall, Guido also made sure that the ending delimiter could be written in various other ways, such as #end if. Anything to empower the newbies, you know. But real Python programmers tend to omit both semicolons and curly braces, of course.

по скобкам + отступам. Только по отступам не удобно. Только по скобкам без отступов тоже.

Интересно, у ДОУ код читабельнее?

А на сайте где-то есть функционал: «Utility to read and apply a unified diff without forking patch(1).» ?

Предложи патч с рефакторингом, «спасибо» скажут

Для начала этот код нужно понять.

Интересно, а у риалити_хакера код читабельнее?

А, ну тогда ок, можно спать спокойно

Чего же не показываешь?

пример кода по виду напоминает стихи шизофреника )

Ну, если бы были скобочки, было бы хуже:)

Подписаться на комментарии