Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] operator trójkowy
Fred1485
post
Post #1





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Witam,

Czy pisząc kod jestem zobowiązany w pewnych blokach kodu używać zwykłego ifa czy też skróconego czy to zależy tylko ode mnie (wiem może pytanie głupie ale dla mnie skrócony if to coś bardzo przydatnego, kod się wtedy robi dla mnie bardziej czytelny w pewnych momentach) Jak wy to rozpatrujecie u siebie?
Go to the top of the page
+Quote Post
olszam
post
Post #2





Grupa: Zarejestrowani
Postów: 342
Pomógł: 23
Dołączył: 20.01.2011
Skąd: Chełm

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


Ja jestem przyzwyczajony do standardowego ifa wiec ogólnie zależy od tego kto jak to woli. W życiu to tylko kilka razy pisałem operatorem trójkowym i szczerze mi się czytelnie piszę w normalnym if-ie.
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #3





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




To jest kwestia obycia z takim zapisem. Ja go stosuję, bo jest krótki w zapisie...
Go to the top of the page
+Quote Post
Fred1485
post
Post #4





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Dla mnie tez to jest szybsze i lepsze często (IMG:style_emoticons/default/haha.gif)
Go to the top of the page
+Quote Post
viking
post
Post #5





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Przydaje się szczególnie przy zwracania wartości bezpośrednio do zmiennej:

  1. $test = (warunek)? 'a' : 'b';


Nie ma wtedy dublowania kodu. A tak wedle upodobania.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Ba nawet w nowszym PHP coś takiego:

Kod
$zmienna = $zmienna ?: 0;
Go to the top of the page
+Quote Post
Janusz1200
post
Post #7





Grupa: Zarejestrowani
Postów: 110
Pomógł: 6
Dołączył: 19.12.2010
Skąd: Krzyżanowice

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


Jest ok, byle unikać zagnieżdżania, na tym się kiedyś nadebugowałem, że ho!

Jak jest napisane w dokumentacji:

It is recommended that you avoid "stacking" ternary expressions. PHP's behaviour when using more than one ternary operator within a single statement is non-obvious:
Go to the top of the page
+Quote Post
Fred1485
post
Post #8





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


A już nie pisząc nowego tematu mając klasę i w niej wiele metod to lepiej napisać więcej mniejszych metod(mniej kodu w każdej z nich i każda do poszczególnych działań się odnosi) czy lepiej napisać kilka większych metod i tam wszystko upchać?

Ten post edytował Fred1485 25.04.2015, 12:28:56
Go to the top of the page
+Quote Post
Forti
post
Post #9





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


Metody powinny byc możliwie Male i odpowiadać za jedna pojedyncza rzecz. Wg. Mnie metoda z więcej niż 10-15 linijek musi mieć na prawdę dobry ku temu powod (oczywiscie nie mowie tutaj o np. 20 setterach jakies klasy/encji) a powyżej 20 to już brązem zalatuje (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
Fred1485
post
Post #10





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


To jeszcze jedno pytanko,

na początku w klasie sobie definiuję zmienne np:

private $page,
etc...

I pytanie jest takie czy każdą zmienną która będzie użyta choć raz w klasie muszę zapisać aby kod był napisany prawidłowo (jak nie napiszę to też oczywiście zadziała wiadomo dlatego chodzi bardziej o ścisłość) np mam prostą metodę:

  1.  
  2. private function createInactiveLink($value) {
  3. /**
  4.   * do poprawy sprawdzenie parametrów
  5.   */
  6. $pattern = '{V}';
  7. $replace = $value;
  8. $this->_inactive_link = str_replace($pattern, $replace, $this->_params['inactive']);
  9. return $this->_inactive_link;


Funkcja przyjmuje dwa parametry oraz zwraca wartość i czy tutaj to poprawnie napisałem czy wystarczy:

  1.  
  2. private function createInactiveLink($value) {
  3. /**
  4.   * do poprawy sprawdzenie parametrów
  5.   */
  6. $pattern = '{V}';
  7. $replace = $value;
  8. $inactive_link = str_replace($pattern, $replace, $this->_params['inactive']);
  9. return $inactive_link;


Nie do końca rozumiem kiedy te zmienne na początku deklarować (tutaj widać w tej metodzie że jakaś wartość jest zwracana i potem nie będzie nigdzie indziej w klasie użyta) Jaka jest zasada bo na pewno jest, przeglądając kody innych programistów widać że często stosują to z drugiego przykładu (IMG:style_emoticons/default/sad.gif)


Ten post edytował Fred1485 25.04.2015, 17:13:46
Go to the top of the page
+Quote Post
Turson
post
Post #11





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Jeżeli nie wykorzystujesz nigdzie pola klasy to nie ma sensu go inicjalizować
Go to the top of the page
+Quote Post
Fred1485
post
Post #12





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Ale w jakim sensie nie wykorzystuje? Tutaj jedynie wykorzystuje zmienne parent i replace w jednej metodzie ale jednak używam. Chodzi ci o to ze jak w innym miejscu nie używam?
Go to the top of the page
+Quote Post
Pyton_000
post
Post #13





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Atrybuty deklaruje się wtedy, gdy chcesz mieć w klasie dostęp do danych. Przykład:
  1. class Test {
  2.  
  3. private $pattern;
  4.  
  5. public function __construct($pattern)
  6. {
  7. $this->pattern = $pattern;
  8. }
  9.  
  10. public function getReplaced($text)
  11. {
  12. return str_replace('Ala', $this->pattern, $text);
  13. }
  14. }
Go to the top of the page
+Quote Post
Janusz1200
post
Post #14





Grupa: Zarejestrowani
Postów: 110
Pomógł: 6
Dołączył: 19.12.2010
Skąd: Krzyżanowice

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


Cytat(Turson @ 25.04.2015, 18:20:48 ) *
Jeżeli nie wykorzystujesz nigdzie pola klasy to nie ma sensu go inicjalizować


To zdaje się należy do dobrych praktyk (inicjowanie zmiennych choćby nullem) a poza tym przydaje się szczególnie w PHP, gdy ktoś ma przejąć kod i nie wie, co i po co ta zmienna. Z tym, że zmienna musi być oczywiście gdzieś w metodzie użyta, jak nie jest, to po co ją deklarować?


Ale Autorowi chodziło chyba o to, że ni z gruchy ni z pietruchy wprowadza w prywatniej metodzie

Cytat
$this :


Kod
$this->_inactive_link = str_replace($pattern, $replace, $this->_params['inactive']);
return $this->_inactive_link;


zamiast

Kod
$inactive_link = str_replace($pattern, $replace, $this->_params['inactive']);
return $inactive_link;


(czy lepiej - od razu

Kod
return tr_replace($pattern, $replace, $this->_params['inactive']


- po co ta zmienna $inactive_link? )

Otóż takie $this stosowane nieświadomie jest bez sensu i szkodliwe. Świadome zresztą też jest złe. Gdzie enkapsulacja? Gdzie unikanie efektów ubocznych? Ale mi się zdarza (IMG:style_emoticons/default/smile.gif)

Ten post edytował Janusz1200 25.04.2015, 21:03:33
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 Aktualny czas: 22.08.2025 - 15:25