Инструмент 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/