Инструмент Python, который предлагает рефакторинг

При перекодировании в устаревший код Python и написании кода Python я часто использую pylint. Я также использую Clone Digger. Недавно я начал использовать rope, который является библиотекой для автоматического рефакторинга.

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

Ответ 1

Посмотрите на человека по ремонту велосипедов http://bicyclerepair.sourceforge.net/

Что такое человек, ремонтирующий велосипед? Проект "Ремонт велосипеда" - это попытка создать функцию рефакторинга браузера для python. Он упакован как библиотека, которая может быть добавлена ​​в среду IDE и редакторы для предоставления возможностей рефакторинга. Привязки для Emacs и Vi включены в пакет.

Никогда не использовал его сам, но прочитал об этом. Похоже на то, что вы ищете.

Ответ 2

О Забудьте о своем инструменте, вместо этого используйте TDD и хорошую книгу, такую ​​как рефакторинг для проектирования шаблонов Кериевского. Проблема в том, что рефакторинг - это способ улучшить ваш код и дизайн, но только вы можете знать, чего вы хотите достичь, никакой инструмент рефакторинга не может сделать это для вас.

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

PS Прочитайте Фаулера "Рефакторинг" и Кериевский "Рефакторинг для разработки шаблонов", которые должны прочитать эти книги при изучении рефакторинга. И они упоминают простой способ проверки необходимости рефакторинга (запахи).

Также рассматривайте TDD как хороший способ обеспечить безопасность ваших ссылок и не нарушать ваш код. Beck "Test-Driven Development by example" - хорошая книга для начала. И у Python есть PyUnit для TDD.

Ответ 3

Вам может понравиться Pythoscope, автоматический генератор Python unit test, который должен помочь вам загружать пакет unit test на динамически выполняющий код.

Также вы проверили модуль rope.contrib.codeassist? Предполагается автоматически предлагать и выполнять рефакторинг исходного кода для вас.

Ответ 4

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

Лучшим инструментом, который я знаю в настоящее время, является циклическая сложность. Эта статья реализует циклический счетчик сложности для python.

Другой простой метрикой для цели является длина метода/функции, количество атрибутов объектов/классов и количество параметров для функций, если я помню, pylint уже подсчитал их.

Ответ 5

NetBeans имеет раннюю версию доступа, которая поддерживает Python, и это довольно приятно. У этого есть некоторые базовые инструменты рефакторинга, которые я нашел полезными. В качестве дополнительного бонуса он работает на Windows, Linux, Mac OS X и Solaris.

Проверьте это: http://www.netbeans.org/features/python/