![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 5.03.2017 Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
dostałem zadanie ostatnio do rozwiązania tzw. "problem plecakowy", poniżej zamieszczam kod. Usłyszałem że jest zbyt mało obiektowy... czy macie jakieś wskazówki co można poprawić, albo jak do tego podejść ? Chodzi mi o jakieś wskazówki, bo patrze na to i nie wiem co mam rozumieć przez za mało obiektowy kod... informacje o przedmiotach jakie mam "wsadzic do plecaka zaciagam z pliku csv, gdzie w pierwszym wierszu sa nazwy kolumn, ktorych nie potrzebuje wiec dlatego napisane jest w kodzie tak by to pominąć.
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 874 Pomógł: 230 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
Swoją drogą, problem plecakowy dotyczy bardziej pojemności kontenerów, a nie ilości przedmiotów w kontenerze.
Ja w takich przypadkach posługuję się gotową klasą: https://github.com/dvdoug/BoxPacker |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 5.03.2017 Ostrzeżenie: (0%) ![]() ![]() |
zastanawia mnie co w tym kodzie jest takiego ze jest "zbyt mało obiektowy", widzialem tez roznego rodzaju rozwiazania problemu plecakowego, ale napisalem swoj i chcialem sie poradzic co tu mozna zmienic zeby byl lepszy
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 270 Pomógł: 184 Dołączył: 7.10.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Poczytaj o https://pl.m.wikipedia.org/wiki/SOLID_(prog...anie_obiektowe) te wiadomosci napewno pozwola Ci zrobic z Twojego kodu bardziej obiektowy
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 129 Pomógł: 13 Dołączył: 29.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Możliwe, że chodzi tutaj o dużą ilość pętli. Na przykład metoda toBag mogłaby być od razu implementowana w metodzie countOfItemsInTheBag(). Wszystko wyświetlasz w konstruktorze i może o to chodzi.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Masz 1 klasę a na szybko narzucają się przynajmniej 2 - Bag, Element (chociaż nazwa element jest trochę za ogólna i przydało by się ją skrócić do konkretnego problemu np. Apple jeżeli w Bag możemy trzymać tylko jabłka, ew. przedmiot).
W konstruktorze jako arr podajesz nazwę pliku CSV - czyli przy zmianie sposobu wczytywaniu danych trzeba zmieniać twoją klasę - tam mógłby być jakiś interfejs np. Source + implementacja Source z CSV np. CSVSource dzięki czemu masz już 4 klasy. Co tam robi zakomentowany var_dump? Dlaczego nie używasz PHP 7.1? Nie ma żadnego wyjątku a jak np. bag się przepełni to powinien zostać rzucony wyjątek. Patrząc na wnętrze konstruktora już wiadomo, że ten kod coś nie halo ![]() -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 2.07.2025 - 03:20 |