mpd

Python: string concatenation, The Zen of Python, and code review

Mar 29, 2020 12:46

Предупреждение: Мне нравится питон, но это не мешает критиковать.

В The Zen of Python есть такая мысль:There should be one-- and preferably only one --obvious way to do it.
(выделение в тексте моё)
Понятное дело, я не единственный, кто обращает внимание на то, что в плане конкатенации строк (нас будут интересовать строковые переменные) в питоне - этот принцип уже давно далеко от реального положения дел; имеем:
Но вы мне возразите: Ну, это же всё, кроме первого - не obvious way!
И я соглашусь с вами, но только не для текущего состояния дел!!! Текст по ссылке во втором пункте - авторитетно закрепляет это!

И я в этом убедился, спросив в группе "Python Professionals" на LinkedIn про изменения в коде с точки зрения code reviewer'а:

https://www.linkedin.com/feed/update/urn:li:activity:6649683558900334592

В LinkedIn отвратительные возможности по форматированию. Их просто НЕТ!
Как только пользователи не извращаются: https://www.youtube.com/watch?v=q08twTII90w
Только представьте, они с помощью специальных символов юникода генерируют текст в нужном формате: https://www.linkedin-makeover.com/linkedin-text-formatter/
И исправить пост потом невозможно! Я хотел пояснить контекст поста, уточнить исходные условия в P.S. к посту, но ты нажимаешь "Изминить" и ничего потом не происходит.

Если не ходили туда - и не ходите!!! Перескажу всё здесь, уже с учётом опыта оттуда.

Контекст:
  • некий проект заявляет python >= 3.5;
  • я намеренно использую вымышленные короткие имена переменных, в реальном коде - они носят вполне осмысленные имена не в один символ;
  • performance isn't a problem (если же вам интересна гипотетическая производительность - https://dememax.dreamwidth.org/161418.html);
  • переменные - точно являются стоковыми значениями;
  • приведённая строчка - лишь часть коммита по изменению функционала (примерно 55 additions, 35 deletions).

Внимание, вопрос: Ваша реакция, как code reviewer, на следующие изменения?

Ваш коллега меняет исходную строку:
return "%s%s%s" % (a, b, c)на следующий код:
return '{}{}{}'.format(a, b, c)
Во-первых, как видите, само изменение, взятое из реальной жизни - не совсем obvious way.
Во-вторых, в LinkedIn - никто так и не предложил вообще вариант:
return a+b+c
Занавес.

(
| Комментировать в Dreamwidth)

цитаты, freesoftware, linkedin, gstreamer, работа

Previous post Next post
Up