To znowu ja, razem z moimi problemami. Tutaj pytałem o codereview mojego programiku w Javie - Unit Converter.
Poprawiłem chyba większość z tego co mi wytknęliście. Ale przez to pojawił mi się problem, jak podzielić program na package.
Nie bardzo też mogę wymyślić w jaki sposób opuścić wybieranie jednostki i powrócić do menu głównego (ostatnia metoda w klasie UnitReader).
I znowu jeżeli macie jeszcze jakieś inne uwagi, to piszcie, proszę. Chcę zostawić
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Seveir: W klasie UnitConverter brakuje Tobie EOL (https://stackoverflow.com/questions/729692/why-should-text-files-end-with-a-newline#729795).
Widzę, że masz zdublowaną metodę writeProblemMessage -> stwórz nową klasę, której zadaniem będzie wypisywanie errorów.
W klasie UnitReader modyfikatory dostępów mają być defaultowe? Jak wsadzisz to do jakiegoś pakietu to nie będziesz miał dostępu do tych metod.
Staraj się nie zostawiać zakomentowanego kodu, zwłaszcza jeśli idzie to na mastera.

int index = 1; ?????? co oznacza ta zmienna? może powinno to być
  • Odpowiedz
Czołem Mircy,
Powoli zaczynam znowu programować. Ponad dwa lata temu skończyłem technikum, ale raczej unikałem przez całe cztery lata jakiegokolwiek samokształcenia, przez co sporo zapomniałem, o ile w ogóle chciało mi się coś nauczyć.
Ale do rzeczy: tworzę mały projekcik przelicznika miar w Javie. W sumie to w takiej formie chyba go już zostawię, jednak byłbym wdzięczny za code review. Wszelkie uwagi bardzo mile widziane, co do nazw zmiennych, logiki całego programu
  • 17
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Seveir:
trochę dziwne jest, że w liście z jednostkami dodajesz np. takie coś new Unit("BACK", -1)
Generalnie zarówno miary jak i odległości to pewien zamknięty zbiór, więc zamiast klasy Unit wykorzystałbym na Twoim miejscu tutaj enumy. Klasy miałyby sens, gdybyś dawał użytkownikowi możliwość definiowania jednostek.
Liczby reprezentujesz jako double, co nie jest jakimś wielkim błędem w takim małym programiku, ale od razu możesz sobie przećwiczyć BigDecimale jako prawidłowy wybór przy precyzyjnych obliczeniach.
Spróbuj
  • Odpowiedz
#java #naukaprogramowania #codereview

https://pastebin.com/TJVCd2W9

Takie coś finalnie wyszło, dzięki za pomoc wszystkim, nie wiem jedynie czym zastąpić te przestarzałe get Year, poza tym działa.

Byłbym również wdzięczny za pomoc jeśli chodzi o testy jednostkowe, tzn. co testować i jak to ugryźć, bo czytam sobie teraz o tym ale nigdy testów nie pisałem.
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

  • 0
@dzeksondzekson

no nie bardzo chyba bo u mnie dataUrodzenia to jest String

No i słabo. String to ciąg znaków. Nie nadaje się do reprezentacji daty.
Czytasz tę datę z pliku jako String. Wiadomo. Ale musisz to jak najszybciej zamienić na właściwy typ.
  • Odpowiedz
#php #symfony #symfony3 proszę o #codereview mojej próby stworzenia projektu w oparciu o Hexagonal Architecture i jednocześnie zrozumienia tej koncepcji. W przypadku encji poszedłem na skróty, ale z tego co oglądałem na konferencjach, to zdarzają się takie decyzje, które ułatwiają pracę (np Kris Wallsmith). Moja encja jest jednocześnie tą z domeny oraz z bazy danych. Jeśli z kodu wynika Wam, że czegoś nie rozumiem
  • 15
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@masterix: nie nazwałbym tego co robisz architekturą heksagonalną. Brak wstrzykiwania zależności by móc nimi żonglować (a nam tym polega ta architektura, wyciągasz bloczek "wolny MySQL" i wkładasz za niego "szybki Elasticsearch"), beznadziejnie zaimplementowany CQRS (to nawet nie jest CQRS bo nie ma literki Q, nie ma literki C, pewnie nie ma również R i S, chyba, że zmienna $commandBus jest tylko z nazwy), brak separacji zmiennych (modyfikator publiczny, kiedy można
  • Odpowiedz
Mam pytania do mojego kodu w #java - napisałem sobie prosty monitor domen (czy odpowiadają i jakim statusem). Kod jest dostępny na GH: https://github.com/masterix/domain-monitor
1) https://github.com/masterix/domain-monitor/blob/master/src/MonitorApp.java czy te bloki try/catch nie lepiej byłoby połączyć w całość i rozbić tylko akcję w catch ze względu na wyłapywany wyjątek? Teraz tak bez sensu jest trochę zmienna domainList przed pierwszym blokiem try/catch, żeby była widoczna w nastepnym
2) Chcę stworzyć powiadamianie dla niektórych
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Hej
Napisałem jakąś pierwszą wersję swojej aplikacji do liczenia czasu pracy. Założenie jest takie, żeby dodawać sobie czasy pracy (WorkActivity) i później na ich podstawie wysyłać sobie informacje na maila. Pliki kontrolerów i .html powstały trochę dodatkowo bo głównie chciałem się skupić na tym, aby warstwa aplikacji i wszystko co niżej działało i wyglądało dobrze (jak mi to wyszło to się okaże ;) )

https://github.com/krasnoludkolo/WorkCounter

Z rzeczy które wiem co trzeba zrobić:
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Tylko_Japonki:

Nie stosuj wildcardów (*) przy importach.
Używaj camelCase do nazywania zmiennych.
Używaj klamer {} przy ifach i forach, nawet, jak instrukcje są jednolinijkowe.
Nie duplikuj kodu - jeśli kilka metod używa wspólnego kodu, postaraj się go wyabstrahować do osobnej metody.
Statyczne importy wrzuć na 'górę'.
  • Odpowiedz
#codereview #programowanie #naukaprogramowania Proszę o rzeczowy code review, z funkcjonalności to edit nie działa poprawnie, bo coś z id null wywala błąd, zamiast edytować kontakt dodaje kolejny i póki co nie wiem jak to naprawić. I z search jest mały problem tzn, jak teraz jest List searchBySurname(String surname); to można dodawać powtarzające się kontakty, ale po kliknięciu w szukaj cały czas w okienku szukania wywala toString
  • 17
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Programiści, czy duplikacja kodu to jest aż taki grzech? Rozumiem, że czysty kod jest ważny, ale w momencie kiedy spędzam nad zadaniem kilkanaście godzin oczekuję jakiegoś bardziej merytorycznego przeglądu kodu: czy architektura się zgadza, czy nie ma rażących błędów, a tymczasem gość już któreś review zaczyna od tego, że wyciąga zduplikowane części kodu. Mania na maksymalną abstrakcję to jest codzienność u każdego szanującego się programisty, czy trafiłem na #codenazi?
  • 17
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@kornfan: Duplikacja jest problematyczna w momencie kiedy trzeba coś zmienić w logice, którą sobie kopiuj-wklejasz. W dwóch miejscach jeszcze ogarniesz, ale potem to już bardzo bug-genne jest.
  • Odpowiedz
Czy jest tu jakiś ziomeczek znający się na RxJS (lub ogólnie Rx*), który chciałby mi zrobić code review jednego pliku? Nie wiem czy nie przekombinowałem z żonglowaniem Observable.

#rxjs #rx #webdev #codereview
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@fistasheq: Jak dla mnie przesadzone. Jeśli uczysz się Observabli i chcesz z nich korzystać to rozumiem, ale ja bym je powyrzucał i zrobił logikę na normalnych funkcjach.

A jeśli chcesz, żeby inne komponenty reagowały na dane zdarzenia, to zrobiłbym jakiś event z określonym typem i rzucał do oddzielnego Service'u i niech te komponenty się subskrybują na konretne zdarzenia.
Coś w tym stylu:
http://abusanad.net/2016/08/20/angular-2-cross-modules-communication-eventaggregator/
  • Odpowiedz
@saquas: jednocześnie synchronized i volatile, do tego tylko zmieniasz tam ten licznik, no tak właściwe nie wiem po wątki skoro wszystko syncujesz.
AtomicInteger tak jak ktoś pisał wyjdzie tu znacznie lepiej jako shared counter.
  • Odpowiedz
@saquas: ja mam jedynie niewielkie uwagi:

- nawet, jak masz single-line statement po ifie, to używaj klamer {}, to pozwoli uniknąć błędów.
- enumy możesz formatować trochę
  • Odpowiedz
Trochę się cykam, ale nadszedł moment, kiedy muszę Was spytać o parę rzeczy mirki.

Mam tu taki projekcik, przy którym chciałem poćwiczyć pracę nad gotowym szablonem w kontekście rwd i układania elementów w sassie, gdyż mój poprzedni projekt robiłem całkiem sam, przez co jest po prostu szpetny ( https://tomlos.github.io/Coders-Lab-Final-Project-Tomasz-Los/ i wymaga poprawy - działa tylko w zakresie 1 doby, szerszy zakres czasu rozkracza program i grafiki).

Oto projekt, wobec którego mam trochę pytań:
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Kain_to_Charlie_a_Delta_to_Kain:
Menu: o firmie, menu rozwijane po najechaniu nie klikaniu.
W karuzeli strzałki zamieniłbym na buttony. Teraz mogę kliknąć wysoko nad strzałką i DIV mi to łapie.
Zdjęcia całe klikalne, nie tylko napisy.
Ad. 3 Zrobiłbym to w programie graficznym, tak żeby krzesła miały miały podobny rozmiar.
  • Odpowiedz
@advert: Ja jestem po tym bootcampie Coders Lab, który niestety stety kosztował sporo hajsu, chociaż ja i tak załapałem się jeszcze na niższą cenę. I jak widać - od zera do jakiegoś poziomu doszedłem, ale trochę wyleciało z głowy, a jak się nie ćwiczy intensywnie, to też czasem coś wypadnie z głowy.
Z pewnością szlifuj dalej html i css, a sass/less - według uznania, ale na pewno ułatwia to pisanie
  • Odpowiedz
@sokytsinolop: Moznaby to zrobic obiektowo. Az sie prosi.
Zamiast tablic lepiej chyba byloby uzyc jakiegos sensownego ceplusplusowego kontenera (std::vector, std::array).
Pomijajac wszystko... w generation() chyba lepiej zebrac wszystkie pola do uaktualnienia a potem je uaktualnic zamiast kopiowac tablice tam i spowrotem.
  • Odpowiedz
@Blade:

1. Testy automatyczne. Skąd mam wiedzieć czy Twój kod w ogóle działa?
2. Też irytuje mnie mieszanie camelCase ze snakecase
3. https://en.wikipedia.org/wiki/Single_responsibility_principle – masz widgeta, który w tej chwili wie jak robić dwie rzeczy na raz: zarządzać taskami i zapisywać swój stan. Jak rozpoznać, że się narusza SRP? Pomyśl jakie zmiany mógłbyś chcieć wprowadzić. Np mógłbyś chcieć zmienić format zapisu z JSONa. Albo w ogóle pisać do bazki.
  • Odpowiedz
generalnie to zrobiłem ten program bo nie lubię playera twitcha, jest okropny i lubi się zacinać mimo że mam jeszcze połowę wolnych zasobów.


@jaggi: Z tych samych powodów odpalam skryptem stream'a via livestreamer + WMP ( ͡° ͜ʖ ͡°)
  • Odpowiedz