![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 19.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Załóżmy że mamy przykladowa funkcje doSomething() :
Ten kod oczywiscie zadziała, jednak pytanie brzmi czy warto implementowac klase dla obiektow wykorzystanych w przykladzie. Czy jest sens, nawet jesli zwracaja wiekszoa ilosc danych niz tylko imie i nazwisko? Czy warto tworzyc dodatkowy kod aby byc OOP czy nie marnowac czasu"skoro dziala" ? Jakie sa roznice techniczne? Dla porownania :
Dodam że wykorzystuje to przy przekazywaniu danych do widokow (MVC). Czy warto tworzyc implementacje? pozdrawiam. Ten post edytował kezard 20.09.2010, 08:29:50 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Nie
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Twoja klasa Test to bardziej coś na kształt struktur znanych chociażby z C, niż faktyczna klasa. W pewnych przypadkach takie coś mogłoby mieć zastosowanie, ale tutaj raczej nie.
Swoją drogą im szybciej wejdzie Ci w nawyk korzystanie z getterów/setterów tym lepiej. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 19.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Swoją drogą im szybciej wejdzie Ci w nawyk korzystanie z getterów/setterów tym lepiej. Dlaczego? Uwazam ze to marnowanie czasu na pisanie funkcji get i set tylko po to zeby przepisywac wartosci do zmiennych. Pozatym niepotrzebnie sie kod powieksza. Dlaczego nie upraszczac sobie bezposrednim dostepem do zmiennych? Ten post edytował kezard 20.09.2010, 09:56:18 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Swoją drogą im szybciej wejdzie Ci w nawyk korzystanie z getterów/setterów tym lepiej. Dlaczego? Uwazam ze to marnowanie czasu na pisanie funkcji get i set tylko po to zeby przepisywac wartosci do zmiennych. Pozatym niepotrzebnie sie kod powieksza. Dlaczego nie upraszczac sobie bezposrednim dostepem do zmiennych? Bo to sie mija z logika OOP?!? -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 19.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
Hermatyzacja ? Polimorfizm ? Dziedziczenie ?
BTW - Twoj kod nie ma nic wspolnego z programowaniem obiektowym bo zamiast klasy mozna rowniez dobrze zastosowac tablice. -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Hermatyzacja ? Polimorfizm ? Dziedziczenie ? BTW - Twoj kod nie ma nic wspolnego z programowaniem obiektowym bo zamiast klasy mozna rowniez dobrze zastosowac tablice. @NuLL myslalem ze @kezard sam do tego dojdzie ;] mylilem sie ;p W php mamy malo "struktur" danych jako tako wiec albo robisz z klasy kontener ale nie w taki sposob tylko jakis bardziej wyrafinowany albo operujesz na array ![]() -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
I dobrze ze PHP jest malo struktur bo one sa przeznaczone dla jezykow nieobiektowych
![]() -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 19.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
@NuLL myslalem ze @kezard sam do tego dojdzie ;] mylilem sie ;p W php mamy malo "struktur" danych jako tako wiec albo robisz z klasy kontener ale nie w taki sposob tylko jakis bardziej wyrafinowany albo operujesz na array ![]() Widze ze sie nie zrozumilesmy, mialem na mysli ten konkretny przypadek klasy Test ktory podalem. Cytat BTW - Twoj kod nie ma nic wspolnego z programowaniem obiektowym bo zamiast klasy mozna rowniez dobrze zastosowac tablice. W tej chwili tak to u mnie dziala na tablicach dlatego szukam bardziej obiektowego rozwiazania. Przykladowo model zwraca mi wyniki w postaci tablicy, kontroler ja obrabia i wysyla ja do widoku. Chcialem zastosowac jakas implemntacje tej struktury (przyklad klasa Test) ale odradziliscie. W tej chwili wyglada to tak ze mam w kodzie takie "kwiatki" :
Co bardzo mi sie nie podoba a niemam pomyslu jak zamienic ten "twor" na bardziej przyjazny. Zamiana tego : Cytat $finalList[$j]['arr'][$counter]['warehouse_out'] Na to: Cytat $finalList[$j]->arr[$counter]->warehouse_out Nie jest chyba rozwiazaniem ktorego szukam... |
|
|
![]()
Post
#11
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Po co chcesz to zmieniać? Jeśli nie zyskasz na tym nic, to nie ruszaj póki działa. Jeśli jednak przewidujesz jakiś rozwój, który potem może spowodować rozrost takiej tablicy to wtedy tak, warto coś z tym zrobić.
-------------------- 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. |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat Dlaczego? Uwazam ze to marnowanie czasu na pisanie funkcji get i set tylko po to zeby przepisywac wartosci do zmiennych. Pozatym niepotrzebnie sie kod powieksza. Dlaczego nie upraszczac sobie bezposrednim dostepem do zmiennych? Dzięki temu zyskujesz większą kontrolę nad dostępem do danych zawartych w obiekcie. Masz dodatkowy "punkt dostępu". Nawet jeżeli w tej chwili jest to tylko przypisanie/zwrócenie pola, w przyszłości może dość potrzeba rozbudowy tego (np. dodania jakieś walidacji danych). Co prawda w przypadku PHP takie gettery/settery to dodatkowe obciążenie, ale w praktyce jest ono zerowe, a elastyczność/przyszłościowość kodu na tym zyskuje.Cytat I dobrze ze PHP jest malo struktur bo one sa przeznaczone dla jezykow nieobiektowych PHP to nie jest język obiektowy - nawet udawanie obiektowego słabo mu wychodzi. ![]() Cytat W tej chwili wyglada to tak ze mam w kodzie takie "kwiatki" : Wygląda mi na to, że używasz pętli for, zamiast foreach, która by prawdopodobnie uprościła zapis. Na początek możesz pokombinować w tę stronę.
|
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 130 Pomógł: 11 Dołączył: 7.04.2003 Ostrzeżenie: (10%) ![]() ![]() |
Cytat Dzięki temu zyskujesz większą kontrolę nad dostępem do danych zawartych w obiekcie. Masz dodatkowy "punkt dostępu". Nawet jeżeli w tej chwili jest to tylko przypisanie/zwrócenie pola, w przyszłości może dość potrzeba rozbudowy tego (np. dodania jakieś walidacji danych Ale farmazony... Gettery i settery pisane same dla siebie są złe. Juz to przerabialismy a wy dalej swoje... ;( -------------------- .:SMENTEK:.
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
Farmazony? A ja myślałem, że to się "hermetyzacja" nazywa. Ponadto po co odkopujesz stare tematy?
Ten post edytował Zyx 10.12.2010, 20:16:09 -------------------- Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0 |
|
|
![]()
Post
#15
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Farmazony? A ja myślałem, że to się "hermetyzacja" nazywa. Ponadto po co odkopujesz stare tematy? Tyle tylko, że dołożenie do każdego pola automatycznie gettera to nie jest hermetyzacja. Hermetyzacja to ukrycie kodu a wystawianie kodu przez gettera to żadna hermetyzacja.
|
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
Hermetyzacja to ukrycie wewnętrznej struktury klasy za interfejsem złożonym z metod, które mają kontrolować zmianę stanu każdego obiektu. Ponadto gdzie ja napisałem, by automatycznie dawać do wszystkiego? Dajesz tam, gdzie to jest potrzebne, implementujesz to tak, jak jest potrzebne, a getter/setter nawet nie musi mieć mapowania na pojedyncze pole. A że zazwyczaj ma? Nie zmienia to faktu, że to jest hermetyzacja, jako że ukryłeś wewnętrzną strukturę. Użytkownik nie musi wiedzieć, że to jest mapowane na pole prywatne/chronione.
-------------------- Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 05:30 |