Navigating the code
Ottieni un editor migliore di VIM.
Uso Komodo Edit.
I feel like I have to commit a lot more to memory
Buona. Pensare è buono Trovo che "l'apprendimento" porti eventualmente alla "memoria".
Constantly "grep" and read through the code to identify the interfaces.
Questo è tipico. Se non riesci a ricordarli, allora sono troppo complessi, no? È tempo di semplificare.
Semplice è difficile da creare. Ma quando hai problemi a ricordare, è un sintomo di cattiva progettazione.
Io uso grep. Per me funziona. Il mio Komodo Edit ha una buona ricerca. Così fa Notepad ++
Identifying the interfaces of the objects I'm using
Stringhe di documenti e la funzione help()
funzionano. Li uso Quotidiano.
Refactoring efficiently...
it becomes hugely dependent on the quality of my unit tests.
Questa non è una novità. È sempre stato vero, anche in un linguaggio statico.
In un linguaggio statico, spesso diventiamo pigri, presumendo che - finché è compilato - è molto probabile che funzioni. Questo è manifestamente falso, ma diventiamo pigri.
I'm sure there are workarounds for these problems.
Questi non sono "problemi" e non richiedono "soluzioni alternative".
A dynamic language is precisely about not knowing the type of the objects you manipulate. When you receive a parameter, you assume it defines a "quack()" and a "feathers()" method, but you don't know where there documentation is (in fact, they will have multiple docstrings in their multiple implementations).
"non conoscendo il tipo di oggetti"? Veramente. Quando progetto il cliente di un oggetto, so che tipo ho progettato.
Quando definisco un servizio, utilizzato da più client, il tipo "esatto" non è rilevante, quando ho definito l'interfaccia richiesta di quack()
e feathers()
.
Infine, ho il Read-Execute-Print-Loop e altri strumenti per determinare il tipo "esatto" nei rari casi in cui ho un problema sottile. Questo è quello che uso ogni giorno.
>>> x = some_mystery_factory( some, args )
>>> type(x)
>>> dir(x)
Non sembra troppo difficile - almeno in Python - per srotolare il tipo di un oggetto. I linguaggi dinamici devono avere un REPL, per cui è facile vedere cosa sta succedendo.
You don't know the expected parameter order either. It seems hard for an IDE to help there.
Questo non ha molto senso. help()
funziona.
E il mio IDE può spesso individuare la definizione. Non sempre: alcuni costrutti dinamici convoluti possono facilmente nascondere la classe base. In tal caso, devo effettivamente pensare alla classe dell'oggetto per individuare la definizione del metodo. Certo, sto scrivendo il codice, quindi c'è poco (o nessun) mistero lì.