Многие ли библиотеки Python имеют относительно низкое качество кода? - PullRequest
15 голосов
/ 02 марта 2009

Редактировать: С тех пор, как был задан этот вопрос, в стандартных научных библиотеках Python (которые были целевой областью) произошло значительное улучшение. Например, проект numpy приложил большие усилия для улучшения строк документации. Можно до сих пор спорить, можно ли было бы постоянно решать эти проблемы с самого начала.


У меня такой несколько еретический вопрос: почему так много библиотек Python имеют грязный код и не следуют стандартным рекомендациям? Или вы думаете, что это наблюдение абсолютно не соответствует действительности? Как ситуация сравнивается с другими языками? Мне интересно ваше мнение об этом.

Некоторые причины, по которым у меня сложилось впечатление, что качество не хватает:

  • Строки документации часто полностью отсутствуют или неполны, даже для общедоступного API. Больно, когда метод принимает *args и **kwargs, но не документирует, какие значения могут быть заданы.

  • Плохие практики кодирования Python, такие как добавление новых атрибутов за пределы __init__. Подобные вещи делают код трудным для чтения (или сопровождения).

  • Вряд ли какие-либо библиотеки следуют правилам кодирования PEP8. Иногда соглашения даже не согласованы в одном файле.

  • Общий дизайн грязный, без чёткого API. Похоже, что рефакторинг выполнен недостаточно.

  • Плохое покрытие юнит тестов.

Не поймите меня неправильно, Я очень люблю Python и его экосистему . И хотя я боролся с этими библиотеками , они обычно выполняют свою работу, и я благодарен за это . Но я также думаю, что в итоге из-за этих проблем теряется время разработчиков. Возможно, это из-за того, что Python дает вам такую ​​свободу, что очень просто написать плохой код .

Ответы [ 16 ]

1 голос
/ 17 марта 2009

Как насчет коллекции примеров хороших программных документов?
Хорошие примеры могут привести к общему улучшению чуть быстрее случайного блуждания.
Коллекция может быть разбита на такие категории, как:
встроенный документ / справочная страница / учебное пособие / справочное руководство, веб-страница / бумага, фотографии / нет.
Каждая запись должна содержать несколько слов на , почему рецензент находит это хорошим.
(Где: угол стека переполнения?)

1 голос
/ 02 марта 2009

Что касается сравнения с другими языками, я думаю, что языковой дизайн играет здесь большую роль. Например, в языке со строгой типизацией, таком как Java, даже если в библиотеке отсутствует хорошая документация, вы все равно можете вывести большую часть функциональности из сигнатур методов. Нет *args с чем бороться.

1 голос
/ 02 марта 2009

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

Что касается отсутствующих строк документации - да, они могут помочь при использовании интерактивной справки - но я, как правило, не против, если есть некоторая документация. Я стараюсь не читать исходный код библиотек, которые я использую, я стараюсь их модифицировать (переписывать).

0 голосов
/ 02 марта 2009

Качество кода * количество комментариев * время = константа

Выберите два!

У меня никогда не было проблем с использованием matplotlib; Не могу сказать, что я много смотрел на код - это хорошая библиотека. Делает то, что должен (бесплатно!)

0 голосов
/ 02 марта 2009

Ну, они являются открытым исходным кодом. Как таковые они также будут развиваться со временем, если они достаточно хороши.

Это одна из многих красот открытого исходного кода.

Зачастую бессмысленно писать много документации и "хорошего" кода, если вы не знаете, будет ли проект жить. Это было бы просто пустой тратой времени.

Редактировать: Конечно, написание хорошего кода никогда не повредит в первый раз, хотя ... Но, может быть, во многих случаях достаточно просто "выполнить работу". Я думаю, что в противном случае нам бы не понравилось огромное количество вариантов, когда дело доходит до OSS.

Я думаю, что если достаточное количество людей будут действовать определенным образом, этому можно объяснить. Они не просто случайно обижают вас.

0 голосов
/ 02 марта 2009

nikow: я могу ответить только за себя, большая часть моей работы с Python (и PHP или Ruby, все динамические "скриптовые" языки) выполнена только для меня - но я всегда выпускаю ее на свой личный счет сайт, если кто-то еще находит это полезным, но я никогда не прохожу никакой документации или процесса обеспечения качества, потому что пока он работает для меня, я счастлив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...