Напишите понятный код

Меня никогда не перестает удивлять, как далеко так много «профессиональных» программистов Python отошли от первоначального акцента, которого придерживался Python, что позволило ему победить Perl. Напоминаем, что дзен Python (import this):

Дзен Питона, Тим Питерс

  • Красивое лучше уродливого.
  • Явное лучше, чем неявное.
  • Лучше простое, чем сложное.
  • Сложный лучше, чем сложный.
  • Плоский лучше, чем вложенный.
  • Лучше разреженное, чем плотное.
  • Читаемость имеет значение.
  • Особых случаев недостаточно, чтобы нарушать правила.
  • Хотя практичность лучше чистоты.
  • Ошибки никогда не должны проходить незаметно.
  • Если явно не замолчать.
  • Перед лицом двусмысленности откажитесь от соблазна угадать.
  • Должен быть один - и желательно только один - очевидный способ сделать это.
  • Хотя поначалу этот путь может быть не очевиден, если вы не голландец.
  • Лучше сейчас, чем никогда.
  • Хотя никогда не бывает лучше, чем прямо сейчас.
  • Если реализацию трудно объяснить, это плохая идея.
  • Если реализацию легко объяснить, это может быть хорошей идеей.
  • Пространства имен - одна отличная идея, давайте сделаем еще их!

Многие (те, кто продают книги за 14,95 долларов) даже не знают, что такое дзен Python. Это действительно позор, потому что те же самые разработчики падают на ту же кончину, которая убила Perl: они ценят круто больше, чем ясно. Python в основном выиграл войну с Perl, потому что он выбрал «один лучший путь» вместо «многих возможных путей».

«Идиоматика» потеряла смысл

К сожалению, я наткнулся на достаточно ссылок на «идиоматический» Python, чтобы сделать вывод, что этот термин был использован всеми, кто хочет сделать свой способ написания Python лучшим способом. Фактически, он настолько распространен, что вы должны немедленно с подозрением относиться ко всему, что использует этот термин (например, к компаниям, которые вкладывают в свои названия слова «инновации», «синергия» или «решения»). Вы были предупреждены.

Есть много примеров (включая ненужные понимания), но вот один маленький, который недавно послужил поводом для этой разглагольствования:

Этот конкретный пример демонстрирует несколько из этих сбоев вместе.

  1. Он называет свой список примеров my_container вместо более простого names
  2. Он без надобности использует enumerate(), что уродливее и медленнее
  3. Он распечатывает 0 Larry, когда 1 Larry было бы лучше для печати
  4. Он использует слово index, когда мир использует i или n для таких вещей.
  5. Он выбирает бессмысленные идентификаторы (i и name было бы лучше)
  6. Остальной мир использует для этого простой цикл счетчика.
  7. Это книга, поэтому она сразу устарела.

Вот версия, которую программисты в любой точке планеты сразу узнают и поймут. Этот шаблон встречного цикла универсален:

Если вы настаиваете на использовании питонизма:

Это заставляет меня еще больше полюбить Go (поскольку он встроен в каждую итерацию любой карты).

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

Узнайте больше, чем Python

Это тот случай, когда автор явно не пишет на каком-либо другом языке. Если бы он это сделал, он бы распознал хорошо зарекомендовавший себя шаблон контрольного цикла и использовал бы его так, как это узнал бы любой программист, а не только «Python Idiomatic Developer».

Слово мудрым, пожалуйста, выучите более одного языка, прежде чем называть себя «программистом», «разработчиком» или «инженером-программистом» (кстати, термин, который действительно раздражает настоящих инженеров). Вы просто не сможете понять программирование, просто изучив Python. Вы также должны понимать компиляцию и строгую типизацию. Я предлагаю изучить Web / Node and Go или C. Между прочим, это не только мое мнение, это именно то, что делает самый популярный курс в Гарварде (CS50), а также в Массачусетском технологическом институте, Стэнфорде и Карнеги-Меллон.

Помните закон осетра

« 90% всего - дерьмо » (да, потенциально включая этот пост в блоге). Только не забывайте перепроверять свои источники и не предполагать, что что-то правильное только потому, что этим пользуется множество людей. Например, codecademy.com по-прежнему преподает Python2, который, по общему мнению, полон опасных конструкций для начинающих, в первую очередь целочисленного деления, если вы не понимаете, о чем я говорю, очень бойтесь и ищите его.

Ищите профессионального наставничества

Найдите профессиональных наставников, когда вы начнете свое путешествие по обучению программированию. Интернет-источники хороши, но их недостаточно. Ищите реальный опыт и остерегайтесь поколения YouTube« вы можете делать все », которые действительно хороши в саморекламе, но на самом деле отстой в большинстве вещей. Они стремятся писать книги - даже создают целые учебные лагеря - до того, как получат один год профессионального опыта. Мне не нравится делиться этим предупреждением, я бы хотел, чтобы больше людей, у которых действительно был опыт, нашли время, чтобы поделиться им (при условии, что они будут держать себя в курсе).

Обновление от 15 апреля 2018 г .: 79% программистов Python почти никогда не пишут код на другом языке. Это объясняет резкую реакцию в некоторых комментариях. Программисты Python по статистике склонны становиться высокомерными фанатиками языка.