Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]refaktoring funkcji- proszę o pomoc
Forum PHP.pl > Forum > Przedszkole
miccom
Cześć.

Czy da się zrefaktoryzować / rozbić tą funkcje jeszcze bardziej?
Będę wdzięczny za pomysły i sugestie.

Chodzi mi o funkcję calculateCardboard z klasy OrderPositionService

https://github.com/miccom1977/ERP_system/bl...tionService.php
com
oczywiście że się da, ale nikt z nas po pierwsze nie zna logiki algorytmu tych wyliczeń, z takich na szybko sugestii zmienić piramidę if else w bardziej płaska strukturę, spróbować zmienić metodę tak aby miała 1 odpowiedzialność/ resztę rozbić i liczby jako stałe, by było wiadomo czy są te doD === 1 itp, dodatkowo masz masę literówek w komentarzach/ opisach nawet w Readme i czemu komentarze po polsku, zmienne niech mówią czym są a nie skróty które tylko ty znasz i już pewnie nawet nie pamiętasz części co znaczą, algorytmy zdefiniuj sobie w jednym miejscu bo jak coś się zmieni to w 100 będziesz poprawiał dokładnie to samo, tak na szybko tyle wink.gif

tu tak samo indexy jako stale co coś mówia dla $distributionElements[1] i w innych miejscach wink.gif tak samo /1000 jako stała, bo zawsze może się zmienić, a nawet jak nie to wtedy wiadomo przez co się dzieli i czemu
emillo91
Widzę, że niektóre fragmenty kodu się powtarzają np.:
  1. $mustHaveL > $mustHaveQ => [
  2. 'instruction' => 'Produkuj element Długi i Krótki, wykonaj '. round(( $quantityPlusBonus * $orderPosition->q_elem_pieces )) .' uderzeń a następnie ',
  3. 'prodL' => round( $quantityPlusBonus * $orderPosition->q_elem_pieces),
  4. 'prodQ' => round( $quantityPlusBonus * $orderPosition->q_elem_pieces),
  5. 'consumptionA' => round( ( $quantityPlusBonus * $orderPosition->q_elem_pieces * $orderPosition->h_elem)/1000 ),
  6.  
  7. ],
  8. $mustHaveL < $mustHaveQ => [
  9. 'instruction' => 'Produkuj element Długi i Krótki, wykonaj '. round(( $quantityPlusBonus * $orderPosition->l_elem_pieces )) .' uderzeń a następnie ',
  10. 'prodL' => round( $quantityPlusBonus * $orderPosition->l_elem_pieces),
  11. 'prodQ' => round( $quantityPlusBonus * $orderPosition->l_elem_pieces),
  12. 'consumptionA' => round( ( $quantityPlusBonus * $orderPosition->l_elem_pieces * $orderPosition->h_elem)/1000 ),
  13.  
  14. ],
  15. ...

Tego typu fragmenty kodu można by przenieść do osobnej metody i generować te fragmenty, po podaniu zmieniających się parametrów, w argumentach metody . Jeżeli jakiś fragment jest zbyt skomplikowany żeby opakować go w funkcję a się powtarza, to można utworzyć dla niego osobną klasę. Tutaj zmieniają się np: "q_elem_pieces", i "l_elem_pieces" które można by generować dynamicznie. Tak samo z powtarzającym się fragmentem:
  1. $distributionElements[0]['detail'] = ...;
  2. $distributionElements[0]['rolle_width'] = ...;
  3. $distributionElements[0]['rolle_id'] = ...;

To można także opakować w metodę i zwracać w postaci tablicy asocjacyjnej.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.