[php][oop] dlacze tak sie pisze.... |
[php][oop] dlacze tak sie pisze.... |
14.08.2008, 12:45:46
Post
#1
|
|
Grupa: Zarejestrowani Postów: 170 Pomógł: 4 Dołączył: 11.08.2006 Ostrzeżenie: (10%) |
Witam,
ucze się oop... i nasunęło mi się takie pytanie: Dlaczego powinno się (chyba) pisać tak:
czy nie wystarczy po prostu
czy może chodzi o to że powinno się wszystko rozbijać na jak najmniejsze części (medy, classy) i każda mała część jest tylko za jedną rzecz odpowiedzialna? -------------------- |
|
|
14.08.2008, 12:50:38
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%) |
Możesz i w jeden i w drugi sposób. Zależy ściśle od tego co chcesz zrobić.
Jaka jest zaleta drugiego przykładu - w pierwszym nie możesz kontrolować co zostaje wpisane do właściwości klasy przy jej wpisaniu, może się tam znaleźć największa bzdura, a przekazując dane do metody spokojnie możesz je już na wstępie walidować. Ten post edytował Shili 14.08.2008, 12:51:31 |
|
|
14.08.2008, 12:52:05
Post
#3
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
Jak już to tak
Kod $model = new Nazwa_Modelu; $model->dodaj_strone($text, $nazwa); Ale to wszystko zalezy co to za klasa i co ona ma robic. Jezeli liczba parametrow jest cholernie dluga wiec warto robic 1 metoda. -------------------- |
|
|
14.08.2008, 13:10:04
Post
#4
|
|
Grupa: Zarejestrowani Postów: 170 Pomógł: 4 Dołączył: 11.08.2006 Ostrzeżenie: (10%) |
Możesz i w jeden i w drugi sposób. Zależy ściśle od tego co chcesz zrobić. Jaka jest zaleta drugiego przykładu - w pierwszym nie możesz kontrolować co zostaje wpisane do właściwości klasy przy jej wpisaniu, może się tam znaleźć największa bzdura, a przekazując dane do metody spokojnie możesz je już na wstępie walidować. a tak:
i np teraz w metodzie text i nazwa moge sobie sprawdzac czy wszystko ok -------------------- |
|
|
14.08.2008, 13:26:00
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%) |
Możesz i jak najbardziej jest to jedna z używanych metod. Oczywiście w tym momencie warto właściwości klasy opisać jako chronione lub prywatne, żeby umożliwić ustawianie tylko poprzez odpowiednie metody.
|
|
|
14.08.2008, 13:35:51
Post
#6
|
|
Grupa: Zarejestrowani Postów: 662 Pomógł: 45 Dołączył: 26.03.2007 Skąd: Warszawa Ostrzeżenie: (0%) |
Możesz w metodzie __set daj sprawdzanie poprawności Wszystkie możliwości są prawidłowe, a to jak Ci będzie wygodniej pisać to musisz już sam sprawić Ja np. wole dac
Kod $class->set($nazwa,$wartosc); niż rozbijać na oddzielne metody. A __set nie lubię jakoś We własnej metodzie set mogę sobie tablice itp. ustawiać, więc mam większą kontrolę i większe możliwości |
|
|
14.08.2008, 15:06:50
Post
#7
|
|
Grupa: Zarejestrowani Postów: 535 Pomógł: 27 Dołączył: 3.05.2005 Ostrzeżenie: (20%) |
Pisze sie tak aby uniknąć wywołania metody z parametrami bo czasem sa cholernie długie, po drugie masz w jeden obiekcie wywołanie funkcji z tego samego obiektu to po co do każdej przekazywać usera w parametrze skoro można to zrobić tak:
Ten post edytował wlamywacz 14.08.2008, 15:07:52 |
|
|
14.08.2008, 19:36:26
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) |
Przepraszam bardzo za mały OT, ale nie poraz pierwszy widze takie coś:
co oznacza wyraz Logined? Chodzi o Logged In? |
|
|
14.08.2008, 20:06:19
Post
#9
|
|
Grupa: Zarejestrowani Postów: 535 Pomógł: 27 Dołączył: 3.05.2005 Ostrzeżenie: (20%) |
Ważne ze wiadomo o co chodzi
|
|
|
14.08.2008, 20:52:05
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) |
Nie chciałbym tu nikomu ubliżać, ale naukę programowania polecałbym od nauki podstaw języka angielskiego.
I nie ważne, że wiadomo o co chodzi - nie czepiam się literówki czy jakiegoś tam małego błędu gramatycznego, ale tworzenie nowego języka jest trochę dziwne. |
|
|
16.08.2008, 20:56:30
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 657 Pomógł: 125 Dołączył: 29.04.2006 Ostrzeżenie: (0%) |
Jak najbardziej można, ale moim zdaniem jest to troszeczkę bez sensu. Rozbijanie wszystkiego na siłę na oddzielne funkcje składowe (metody) jest co najmniej dziwne - ani to szybkie (więcej kodu), ani funkcjonalne, użyteczne. Cytat Nie chciałbym tu nikomu ubliżać, ale naukę programowania polecałbym od nauki podstaw języka angielskiego. I nie ważne, że wiadomo o co chodzi - nie czepiam się literówki czy jakiegoś tam małego błędu gramatycznego, ale tworzenie nowego języka jest trochę dziwne. Daj spokój -------------------- |
|
|
18.08.2008, 15:16:34
Post
#12
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) |
Jak najbardziej można, ale moim zdaniem jest to troszeczkę bez sensu. Rozbijanie wszystkiego na siłę na oddzielne funkcje składowe (metody) jest co najmniej dziwne - ani to szybkie (więcej kodu), ani funkcjonalne, użyteczne. Rozbicie ma sens, jeśli można wywołać jedną metodę, a drugą już nie, jeśli obie są wymagane na raz, to lepiej jest aby przyjmowały parę argumentów (ale też nie za dużo, jak więcej to znaczy, że inaczej trzeba to rozwiązać, np. przez obiekt z danymi). Więc to czy będzie dwie metody wywołane, czy jedna, zależy od tego jak dokładnie działają. -------------------- Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami. |
|
|
18.08.2008, 16:41:27
Post
#13
|
|
Grupa: Zarejestrowani Postów: 1 657 Pomógł: 125 Dołączył: 29.04.2006 Ostrzeżenie: (0%) |
Rozbicie ma sens, jeśli można wywołać jedną metodę, a drugą już nie, jeśli obie są wymagane na raz, to lepiej jest aby przyjmowały parę argumentów (ale też nie za dużo, jak więcej to znaczy, że inaczej trzeba to rozwiązać, np. przez obiekt z danymi). Więc to czy będzie dwie metody wywołane, czy jedna, zależy od tego jak dokładnie działają. Hmm.. może Ciebie źle zrozumiałem, ale: pakowanie wszystkiego do jednej metody na siłę jest bez sensu, wtedy dużo lepiej dać to do kilku osobnych metod. To jest prawda, i jak rozumiem o tym właśnie mówisz. Natomiast przesyłanie argumentów przez osobne metody, jak tu:
to IMO kompletny nonsens. Zgodzisz się ? Obrazowo: jak chcesz zrobić pranie, to wkładasz brudną odzież do pralki i wsypujesz do niej jakiegoś persila, czy czegośtam, czy może dzwonisz do jednego specjalisty, żeby wrzucił pranie, do drugiego żeby wsypał proszek, a na końcu dopiero włączasz pralkę :] ? Takie moje zdanie Ten post edytował .radex 18.08.2008, 16:43:29 -------------------- |
|
|
18.08.2008, 20:34:21
Post
#14
|
|
Grupa: Zarejestrowani Postów: 535 Pomógł: 27 Dołączył: 3.05.2005 Ostrzeżenie: (20%) |
Nie jest! Masz klasę np. comments a w niej funkcje: add i get. Kazda potrzebuje do działania id newsa dla którego ma operować wystarczy:
niz za kazdym razem:
|
|
|
18.08.2008, 20:37:06
Post
#15
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. |
Dlaczego nonsens? A jeśli chce zmienić tylko jedno pole?
-------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
18.08.2008, 22:59:38
Post
#16
|
|
Grupa: Zarejestrowani Postów: 1 657 Pomógł: 125 Dołączył: 29.04.2006 Ostrzeżenie: (0%) |
Dlaczego nonsens? A jeśli chce zmienić tylko jedno pole? Nie jest! Masz klasę np. comments a w niej funkcje: add i get. Kazda potrzebuje do działania id newsa dla którego ma operować wystarczy:
niz za kazdym razem:
Też prawda. Nie pomyślałem o tym w taki sposób -------------------- |
|
|
19.08.2008, 11:19:15
Post
#17
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) |
Obrazowo: jak chcesz zrobić pranie, to wkładasz brudną odzież do pralki i wsypujesz do niej jakiegoś persila, czy czegośtam, czy może dzwonisz do jednego specjalisty, żeby wrzucił pranie, do drugiego żeby wsypał proszek, a na końcu dopiero włączasz pralkę :] ? Takie moje zdanie A czy jak idziesz do swojego pokoju otwierasz wszystkie drzwi aby do niego wejść, czy tylko te co prowadzą do niego? Bo chyba nie ma sensu otwierać wszystkich jak chcesz tylko przez jedne przejść. To jest przykład kiedy mamy wiele metod, ale każda jest niezależna (w użyciu) od drugiej. -------------------- Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami. |
|
|
19.08.2008, 12:05:42
Post
#18
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) |
Taki zapis jest wygodny gdy: 1) Możemy dodać wiele tekstów czy wiele nazw 2) Kod jest trochę rozrzucony Jeżeli ma to być w "zwartym szyku" to można metodzie dodaj() dodać dwa parametry. |
|
|
19.08.2008, 12:49:51
Post
#19
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. |
W praktyce, najczęściej łączy się oba sposoby. Np. w Propelu oprócz setterów i getterów jest też metoda fromArray().
-------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
19.08.2008, 12:50:09
Post
#20
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) |
Jeżeli ma to być w "zwartym szyku" to można metodzie dodaj() dodać dwa parametry. No właśnie jest mowa o tym że nie zawsze chcesz podawać dwa parametry i wtedy to wychodzi dziwnie
Chodzi o to że np. jak edytujesz jakiś wpisz (AR) to przecież nie podajesz wszystkiego na raz, tylko pojedynczo, bo jak byś chciał zmienić status to nie ma sensu abyś musiał pisać resztę pól, tylko to potrzebne. Co innego jak to ma być np. połączenie z Webservice, wtedy musisz podać adres, port, login, hasło, bo to jest konieczne do zainicjowania połączenia i zawsze muszę być wszystkie, i dlatego podaje się je jako argumenty jednej metody, czy też w konstruktorze. -------------------- Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami. |
|
|
Wersja Lo-Fi | Aktualny czas: 18.04.2024 - 03:58 |