В PEP8 написано "a foolish consistency is the hobgoblin of little minds". Что это значит?

Alexey

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

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

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

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

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

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

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

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

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

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

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

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

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

Попробуйте бесплатные уроки по Python

Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.

Переходите на страницу учебных модулей «Девмана» и выбирайте тему.