<font size="2">
> ##### wasiu napisał(a)
> Zgodze sie, ze moze i racja jesli pisze sie wersje 2.0 swojego programu. Ale jesli?
</span><font size="4">wasiu</span><font size="2">? z pełnym szacunkiem do Ciebie i Twojej umiejętności programowania, ale Ty chyba nie byłeś w pełni świadomy tego co piszesz. Przeczytaj swój post parę razy, oczywiście ze ZROZUMIENIEM!
wasiu napisał(a)
jesli dostalo sie program do przejecia i rozwiania?
Możesz to napisać po polsku? Rozumiem, ze miałeś na myśli: jeżeli przejęło się cudzy projekt jakiegoś programu w celu usunięcia błędów i analizy składni.
wasiu napisał(a)
bez zadnej dokumentacji czy opisow, dziesiatki funkcji, ktorych dzialanie jest niejasne i wiadome jest ze program zawiera duza ilosc bug'ow to tutaj mozna pokusic sie o przepisanie.
Przecież to jakaś paranoja! Jeżeli wiadomym jest, że program nie ma dokumentacji, funkcje w nim użyte są trudne w analizie i napisany jest z błędami to chcąc świadomie go przepisywać pamiętaj, ze świadomie również przepisujesz i błędy i funkcje bez zrozumienia ich działania a w konsekwencji uniemożliwiasz napisanie sobie dokumentacji do tego programu (w szczególności dokumentacji tych dziesiątków funkcji). Jeżeli chce się program (i zawarte w nim funkcje) zrozumieć (z znaczeniu zrozumieć ich algorytmy działania) to TRZEBA zanalizować KAŻDĄ funkcję i KAŻDĄ linijkę programu! Tylko w ten sposób zrozumiesz program i będziesz mógł napisać do niego dokumentację.
wasiu napisał(a)
Plusy tego sa takie, ze mozemy wszystko ladnie udokumentowac i miec rozeznanie w kodzie (zwlaszcza jesli w przyszlosci to wlasnie my mamy zajmowac sie utrzymaniem aplikacji).
Jeżeli przepiszesz bez zrozumienia bo np., nie będziesz mieć chęci, czasu albo kod okaże się zbyt skomplikowany jak na Twoją wiedzę to jak zrozumiesz algorytmy użyte w funkcjach a tym samym jak zrozumiesz ich działanie? NIE ZROZUMIESZ! I dlatego NIE NAPISZESZ dokumentacji (przynajmniej całkowitej i szczegółowej) i dlatego to jest duży MINUS a nie plus!!! Przeczytaj jeszcze raz to co wcześniej napisałem.
wasiu napisał(a)
Minusy sa oczywiste: prawdopodobnie mozemy popelnic te same bledy, jak i nienadaje sie to zupelnie do wiekszych projektow.
Co do pierwszej części się zgodzę. Przepisywanie żywcem funkcji z błędami to minus. Ale co do drugiej już nie. Przepisywanie tego rodzaju programów nie nadaje się nie tylko do dużych projektów. Takie postępowanie nie nadaje się do WSZYSTKICH projektów. Argumenty patrz wyżej.
wasiu napisał(a)
Jednakze przy mniejszych projektach uwazam, ze sledzenie linijka po linijce cudzego kodu, gdzie nawet zmienne nie sa nazwane odpowiednio tylko np zmienna a,b,c & magic numbery ktore cos robia w jakiejs petli, mija sie z celem
I znów to samo. Herezja. Jeżeli program jest mały i ma, np. 500 linijek kodu to o wiele szybciej się go przeanalizuje i wykryje błędy (być może nawet wszystkie za pierwszym razem) niż w programie który składa się, np. z 10 000 linijek kodu i jeszcze w dwudziestu różnych plikach. Ja sam osobiście jeżeli muszę zastosować jakąś pętlę i potrzebna mi jest zmienna to nazywam je zwykle a, b, c lub i (najczęściej bo pochodzi od słowa indeksować). Nie ma sensu nazywać przecież takiej zmiennej np. zmiennaZliczajacaPowtorzeniaWPetli A co do nazywania zmiennych to pewnie nie wiesz ale w niektórych językach programowania np. w AS (ActionScript) długość zmiennych MA ZNACZENIE na szybkość wykonywania programu. Taką po prostu ten język ma implementację, że odczytanie zmiennych o długich nazwach trwa odpowiednio dłużej. Poczytaj sobie o specyfikacji ECMA-262 (Język AS jest zrobiony w oparciu o tą specyfikację).
wasiu napisał(a)
Co do optymalizacji i refactoringu, zawsze zostawiam to na sam koniec.
Można zostawić a można od razu. Przypuśćmy, że mamy instrukcję warunkową która musi wykonać pewną instrukcję jeżeli zmienna a ma wartość 1, a gdy ma wartość 0 to ma wykonać inną instrukcję. Przyjmijmy, że zmienna a może przyjmować jedynie wartości 0 lub 1. To jeżeli widzę u studentów, np. taki warunek w instrukcji if:
if(a > 0) {
intrukcja_pierwsza;
};
if(a == 0) {
instrukcja_druga;
};
to aż się prosi aby od razu poprawić na:
if(a == 1) {
intrukcja_pierwsza;
} else {
instrukcja_druga;
};
albo jeszcze krócej:
if(a) {
intrukcja_pierwsza;
} else {
instrukcja_druga;
};
względnie:
if(a)
intrukcja_pierwsza;
else
instrukcja_druga;
albo już w ostateczności:
(a) ? instrukcja_pierwsza : instrukcja_druga;
Przecież nie trzeba z tym czekać, aż do ukończenia projektu.</span>