Больше рецензий

11 октября 2019 г. 16:52

2K

3.5 Не забудьте сказать всем, что это секрет.

Эту книгу мне рекомендовал коллега. Конечно, добрался я до этой книги не сразу, но, поддавшись его хорошему отзыву, прочитал. И я вряд порекомендую эту книгу кому-нибудь: чего-то нового я узнал немного, а некоторые советы вызывают у меня скепсис. И никаких секретов здесь нет.

Сразу скажу, что я и в целом не любитель технической литературы из разряда cookbook'ов. С одной стороны, такие книги хороши для беглого просмотра, чтобы найти какие-то конкретные приемы, но читать их "от корки до корки" как обыкновенные книги практически невозможно. Ну и соответственно, они практически бесполезны, если ты даже не знаешь, что искать. С другой стороны - если читать "по диагонали", то можно пропустить что-то действтельно стоящее.

В этом плане книга "Секреты Python" неплоха: она дает не только сухую выжимку того, как делать правильно, но и предлагает контекст, объясняющий почему стоит делать именно так (хотя с этими выкладками тоже не всегда можно согласиться). Но к форме подачи материала у меня претензий, в принципе, нет. А вот содержание, как и "для кого написана эта книга", ряд вопросов вызывает.

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

Если же брать более опытных разработчиков относительно тех же рекомендаций - то, скорее всего, они и так всё это знают. Можно много спорить о том, насколько действительно работают подходы из разряда "чистый код", можно возразить, что знать и делать - это разные вещи. Но, как мне кажется, из реальной практики весь этот опыт замечательно кристаллизуется, даже если проектов было не очень много и они были несложными.

Ну и некоторые советы иначе как вредными я не назову.

Например, раздел про динамические импорты. В духе законов Мёрфи, я склонен считать, что если что-то может быть сделано неправильно, то оно будет сделано неправильно. И, технически, это будет работать, потому что интерпретатор это вам позволяет. С точки зрения того же PEP8 - официального соглашения по написанию кода на Python, так делать нельзя. Понятно, что перенести пару строк внутрь функции/метода практически всегда проще, чем отрефакторить неправильно разбитый модуль. Вероятность возвращения к этому вопросу после быстрого исправления, конечно, зависит от команды, и в целом равна вероятности встретить динозавра - либо исправят, либо нет. В то же время, динамические импорты - это отличный способ создать себе источник ошибок при дальнейшем развитии кодовой базы.

Или, целая глава посвящена метаклассам. В книге Fluent Python прекрасно объяснено, когда нужно ими пользоваться. Не могу не привети цитату Тима Питерса:

"Метаклассы – это магия, о которой 99% пользователей не стоит даже задумываться. Если вам интересно, нужны ли они вам – тогда точно нет. Люди, которым они на самом деле нужны, знают, зачем, и что с ними делать."

И действительно, фреймворки пишут несравненно реже, чем прикладной код.

Наверное, популярные книги по психологии и кошелек Миллера меня совершенно разбаловали, но 59 рекомендаций - это странно. Странное число (почему не 60, почему не 57, почему не 100?), странное количество для запоминания. Но это я уже придираюсь.

Кроме формы подачи материала, хочу подчеркнуть ещё одно достоинство книги: она написана компактно. Поэтому с ней несложно ознакомиться за пару часов, даже если вы, как и я, читаете медленно. И после этого уже самостоятельно сделать вывод, какие рекомендации пробовать применить, если ранее вы их не использовали.

Комментарии


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