Code Monkey home page Code Monkey logo

gra-w-smierc's People

Contributors

amosialek avatar kornelia22322 avatar kotwic4 avatar michalpawlowicz avatar peantab avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

kornelia22322

gra-w-smierc's Issues

Player, BOT - Milestone 1 - Uwagi

  1. Testy są
  2. Starajcie się nie robić mapowania że jeden test jednostkowy testuje jedną metodę i koniec; testy jednostkowe powinny być małe, tak, ale nie powinny skupiać się na metodach ale na jednostkowych zachowaniach klasy. Np ten test można raczej nie testuje wszystkiego co dzieje się w konstruktorze, sądząc po wywołaniu new CheatBot(null, null, 0, board, null);
  3. A taki test już gdzieś jest i chyba testuje ten sam kod który jest w abstrakcji. W testach też obowiązuje DRY. Jak testujemy kod z abstrakcji to nazwijmy go PlayerTest i przetestujmy to raz, na konkretnej implementacji.
  4. Im dłużej się przyglądam temu (a okazji mam sporo) tym bardziej jestem przekonany że nie testujecie tu żadnego swojego kodu tylko czy mock się dobrze nagrał :-)
  5. Te linie chyba powinny być w odwrotnej kolejności. W przeciwnym razie zaczniemuy coś działać bez oznaczenia tury.
  6. Ta abstrakcja bardzo się rozrosła a liczba prywatnych pól świadczy o tym że klasy pochodne nie za bardzo z niej korzystają. Dodatkowo, posiada ona dwa konstruktory więc w każdej klasie pochodnej pojawia się ten sam nudny boilerplate. Czy możemy cos z tym zrobić?

Board Module - Milestone 1 - uwagi

  1. Testy jakieś są :-)
  2. Test jednostkowy taki jak ten powinien testować jedną rzecz (SRP); w szczególności to powinno być w CoordinatesTest
  3. JUnit oferuje jeszcze inne asercje oprócz assertEquals które można wykorzystać np tu
  4. Samo użycie nazwy mock dla zmiennej jeszcze z tego mocka nie zrobi
  5. To raczej jest value object (aka DTO), raczej immutable
  6. Inicjalizacja planszy w ten sposób uniemożliwa wam jej przetestowanie jednostkowo, choć może się okazać że nie będzie to konieczne jeśli pojawią się odpowiednie testy samych tilów
  7. Taki kod z którego na pierwszy rzut oka nie wiadomo praktycznie nic to idealne miejsce do wprowadzenia testu jednostkowego
  8. Powinniśmy się zabezpieczać przed odwołaniem sie do nieistniejącego kafla a w innych miejscach wykorzystywać już dostarczone rozwiązanie, ukrywając implementację tablicową
  9. W dalszym ciągu uważam że słowo delete jest mylące
  10. Skoro nation jest niezmienne powinno być finalne
  11. Jeśli się nie mylę, metoda uncheckedSetInhabitant została stworzona tylko po to by wykorzystać ją w teście. Nie powiem, że praktyka dostosowania kodu by był on testowalny była niespotykana, ale tutaj nagranie opdowiedniego mocka rozwiąże problem.

GUI, Edytor - Milestone 1 - Uwagi

  1. Brak testów.
  2. Preferujemy raczej prywatne pola. Dlaczego?
  3. Pola niezmienne powiiny być tak oznaczone. Dlaczego?
  4. Udostępnianie wewnętrznej reprezentacji planszy w ten sposób to tak na prawdę eksponowanie na zewnątrz pola prywatnego. Nie ma przeszkód by sobie pozmieniać tile wewnątrz tej tablicy i Board nawet się o tym nie dowie. Można zbyt łatwo napisać kod który będzie oszukiwać. Co z tym zrobić?
  5. BoardBuilder tak na prawdę nie buduje planszy tylko ją uzupełnia, co już wyraziliście w nazwie metody. Natomiast mam silne przekonanie że plansza raz wypełniona nie powinna pozwalać na powtórne wypełnienie, bo znowu pozwala to na wiele nadużyć. Co z tym zrobić?
  6. Dlaczego serializer ma metody gsonSave i load? Nie jest to spójne ze sobą oraz jedna z nich zdradza implmementację, przez co unimożliwia jej podmianę.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.