В 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
Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.
Переходите на страницу учебных модулей «Девмана» и выбирайте тему.