Jurix
Jurix
Jurix
9
Nie rozumiem OOP.

Rozumiem na czym polega, rozumiem że kod jest przez to czytelniejszy, umiem go wykorzystać, jednak nie widzę praktycznych zalet wykorzystywania tego typu programowania.
Wszyscy mówią, że takie pisanie kodu jest jedynym słusznym, wierzę, że tak jest. Problem z tym, że pisząc jakikolwiek projekt nie mogę znaleźć powodu, by bawić się w definiowanie klas, obiektów, metod, kiedy mogę to zrobić zamiast w 10 linijkach to w 2.
Mam na swoim koncie kilka płatnych projektów, największy zajął mi 6 miesięcy, m.in. zawierał autorski CMS. Wszystko strukturalnie. Brak jakiegokolwiek doświadczenia z kimś kto patrzyłby na pisany przeze mnie kod sprawia, że jedynym warunkiem jaki sobie stawiam to to czy kod działa, nie wiem jak niektóre rzeczy powinienem rozwiązać ze względu na "sztukę programowania" itp.

Zwykle gdy się uczę nowej technologii, frameworka bariera między "nie rozumiem nic", a "rozumiem wszystko" jest bardzo cienka. Czytałem o OOP naprawdę dużo, umiem to zastosować, ale ciągle nie widzę sensu.

Poniżej jeden z napisanych przeze mnie kodów, nie zjedzcie mnie pls.

#naukaprogramowania #php
  • Najlepsze
  • Wszystkie komentarze
aseeon_
aseeon_
55
@Jurix: Ja tylko napiszę, że jeżeli masz 5 poziomów zagnieżdżeń ifów, to wiedz, że coś się dzieje
kao3991
kao3991
17
@Jurix:
Tak naprawdę, przy małych projektach do szuflady, to OOP większego sensu nie ma. Ale nigdy nie wiesz jak Twój projekt skończy, i jak będzie się rozwijał w przyszłości. A mądrze zrobione OOP (ale mądrze, to że se gdzieś class wpiszesz nie wystarczy) daje dużo większą możliwość rozwijania projektu. Zobacz - tutaj pokazałeś kawałek kodu który zapisuje w bazie jakąś stronę. Pewnie masz w aplikacji analogiczne kawałki zapisujące np. komentarze,
xetrov
Mam na swoim koncie kilka płatnych projektów, największy zajął mi 6 miesięcy, m.in. zawierał autorski CMS. Wszystko strukturalnie.


@Jurix: czyli robisz niewielkie rzeczy w których nie współpracujesz z innymi, nie utrzymujesz tego i nie przejmujesz kodu po kimś. Dodatkowo stawiam na brak testów i inne typowe problemy w takich sytuacjach, w efekcie powstają takie potworki jak na Twoim obrazku. Na tym etapie nie dziwi że masz takie odczucia, ale jak
s.....o
s.....o
@Jurix: sensem oop nie jest 'pisanie klas' a delegowanie zadań (do wyspecjalizowanych obiektów)
masz np: komentarz w kodzie

Sprawdzenie jakie $IDMenu ma strona o ID $IDStronyMenu

możesz zacząć od refaktoryzacji kodu by komentarz nie był potrzebny
uirapuru
@Jurix: nie testujesz jednostkowo funkcji, prawda? podejrzewam, ze testy manualne to maks, jaki robisz, a kodu sam dlugo nie musisz utrzymywać i nie wspolpracujesz nad nim z innymi ludzmi. we wlasnym sosie niektorych mechanizmow faktycznie sie nie potrzebuje i to rozumiem. ale programisci nie tworzą systemów w pojedynke. oop daje narzut, ale też możliwości.
zakopiak
zakopiak
zakopiak
  • adult
7
Treść przeznaczona dla osób powyżej 18 roku życia...
joolekk
joolekk
@Jurix: czytałeś "czysty kod"?
wiktor12348
wiktor12348
@Jurix: Tłumaczą Ci od dłuższego czasu po co używać OOP, a ty dalej swoje:

Łatwo mówić przez pryzmat swoich projektów i doświadczeń, jednak przy małym doświadczeniu jakie ja posiadam wciąż nie mogę zastosować


Jakbyś pracował jako kopacz rowów. Szef do Ciebie mówi "młody bierz koparkę i kop" a ty jak p---a stoisz i kopiesz łopatą, bo nie widzisz zastosowania koparki. To jest to
uirapuru
@Jurix: doskonale rozumiem, że można sobie radzić bez opp. mozna nieźle w php programować funkcyjnie na przykład. rzecz w tym, że jeżeli nie jesteś w mainstreamie, będzie ciężko wspołpracować Tobie i innym. Ale to nie jedyny powód
joolekk
joolekk
@Jurix: a co jeśli w innym miejscu kodu będziesz chciał sprawdzić

jakie $IDMenu ma strona o ID $IDStronyMenu

?

znów skopiujesz ten sam kod z tym
Perfer
@Jurix rozumiem, że łatwiej Ci p--------ć 4 includy w każdym pliki osobno, niż zrobić core class w którym tworzysz instancje połączenia do bazy wraz z poszczególnymi metodami autoryzujacymi i potem tylko excludowac core przy nowej klasie? Pracuje obecnie na dużym projekcie w "czystym" PHP i uwierz mi, co innego zrobić i oddac, a co innego modyfikowac/optymalizować/zabezpieczać bez OOP
joolekk
joolekk
@Jurix: z tym że dobry kod jest czytelniejszy od złego to się zgadzam. xD

Ale twój strukturalny jest czytelniejszy dla ciebie. Nikt kto na co dzień pisze obiektowo nie zrozumie na pierwszy rzut oka tego co napiszesz.
veranoo
veranoo
@Jurix: o Panie, też tak kiedyś pisałem, musisz się nauczyć delegowania zadań do specjalnych obiektów, które mają tylko jedną odpowiedzialność, następnie poczytać o wzorcach projektowych i je po mału wdrażać, nauczyć się wspoldzielic kawałki kodu żeby go nie powielać. Ale pierwsze co to zacznij pisać kod po angielsku, nie uciekniesz od tego, im prędzej zaczniesz tym lepiej dla Ciebie. Niech angielski idzie równo w parze z programowaniem, bo znacznie Cię
pyra991
pyra991
Tak, naprawdę to jeszcze nie zdajesz sobie jak masz braki, jeżeli chodzi o programowanie. Programowanie obiektowe jest po to, żeby kod był łatwiejszy w utrzymaniu i w rozumieniu go przez inną osobę. Częściej czytasz kod niż piszesz.
Widzę u Ciebie efekt Krugera-Dunninga, jeszcze nie wiesz jakie masz braki, dopiero jak wejdziesz w to głębiej zobaczysz, ile jeszcze masz do nauki. Doświadczyłem to na sobie.

P.S.
Przez takie potworki jakie stworzyłeś, później mają
Jurix
Jurix
Jurix Autor
3
@kao3991: Hm, o takie podejście mi chodziło. Brzmi rozsądnie, logicznie i przede wszystkim konkretnie, o to mi chodziło :)
Następny projekt jaki będę pisał spróbuję w pełni obiektowo.

A co do sql injection, nie mam pojęcia jakim cudem mogłem tego chociaż podstawowo nie zabezpieczyć, niby jest to wewnętrzny panel admina, jednak nie zmienia to faktu, że zabezpieczenie musi być. Pozostałe skrypty są zabezpieczone.