Предупреждение: Мне нравится питон, но это не мешает критиковать.
В
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)