Size: a a a

2019 October 03

AM

Artem Malyshev in rannts
Sergey Arkhipov
def recommended_books(func1, func2, func3, books):
 book_names = func1(books)
 good_books = func2(book_names)
 recommended = func3(good_books)

 return recommended
но ведь это же некрасиво?
Да, func1, func2, и func3 лучше передавать в init, а books в call.
источник

AM

Artem Malyshev in rannts
💭 Руслан Прохоров
Не кого не хочу обидеть, но иди ты вы с таким кодом в лес!
Принципы это принципы. Как их выражать в коде это дело уже лично программера.

Кому-то, как мне, нравится классы.

Серёга вон тоже самое через lambda зачем-то написал.

Ты можешь вообще спокойно жить без этого всего. Но сами принципы надо знать. Чтобы знать от чего ты отказываешься.
источник

💭П

💭 Руслан Прохоров in rannts
Artem Malyshev
Принципы это принципы. Как их выражать в коде это дело уже лично программера.

Кому-то, как мне, нравится классы.

Серёга вон тоже самое через lambda зачем-то написал.

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

SZ

Sergey Z in rannts
Хотел ещё добавить.
Если идёт разработка фреймворка, то весь тот ад вполне приемлем, я вполне ожидаю увидеть такое например в джанге.
Но вот про непосредственное приложение, бизнес логику, я согласен со всей критикой выше
источник

SA

Sergey Arkhipov in rannts
синьоры пишут максимально просто, как правило. они пишут для тех себя, которые потом при взрывах продакшна будут смотреть в это самое место, чтобы понять причину
источник

💭П

💭 Руслан Прохоров in rannts
Sergey Arkhipov
синьоры пишут максимально просто, как правило. они пишут для тех себя, которые потом при взрывах продакшна будут смотреть в это самое место, чтобы понять причину
А тогда для кого код котрый в докладе, или я совсем юн и не понимаю?
источник

SA

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

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

AM

Artem Malyshev in rannts
Sergey Arkhipov
для тех, кто не разделяет эту точку зрения. есть другой подход: обеспечить максимальную "костыляемость" кода, чтобы его в будущем было максимально просто и безболезненно расширять. "встать вот тут вот ифчиком", грубо говоря.

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

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

Об этом собственно и dry-python. Чтобы и код расширяемый, и падал красиво, и читать приятно.
источник

💭П

💭 Руслан Прохоров in rannts
Artem Malyshev
Расширяемый код это ещё не значит, что ломается он непонятно где, и что искать это место для этого самого ифчика надо полдня.

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

Об этом собственно и dry-python. Чтобы и код расширяемый, и падал красиво, и читать приятно.
и не гаглядывать в "что там под капотом?Э =)
источник

AM

Artem Malyshev in rannts
💭 Руслан Прохоров
и не гаглядывать в "что там под капотом?Э =)
В кишки джанги и алхимии же каждый день глядим.
источник

AG

Alexander Gorokhov in rannts
Sergey Arkhipov
recommended_books = megafunc(
 lambda x: map(operator.attrgetter("name"), x),
 lambda x: filter(lambda n: n in {"LALA", "BLABLA"}, x),
 lambda x: itertools.chain(map(find_similar, x))
)
как же теперь жить стало заебись. посмотрите, какой у унас теперь компактный код стал. и если нам надо действие добавить, так как теперь просто стало его добавить!
источник

SZ

Sergey Z in rannts
источник

💭П

💭 Руслан Прохоров in rannts
Вопрос:

Есть примерно такой код:
try:
   var = 1
   rav = 2
   ....
except Exception:


И я не вижу переменных var и rav в блоке
except
.
источник

A🌚

Al 🌚l in rannts
💭 Руслан Прохоров
Вопрос:

Есть примерно такой код:
try:
   var = 1
   rav = 2
   ....
except Exception:


И я не вижу переменных var и rav в блоке
except
.
Это скорее утверждение, чем вопрос
источник

💭П

💭 Руслан Прохоров in rannts
Al 🌚l
Это скорее утверждение, чем вопрос
Често я ожидал другое поведение (
источник

SB

Sergey Belash in rannts
Ну, они объявлены в другом блоке.
Объяви их выше
var,  rav = None, None
try:
источник

A🌚

Al 🌚l in rannts
А питон разве меняет скоп в блоке трай?
источник

💭П

💭 Руслан Прохоров in rannts
Sergey Belash
Ну, они объявлены в другом блоке.
Объяви их выше
var,  rav = None, None
try:
уже.
источник

A🌚

Al 🌚l in rannts
А какая версия питона у тебя?
источник

A🌚

Al 🌚l in rannts
На 3.7 все ок отрабатывает
источник