Навигация по коду
Получите лучший редактор, чем VIM.
Я использую Komodo Edit.
Я чувствую, что мне нужно больше памяти
Хорошо. Мышление это хорошо. Я считаю, что «обучение» в конечном итоге приводит к «памяти».
Постоянно "grep" и читать код, чтобы определить интерфейсы.
Это типично. Если вы не можете их запомнить, значит, они слишком сложные, не так ли? Время упростить.
Простое сложно создать. Но когда у вас проблемы с запоминанием, это признак плохого дизайна.
Я использую grep. Меня устраивает. Мой Komodo Edit имеет много приятного поиска. То же самое делает Notepad ++
Определение интерфейсов объектов, которые я использую
Док Строки и help()
функции работают. Я использую их. Ежедневно.
Эффективный рефакторинг ... это становится очень зависимым от качества моих юнит-тестов.
Это не новость. Это всегда было правдой, даже на статическом языке.
На статическом языке мы часто ленимся, предполагая, что - пока он компилируется - это действительно сработает. Это явно ложно, но мы ленимся.
Я уверен, что есть обходные пути для этих проблем.
Это не «проблемы» и не требуют «обходных путей».
Динамический язык - это как раз то, что вы не знаете тип объектов, которыми вы манипулируете. Когда вы получаете параметр, вы предполагаете, что он определяет метод "quack ()" и "feathers ()", но вы не знаете, где находится документация (фактически, они будут иметь несколько строк документации в своих многочисленных реализациях).
"не зная типа объектов"? В самом деле. Когда я проектирую клиента объекта, я знаю, какой тип я разработал.
Когда я определяю сервис, используемый несколькими клиентами, «точный» тип не имеет значения, когда у меня определен требуемый интерфейс quack()
и feathers()
.
Наконец, у меня есть Read-Execute-Print-Loop и другие инструменты для определения «точного» типа в тех редких случаях, когда у меня возникает небольшая проблема. Это то, чем я на самом деле пользуюсь каждый день.
>>> x = some_mystery_factory( some, args )
>>> type(x)
>>> dir(x)
Не кажется слишком сложным - по крайней мере в Python - раскрутить тип объекта. Должны динамические языки иметь REPL, что позволяет довольно легко увидеть, что происходит.
Вы также не знаете ожидаемый порядок параметров. Кажется, для IDE трудно помочь там.
Это не имеет особого смысла. help()
работает.
И моя IDE часто может найти определение. Не всегда - некоторые замысловатые динамические конструкции могут легко скрывать базовый класс. В этом случае мне нужно подумать о классе объекта, чтобы найти определение метода. Конечно, я пишу код, так что там мало (или нет) загадок.