Navegando no Código
Obtenha um editor melhor que o VIM.
Eu uso o Komodo Edit.
Sinto que tenho que comprometer muito mais a memória
Boa. Pensar é bom. Eu acho que "aprender" leva eventualmente à "memória".
Constantemente "grep" e leia o código para identificar as interfaces.
Isso é típico. Se você não consegue se lembrar deles, eles são muito complexos, não são? Hora de simplificar.
Simples é difícil de criar. Mas quando você tem problemas para se lembrar, é um sintoma de mau design.
Eu uso grep. Funciona para mim. Meu Komodo Edit tem muitas pesquisas legais. O mesmo acontece com o Notepad ++
Identificando as interfaces dos objetos que estou usando
Doc Strings e a help()
função funcionam. Eu os uso. Diariamente.
Refatorando com eficiência ... torna-se extremamente dependente da qualidade dos meus testes de unidade.
Isso não é novidade. Isso sempre foi verdade, mesmo em uma linguagem estática.
Em uma linguagem estática, geralmente ficamos preguiçosos, assumindo que - desde que seja compilado - é realmente provável que funcione. Isso é manifestamente falso, mas ficamos preguiçosos.
Tenho certeza de que existem soluções alternativas para esses problemas.
Estes não são "problemas" e não requerem "soluções alternativas".
Uma linguagem dinâmica é precisamente sobre não saber o tipo dos objetos que você manipula. Quando você recebe um parâmetro, assume que ele define um método "quack ()" e "feathers ()", mas não sabe onde existe a documentação (na verdade, eles terão vários documentos em suas múltiplas implementações).
"sem saber o tipo dos objetos"? Realmente. Ao projetar o cliente de um objeto, sei qual o tipo que projetei.
Quando defino um serviço, usado por vários clientes, o tipo "exato" não é relevante, quando defini a interface necessária de quack()
e feathers()
.
Por fim, tenho o Read-Execute-Print-Loop e outras ferramentas para determinar o tipo "exato" nos casos raros em que tenho um problema sutil. É o que eu realmente uso todos os dias.
>>> x = some_mystery_factory( some, args )
>>> type(x)
>>> dir(x)
Não parece muito difícil - pelo menos em Python - descontrair o tipo de um objeto. Os idiomas dinâmicos devem ter um REPL, facilitando a visualização do que está acontecendo.
Você também não sabe a ordem esperada dos parâmetros. Parece difícil para um IDE ajudar lá.
Isso não faz muito sentido. help()
trabalho.
E meu IDE geralmente pode localizar a definição. Nem sempre - algumas construções dinâmicas complicadas podem ocultar facilmente a classe base. Nesse caso, eu tenho que pensar na classe do objeto para localizar a definição do método. Claro, estou escrevendo o código, então há pouco (ou nenhum) mistério lá.