Poruszanie się po kodzie
Uzyskaj lepszy edytor niż VIM.
Używam Komodo Edit.
Czuję, że muszę poświęcić dużo więcej pamięci
Dobry. Myślenie jest dobre. Uważam, że „uczenie się” prowadzi ostatecznie do „pamięci”.
Ciągle „grep” i czytaj kod, aby zidentyfikować interfejsy.
To jest typowe. Jeśli ich nie pamiętasz, to są zbyt skomplikowane, prawda? Czas na uproszczenie.
Proste jest trudne do stworzenia. Ale kiedy masz problemy z zapamiętywaniem, jest to objaw złego projektu.
Używam grep. Mi to pasuje. Moja Komodo Edit ma wiele fajnych wyników wyszukiwania. Podobnie jak Notepad ++
Identyfikowanie interfejsów obiektów, których używam
Doc Strings i help()
funkcja działają. Używam ich. Codziennie.
Efektywna refaktoryzacja ... staje się ogromnie zależna od jakości moich testów jednostkowych.
To nie są wiadomości. To zawsze było prawdą, nawet w języku statycznym.
W języku statycznym często stajemy się leniwi, zakładając, że - o ile się kompiluje - naprawdę może działać. To oczywiście fałszywe, ale stajemy się leniwi.
Jestem pewien, że istnieją obejścia tych problemów.
Nie są to „problemy” i nie wymagają „obejść”.
Język dynamiczny polega właśnie na tym, aby nie znać rodzaju obiektów, którymi manipulujesz. Gdy otrzymujesz parametr, zakładasz, że definiuje on metodę „quack ()” i „feathers ()”, ale nie wiesz, gdzie jest dokumentacja (w rzeczywistości będą miały wiele dokumentów w wielu implementacjach).
„nie znając rodzaju obiektów”? Naprawdę. Kiedy projektuję klienta obiektu, wiem, jaki typ zaprojektowałem.
Kiedy definiuję usługę, z której korzysta wielu klientów, typ „dokładny” nie ma znaczenia, gdy mam zdefiniowany wymagany interfejs quack()
i feathers()
.
Wreszcie mam pętlę odczytu-wykonania-wydruku i inne narzędzia do określania typu „dokładnego” w rzadkich przypadkach, gdy mam subtelny problem. Tego właśnie używam na co dzień.
>>> x = some_mystery_factory( some, args )
>>> type(x)
>>> dir(x)
Nie wydaje się zbyt trudne - przynajmniej w Pythonie - odprężenie typu obiektu. Dynamiczne języki muszą mieć REPL, dzięki czemu łatwo jest zobaczyć, co się dzieje.
Nie znasz też oczekiwanej kolejności parametrów. IDE wydaje się trudne do pomocy.
To nie ma większego sensu. help()
Pracuje.
A moje IDE często może zlokalizować definicję. Nie zawsze - niektóre zawiłe konstrukcje dynamiczne mogą łatwo ukryć klasę podstawową. W takim przypadku muszę pomyśleć o klasie obiektu, aby znaleźć definicję metody. Oczywiście piszę kod, więc nie ma tu żadnej tajemnicy.