Navegando por el código
Consigue un mejor editor que VIM.
Yo uso Komodo Edit.
Siento que tengo que comprometer mucho más la memoria
Bueno. Pensar es bueno. Me parece que el "aprendizaje" conduce eventualmente a la "memoria".
Constantemente "grep" y lea el código para identificar las interfaces.
Esto es tipico. Si no puedes recordarlos, entonces son demasiado complejos, ¿no? Hora de simplificar.
Lo simple es difícil de crear. Pero cuando tiene problemas para recordar, es un síntoma de mal diseño.
Yo uso grep. Esto funciona para mi. Mi edición de Komodo tiene mucha buena búsqueda. También Notepad ++
Identificando las interfaces de los objetos que estoy usando
Doc Strings y la help()
función funcionan. Los uso Diario.
Refactorizando eficientemente ... se vuelve enormemente dependiente de la calidad de mis pruebas unitarias.
Eso no es noticia. Eso siempre ha sido cierto, incluso en un lenguaje estático.
En un lenguaje estático, a menudo nos volvemos perezosos, suponiendo que, siempre y cuando se compile, es muy probable que funcione. Esto es manifiestamente falso, pero nos volvemos perezosos.
Estoy seguro de que hay soluciones para estos problemas.
Estos no son "problemas" y no requieren "soluciones".
Un lenguaje dinámico se trata precisamente de no saber el tipo de objetos que manipulas. Cuando recibe un parámetro, asume que define un método "quack ()" y "feathers ()", pero no sabe dónde está la documentación (de hecho, tendrán múltiples cadenas de documentos en sus múltiples implementaciones).
"sin saber el tipo de los objetos"? De Verdad. Cuando diseño el cliente de un objeto, sé qué tipo diseñé.
Cuando defino un servicio, usado por varios clientes, el tipo "exacto" no es relevante, cuando tengo definida la interfaz requerida de quack()
y feathers()
.
Finalmente, tengo el Read-Execute-Print-Loop y otras herramientas para determinar el tipo "exacto" en los casos raros cuando tengo un problema sutil. Eso es lo que realmente uso todos los días.
>>> x = some_mystery_factory( some, args )
>>> type(x)
>>> dir(x)
No parece demasiado difícil, al menos en Python, desenrollar el tipo de un objeto. Los lenguajes dinámicos deben tener un REPL, por lo que es bastante fácil ver lo que está sucediendo.
Tampoco conoce el orden esperado de los parámetros. Parece difícil que un IDE ayude allí.
Eso no tiene mucho sentido. help()
trabajos.
Y mi IDE a menudo puede localizar la definición. No siempre: algunas construcciones dinámicas enrevesadas pueden ocultar fácilmente la clase base. En ese caso, tengo que pensar realmente en la clase del objeto para localizar la definición del método. Por supuesto, estoy escribiendo el código, por lo que hay poco (o ningún) misterio allí.