![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 0 Dołączył: 19.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
Witam, załączam live demo razem z kodem i proszę o sugestie co powinienem poprawić aby kod ten był napisany właściwie i zgodnie z dzisiejszymi trendami. Jeśli wypadałoby napisać to obiektowo prosiłbym o wskazanie mi jakie klasy powinienem stworzyć, gdyż nie "czuję bluesa" w obiektówce.
http://jsfiddle.net/xj7vkkgo/ Aha, wiem że można wszystko zrobić w 3 linijakch z gatDay(); ale jest to interpretacja pewnego algorytmu... Ten post edytował Matt23 23.01.2015, 19:18:59 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 717 Pomógł: 120 Dołączył: 18.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
1. nie ma żadnej walidacji, można wpisywać liczby na minusie, oraz słowa/nie tylko cyfry (ale to bardziej kwestia interfejsu niż kodu jako takiego).
2. co to znaczy monthNum? Ta tablica z numerami jest niejasna, przydałby się jakiś komentarz. No i ogólnie, może to jakiś algorytm, ale jak się patrzy na te cyferki, to nie wiadomo o co chodzi. Skąd 6? Skąd 2? itp.
tak samo. Skąd 5? Jakieś komentarze by się przydały, jak działa ten algorytm, co te zmienne oznaczają. Albo przynajmniej link w komentarzu na zasadzie
W każdym razie przydałaby się jakaś wskazówka dla innych programistów, którzy będą to kiedyś przeglądać, bo inaczej w realnej sytuacji ten kod byłby ciężki do utrzymania. Ten post edytował PrinceOfPersia 23.01.2015, 19:49:09 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 0 Dołączył: 19.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
Ogólnie to cały czas 'ogarniam' javascript i tworzę sobie rózne takie programy w celu samodoskonalenia i do użytku prywatnego, wiec o komentarze nie dbam.
Ta tablica z liczbami to cyfry odpowiadające poszczególnym miesiącom celem prawidłowych obliczeń. Blok ifów to znowu odpowiednia liczba do obliczeń dla odpowiedniego zakresu dat. Algorytm pochodzi z książki, ale jeśli znajdę go gdzieś w internecie, to wszystko opiszę, jeśli faktycznie komuś może się to przydać. A przy okazji, ten algorytm jest stosunkowo prosty do zapamiętania (z wyjątkiem numerów miesięcy) i przy odrobinie praktyki można szybko obliczyć dzień w głowie. Aha, walidacja, to fakt, ale jak wspomniałem, to tylko forma ćwiczeń dla mnie więc detale zostawiam sobie na później, a poza tym, to dosyć logiczne że data nie może być ujemna, itp. Oczekiwałbym bardziej wskazówek co do poprawnego zapisu całości, bo wiem, że można to napisać lepiej - nie wiem tylko co konkretnie. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Cytat co to znaczy monthNum? Ta tablica z numerami jest niejasna, przydałby się jakiś komentarz. Komentarze to zło (IMG:style_emoticons/default/wink.gif) można to załątwić zmieniając nazwę tablicy lub poprzez refactoring całkowity, który się tu przyda.
monthNum - odpowiednie wartości dla miesięcy.. spoko (IMG:style_emoticons/default/wink.gif) Raz masz 'month_spell' a raz 'monthNum' - brak konsekwencji w nazewnictwie. Człowiek ma bardzo potężne umiejętności nazewnictwa czegokolwiek. Korzystajmy z tego (IMG:style_emoticons/default/smile.gif) Nie bójmy się nazywać zmiennie dłuższe jak 1-2 wyrazy. Cytat Jeśli wypadałoby napisać to obiektowo prosiłbym o wskazanie mi jakie klasy powinienem stworzyć, gdyż nie "czuję bluesa" w obiektówce. Zaskoczę Cię. Javascript nie jest językiem obiektowym (IMG:style_emoticons/default/wink.gif) - zaraz polecą na mnie pewnie fale krytyki. edit: albo inaczej.. javascript nie musi być pisany "obiektowo" przy takich skryptach. Ten post edytował Forti 24.01.2015, 07:00:42 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 675 Pomógł: 58 Dołączył: 17.12.2013 Ostrzeżenie: (10%) ![]() ![]() |
Zaskoczę Cię. Javascript nie jest językiem obiektowym (IMG:style_emoticons/default/wink.gif) - zaraz polecą na mnie pewnie fale krytyki. edit: albo inaczej.. javascript nie musi być pisany "obiektowo" przy takich skryptach. dobrze że się poprawiłeś (IMG:style_emoticons/default/facepalmxd.gif) cały ten kod jest do poprawy wypieprzenia i napisania tego jak trzeba. toż to pseudokod .. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 717 Pomógł: 120 Dołączył: 18.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Komentarze to zło (IMG:style_emoticons/default/wink.gif) można to załątwić zmieniając nazwę tablicy lub poprzez refactoring całkowity, który się tu przyda. też tak uważam (lepiej pisać kod jasny, który nie wymaga komentarzy), ale czasem komentarz się przydaje, szczególnie przy implementacji różnych algorytmów. Cytat Zaskoczę Cię. Javascript nie jest językiem obiektowym wink.gif - zaraz polecą na mnie pewnie fale krytyki. JavaScript podobnie jak C++ czy Python jest językiem wieloparadygmatowym (IMG:style_emoticons/default/wink.gif) Cytat jakie klasy powinienem stworzyć, gdyż nie "czuję bluesa" w obiektówce. opakowanie tego w "klasy" nie miałoby większego sensu (pomijając już to, że w JavaScript nie ma klas, tylko jest dziedziczenie po prototypach). Swoją drogą: Cytat exit(); w JS się wychodzi za pomocą instrukcji return, a nie za pomocą funkcji exit(). Kod var yearEnd = Number(String(year).substring(2, 4)); //końcówka roku po co tak dziwnie? Skoro możesz tak: Kod var yearEnd = year % 100; i osiągniesz to samo... Kod insert(result); w ten sposób uzależniasz się od istnienia funkcji "insert", więc jak będziesz przenosił kod tej funkcji do innego pliku, będziesz musiał przenieść również funkcję insert (a jeśli zapomnisz, będziesz miał błąd). A przecież co robi twoja funkcja? Bierze jakieś parametry, oblicza coś i zwraca wartość. Możesz zrobić coś takiego (wszędzie gdzie masz insert: Kod if (typeof (result) !== 'undefined') { return day + ' ' + spell + ' ' + year + ' roku' + ' to ' + result; } else { return ''; } a funkcję insert wywoływać "poziom wyżej": Kod insert(getDay(d, m, y)); Kod var mnth = monthValue[month - 1]; //numer odpowiadający danemu miesiącowi w tablicy zle nazwana zmienna. nic nie mówi i będzie się mylić z month. I komentarze. Pisałem, że brakuje mi komentarzy, ale nie miałem na myśli, żebyś je wstawiał bez namysłu w losowych miejscach: Cytat //odpowiednie wartości dla każdego miesiąca ten komentarz absolutnie nic nie tłumaczy. To, że to są odpowiednie wartości dla każdego miesiąca wiadomo, bo zmienna się nazywa monthValue. Komentarz raczej powinien wyjaśniac co oznaczają te wartości, skąd się to wzięło. Liczbę tygodni? Numer dnia tygodnia, od którego się zaczyna dany miesiąc? jakąś inną magiczną wartość? Idealnie, gdyby dało się samą zmienną nazwać w ten sposób, że komentarz będzie zbędny. Kod var yearCode = spec + Math.floor(yearEnd / 4) + yearEnd; //końcówkę dzielimy przez 4, zaokrąglamy do całości i dodajemy końcówkę roku To też jest zły komentarz. Komentarze służą do tego, żeby wyjaśniać to co jest niejasne, a nie po to, żeby opisywały to, co i tak widać gołym okiem (w książce "Czysty Kod" Martina fajnie jest to opisane). Kod var result = check % 7; //reszta z / 7 (IMG:style_emoticons/default/facepalmxd.gif) komentarz "reszta z / 7" to wygląda tak jakby komentarze były dla laików, którzy nie wiedzą, że znaczek procenta oznacza liczbę z dzielenia... (no i komentarze się pisze po angielsku w normalnych sytuacjach, bo programistów na świecie, którzy znają język polski jest garstka... (a nigdy nie wiadomo z kim bedziesz pracować/komu będziesz pokazywać później kod, który piszesz). ale co oznacza 7? Liczbę dni w tygodniu? Może lepiej coś takiego zrobić:
jesli moja intuicja jest tutaj dobra. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 08:53 |