Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zmienne lokalne i sprawdzanie argumentów
Brick
post 14.11.2017, 13:12:45
Post #1





Grupa: Zarejestrowani
Postów: 107
Pomógł: 9
Dołączył: 16.02.2004
Skąd: Kraków

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


W sumie dwa pytania:
1. Czy używacie specjalnych zmiennych lokalnych wewnątrz funkcji żeby zwiększyć czytelność kodu?
Zamiast:
  1. function convertString($string)
  2. {
  3. $string = doSomething($string);
  4. return $string;
  5. }

Coś takiego:
  1. function convertString($input_string)
  2. {
  3. $converted_string = $input_string;
  4. $converted_string = doSomething($converted_string);
  5. return $converted_string;
  6. }

W książce "Kod doskonały" autor pisze, że jest to dobry zwyczaj bo jest jasne co jest wartością zadaną a co wyjściową. Ale zastanawiam się jak to jest w praktyce.

2. Czy sprawdzanie argumentów funkcji ma zawsze sens?
Przykładowo
  1. function convertString($string)
  2. {
  3. if ($string)
  4. {
  5. $string = doSomething($string);
  6. }
  7. return $string;
  8. }

Na ogół tak robię zakładając, że nie ma sensu wykonywać jakiś operacji jeżeli nie ma na czym tego wykonać (wartość równa null). Ale może to niepotrzebne komplikowanie kodu gdyż (jak zakładam) PHP nie będzie wykonywać operacji na pustych danych?
Cały czas mam na myśli właśnie takie małe, dość proste funkcje a nie bardziej złożone gdzie kontrola argumentów jest po prostu konieczna.

Ten post edytował Brick 14.11.2017, 13:18:23


--------------------
Wszystko należy robić najprościej jak się da, ale nie prościej
Albert Einstein
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post 15.11.2017, 15:17:44
Post #2





Grupa: Moderatorzy
Postów: 36 447
Pomógł: 6292
Dołączył: 27.12.2004




No dobrze, ale niewazne czy masz ValueObject czy poprostu tekst, to przy bardzo zawilym kodzie, odpowiednie nazewnictwo zmiennych ma znaczenie tak czy siak smile.gif

takze zmierzam do tego, ze uzywanie ValueObject nie wymusza na nas zmieniania nazw zmiennych. Zmiana nazw zmiennych jest potrzebna dla czytelnosci tylko, prosty przyklad

  1. class valueObjectClass
  2. {
  3. private $v1;
  4.  
  5. public function __construct($v1)
  6. {
  7. $this->v1 = $v1;
  8. }
  9.  
  10. public function display()
  11. {
  12. echo $this->v1;
  13. }
  14.  
  15. public function modify($v1)
  16. {
  17. return new self($v1);
  18. }
  19. }
  20.  
  21. $vo1 = new valueObjectClass(1);
  22. echo 'After creation: ';
  23. $vo1->display();
  24.  
  25. $vo2 = $vo1->modify(2);
  26. echo 'After modification: ';
  27. $vo2->display();
  28. echo 'And again original: ';
  29. $vo1->display();
  30.  
  31. echo 'Ok, now we will not change name of the variable';
  32. $keepOriginal = $vo1;
  33. $vo1 = $vo1->modify(22);
  34. echo 'After modification: ';
  35. $vo1->display();
  36. echo 'And original not changed: ';
  37. $keepOriginal->display();
  38.  


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 20:58