Jak rozplanowac prace + Ktora funkcje ulepszyc?

0

Mysle ze to dobre miejsce dla mnie. Mam mase dylematow podczas programownia. Niewiem z czego to sie bierze czy tak ma kazdy czy tylko ja mysle w ten sposob.

Podczas programowania niemoge skupic sie na dopracowaniu jednej funkcji, tylko ciagle mnie cos rozprasza i robie wszystkie poprawki naraz czyli tak naprawde zadnej. Efekt jest mierny, co chwile sie zatrzymuje na jakims problemie i zanim przez niego przebrne to juz znajde inny i ten olewam.

Jak ulozyc sobie plan rozwoju programu, w mojej glowie klebi sie np. 100 nowych funkcjii i mozliwosci w jakie moge moj program ulepszyc, czy realizowac je? Czy skupic sie na tym co jest ale zeby bylo bez masy bledow?

0

Jeśli w trakcie poprawiania jednej funkcji przychodzi Ci do głowy pomysł na poprawienie/napisanie/etc. innej funkcji, to zanotuj sobie gdzieś (ja korzystam z żółtych karteczek, programu ofc ;) ) i po prostu potem wróć do zapisanych pomysłów i je zrealizuj.
Ja tak to widzę...ale każdy jest indywidualnym przypadkiem, więc gwarancji nie daję, że to się sprawdzi w Twoim przypadku ;)

pzdr.

0

Ja staram się lecieć według funkcjonalności.
Najpierw wyznaczam co program ma robić, potem jakiś w miarę ogólny schemat. Potem szkielet, żeby to dało się uruchomić i staram się funkcjonalność jedna po drugiej implementować. Jak czegoś brakuje, ale nie jest niezbędne dla tej funkcjonalności, to jakiegoś stuba czy coś piszę. Jak coś się przypomni to do listy todo w komentarzach danej funkcji/klasy/modułu dopisuję, z odpowiednim znacznikiem.

Na początku też miałem takie problemy. Ale z czasem człowiek uczy się systematyczności.

0

Jak mi podczas pisania przyjdzie coś do głowy na temat innego projektu / innej części tego samego to zapisuję sobie w moim pliku TODO.txt do którego zaglądam jak skończę pracę nad daną częścią. Tyle że ja miałem tak jakby odwrotny problem - przypominało mi się często że gdzieś coś powinienem dopisać/poprawić, ale nie chciało mi się przerywać pracy i potem zapominałem, co miałem zrobić ;) Ale może tobie też ten sposób pomoże.

0

Witam, nie chciało mi sie pisać nowego tematu a ten wydaje mi sie odpowiedni na wtrącenie mojego wątku. :-)
Jestem średnio-zaawansowanym programistą i zaczynam pisać coraz wieksze projekty. Wiadomo - jak programy to i błędy - i chciałem zapytać Was (programistów z doświadczeniem) co bardziej sie opłaca:
1) Zaplanować projekt bardzo dokładnie z wszystkimi klasami/funkcjami programu no i zacząć implementacje od początku do konca.
2) Zrobić najprostszą wersje programu - okrojoną z wszystkich wyszukanych funkcji i potem ją dopieszczać.
Pytam bo wchodze w okres pisania dość dużych modułów i gdy korzystam z opcji nr. 1 po skonczeniu kodowania okazuje sie że jest bardzo dużo błędów i dużo źle przemyslanych spraw. Tylko nie wiem czy zdecydować sie na opcje nr. 2, tzn. czy kiedyś to przyzwyczajenie nie wyjdzie mi na gorsze. Bo może gdy nabiore doświadczenia zdołam wyeliminować te wszystkie błędy i naucze sie lepiej przewidywać to co wychodzi w trakcie kodowania - wtedy lepsza bedzie opcja nr 1.

Co do problemu autora tego tematu to IMHO najlepszym rozwiązaniem jest zastosowanie sie do porad Panów powyżej :-)
PzDr

0

No jak dla mnie to zależy - jeśli wiesz, czego będziesz oczekiwał po projekcie (tj. nie mówię, że nie może być już później zmian, ale masz pojęcie co dokładnie będzie się musiało w tym projekcie znaleźć) to lepiej zaplanować, za to jak robisz coś nowego, czego jeszcze nigdy nie próbowałeś to nie ma sensu planować, i tak będziesz zmieniał co chwilę a co za pożytek z takich planów ;)

0

//TODO: Back here in the future and fix bugs :)

0
kita napisał(a)

1) Zaplanować projekt bardzo dokładnie z wszystkimi klasami/funkcjami programu no i zacząć implementacje od początku do konca.
2) Zrobić najprostszą wersje programu - okrojoną z wszystkich wyszukanych funkcji i potem ją dopieszczać.

powiedzialbym raczej ze:

"Zaplanować projekt bardzo dokładnie z wszystkimi klasami/funkcjami programu" - ta czesc jest obowiazkowa zawsze, chyba ze program jest tak trywialny, ze jak Cie obudza 5 po polnocy to wszytko bedziesz w stanie wyrecytowac z pamieci

"zacząć implementacje od początku do konca" - o to sie mozna pokusic w dwoch przypadkach: po pierwsze, gdy program jest maly (patrz wyzej), a po drugie - gdy z jakies przyczyny po prostu nie mozesz zastosowac ponizszego

"Zrobić najprostszą wersje programu - okrojoną z wszystkich wyszukanych funkcji i potem ją dopieszczać" - sposob zalecany przeze mnie w polazceniu z pkt 1)

najpierw zacznij pisac 'szkielet'. niech kazda klasa/funkcja zwraca nie prawdziwe wyniki, a jakies wartosci ktore sa na pewno prawidlowe (no, chyba ze sama zawartosc metody jest tak trywialna ze szybciej ja napiszesz niz wymyslisz co mialaby przykaldowego zwracac). zrob kawalek, przetestuj mozliwie dokladnie. napisz nastepny, przetestuj znowu. po napisaniu paru kawalkow przetestuj je wspolnie. w tym etapie mimo ze to co napisales tak na prawde nic nie robi, tylko udaje ze pracuje, to jednak szybko wychodza niedociagniecia w projekcie w stylu ten-a-ten obiekt nie ma tego, a ten tutaj musi jakos sie dostac tam a nie moze itp. oczywisty zysk: znalazles te problemy, kodu wlasciwie nie napisales sie za wiele, poprawka analizy nie pociagnie wielkich zmian. nastepnie mozna sie pokusic o wypelnianie wlasciwym kodem. dobrym zalozeniem na poczatek jest nieufnosc na podane metodzie argumenty. sprawdzaj czy sa poprawne na wszelkie mozliwe i sensowne sposoby, jak sa nieprawidlowe - wal wyjatkiem. podobnie w przypadku odbierania wartosci z wlasnie wywolanej funkcji. sprawdzaj je - jak zle, wyjatek. bardzo szybko zauwazysz ze czesc tych blokow sie niemilosiernie powtarza i kopiuj-wklej zaoszzedzi Ci sporo pracy. moze to sie wydawac czasochlonne, ale jak wejdzie w nawyk to szybko idzie. oczywiscie z umiarem.. jesli napisanie testu ma Ci zajac drugie tyle co napisanie kodu metody i w dodatku beda prawie identyczne, no to testowi mozna podziekowac. ogolny plus tego jest taki, ze bedziesz mial duza szanse wykryc pojawiajaca sie nieprawidlowosc dosc blisko zrodla. jak juz bedziesz mial w miare duza pewnosc ze dana funkcja jest ok, to mozesz testy z na zwiazane zakomentowac. nie kasuj ich, sa juz napisane a moga sie przydac;)

0

Wielkie dzieki za odpowiedz :-)

0

No, to ja jestem dziwny. Nigdy jeszcze nie zaprojektowałem klas od początku do końca ani też nie robiłem okrojonych wersji programu.

Przy małych programach (~300-500 linii które robią cokolwiek bardziej zaawansowanego niż writeln/printf/cout) piszę je cięgiem, bo robienie tego z planem czy coś to po prostu marnotrawstwo czasu, kiedy można zrobić masę kodu...

Przy średnich projektach jest to na zasadzie szkieletu ewolucji, tzn najpierw program jest określany, następnie jak ma to wyglądać, następnie początkowa funkcjonalność, zabezpieczenia, dodanie pomniejszych funkcjonalności, poprawa tego co się wcześniej skopało, dostosowywanie do zmian, ujednolicenie szkieletu, dopracowanie na podstawie testów, mr. Valgrind & mr GNU Profiler oczywiście aktywni, polerowanie całości i viola! Takie podejście daje to, że jeżeli program bardzo potrzebny, a da się obejść bez pozostałych funkcjonalności, to nawet duży program będzie gotowy do użytku szybko kosztem pozostałej części, ale jednocześnie nie zmieni się gówna inia obsługi do czasu kiedy będzie potrzebny cały.

Przy dużych "systemach" jest to dłuższy proces. Najpierw dokładnie określam o co chodzi, i określam standardy, następnie zgodnie z tymi standardami robię jeden program na każdą część programu głównego, następnie scalam powstałe programy tam gdzie mają się scalać itd.. aż w końcu należy tylko napisać kilka prostych linijek w mainie. Takie podejście daje dość dużą kontrolę nad sprawnością tego systemu, bo zawsze można wrócić do programu bazowego i zobaczyć która dokładnie część funkcjonuje źle.

Ostatnio też dość dobrym pomysłem było dokooptowanie kolegi i stworzenie zespołu programistycznego. Dzięki temu za każdym razem gdy się głowie jak rozwiązać jakąś rzecz, ten bałwan się zapyta jak to działa, mimo że mu tłumaczyłem już z dziesięć razy, zapyta jeszcze dlaczego to coś robi coś tam, a ja tłumacząc mu to dochodzę gdzie jest błąd.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0