Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]refaktoring funkcji- proszę o pomoc
miccom
post 7.09.2021, 15:03:34
Post #1





Grupa: Zarejestrowani
Postów: 456
Pomógł: 7
Dołączył: 7.07.2007
Skąd: Tychy

Ostrzeżenie: (0%)
-----


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


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
Go to the top of the page
+Quote Post
com
post 10.09.2021, 12:18:12
Post #2





Grupa: Zarejestrowani
Postów: 2 992
Pomógł: 362
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


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

Ten post edytował com 10.09.2021, 12:26:28
Go to the top of the page
+Quote Post
emillo91
post 11.09.2021, 21:49:00
Post #3





Grupa: Zarejestrowani
Postów: 129
Pomógł: 13
Dołączył: 29.03.2012

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 21.10.2021 - 01:04