Skip to content

Instantly share code, notes, and snippets.

@Beastrock
Last active June 25, 2018 10:23
Show Gist options
  • Save Beastrock/8a2c46560037a9cba2e098feb0a8e6da to your computer and use it in GitHub Desktop.
Save Beastrock/8a2c46560037a9cba2e098feb0a8e6da to your computer and use it in GitHub Desktop.
В PEP8 написано "a foolish consistency is the hobgoblin of little minds". Что это значит?

ТВОЁ ЛИЦО, http://telegra.ph/file/a46709d1c67e90baeab12.png КОГДА ТЕБЯ ЦИТИРУЮТ В СТАЙЛГАЙДЕ

Этот кусочек фразы взят из эссе «Доверие к себе» некого американского писателя и философа Ральфа Уолдо Эмерсона. Законченное предложение звучит так:

«A foolish consistency is the hobgoblin of little minds, adored by little statesmen and philosophers and divines»

Чтобы понять смысл фразы и заодно причину её нахождения в заголовке одного из разделов PEP8, для начала надо бы правильно перевести слово «consistency», так как значений у него предостаточно: последовательность, логичность, консистенция, плотность, состав. Хоть некоторые слова подошли бы к описанию хорошего кода, но ни одно из этих значений здесь, на самом деле, не подходит.

Я решил немного почитать о философии трансцендентализма, которой Эмерсон первым дал начало. Да... Думал изучать Python? Будь готов к урокам философии в своём ТЗ. Шутка.

Основные идеи трансцендентализма заключаются в том, что человек наделяется неисчерпаемой духовной силой Природы. В приближении к Природе, в её интуитивном переживании и разгадывании её символических смыслов последователи видели пути нравственного очищения и постижения сверх-души. Последователи принижали значение чувственного опыта, делая особый упор на интуицию и фантазию. Христианская религия превращалась в свод нравственных идеалов, не требующих для своего осуществления института церкви. Трансцендеталисты призывали заменить веру в чудеса и в воплощение Бога поклонением «бесконечности человека» и «моральному чувству», присущему всем людям.

Никто не отрицает, что следование своей интуиции не будет схоже с заповедями или другим сводом законов, но на первом месте для Эмерсона самостоятельное их постижение и приход к ним. Вот так вот. А при чём же здесь Python? Я нашел удачный русский перевод Восьмой Пепки, и стало ещё понятнее: «сonsistency» в данной фразе - «согласованность», а «foolish» - «безрассудная».

Безрассудная согласованность - это домовой в маленьких умах, обожаемый мелкими политиками, философами и богословами.

Поясню. Конечно, Гвидо Ван Россум хотел, чтобы его стилю соответствовали каждая функция, каждый модуль и каждый проект. Но также он хотел, чтобы программисты понимали, что можно довериться себе и отклонится от PEP8 в угоду читаемости, сформированного в проекте стилю и другим моментам. Прямое следование гайду ни к чему хорошему не приведет. Вот почему заголовок «a foolish consistency is the hobgoblin of little minds» идеально описывает мысль, изложенную в этом разделе.

Подытожим четырьмя весомыми причинами для отступления от стайл гайда, которые авторы приводят нам в пример:

Причина 1. Применение PEP8 сделает код менее читабельным, даже для того, кто привык читать ПепВосьмутый код

Причина 2. Несогласованность со стилем оформления кода, который уже есть в проекте (Может быть, в силу исторических причин) — впрочем, это возможность подчистить чужой код.

Причина 3. Рассматриваемый код был написан раньше нововведенного правила гайда и это единственная причина, чтобы редактировать данный код.

Причина 4. Когда код нуждается в поддержке старых версий питона, в которых не поддерживаются фичи, рекомендованные в пеп8. (Видел ли ты такие?)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment