Mirki, trochę mnie boli w Pythonie, że można robić "brzydkie rzeczy", więc nietrudno nabrać złych przyzwyczajeń bez nauczyciela/współpracownika.

Teraz rozkminiam __init__() - przykład z tę samą klasą zaimplementowaną na 2 sposoby: https://pastebin.com/qG1aJ9SU
Klasa Napraw to "typowa konstrukcja", gdzie wszystko mam w __init__, ale wymusza podawanie parametrów przy tworzeniu instancji.
Klasa Tagi - nie wiem jak często albo czy w ogóle taka konstrukcja jest używana, ale w mojej ocenie jest wygodniejsza w użyciu i bardziej
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@grajlord: wrzuć wszystko w _init_, takie inicializowanie klasy osobną metodą już po stworzeniu to straszny syf. Drugi sposób jest słaby, bo rozwiązuje problem, którego nie ma, dodatkowo strasznie zaciemnia kod.
  • Odpowiedz
@Moris299: jak na początki OOP całkiem spoko. Zdecydowanie wszystkie (aktualne) PSRy, które definiują wygląd kodu i jego porządek - od takich drobnostek jak zapis nazw klas i funkcji po ciekawostki typu autoloader. Pomyśl też o komentarzach PHPDoc.
  • Odpowiedz
Maurycy,

https://www.php-fig.org/psr/psr-2/ - na początek
Nie trzymaj żadnych api kluczy w pliku .txt, bo taki plik jest zwykle dostępny na serwerze po prostu po url i wyświetli całą zawartość każdemu chętnemu. Zresztą narzucanie gdzie ktoś ma trzymać api klucz jest bez sensu.
Żadnych define, globalnych zmiennych itd. zresztą są one tutaj zbędne, ktoś żeby zcustomizować Twoją klasę musi ją skopiować i zmienić wartość w define.
Po to robisz klasę żeby ktoś mógł jej użyć tak:
  • Odpowiedz
Mirki, dziś darmowy #ebook z #packt: "Object-Oriented JavaScript"
https://www.packtpub.com/packt/offers/free-learning

Polecam obserwować: #packtpubfreelearning

Jeśli ktoś się spóźni i chce książkę proszę od razu na PW adres email wraz z tytułem książki. Zgodnie z polskim prawem nie można legalnie udostępnić tych zasobów masowo. Ale można bezpośrednio, korzystając ze stosunku towarzyskiego, więc
MiKeyCo - Mirki, dziś darmowy #ebook z #packt: "Object-Oriented JavaScript"
https://...

źródło: comment_ztTyeajAwEZ1fQl3vOYo8Ii2kmLBxffF.jpg

Pobierz
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

W jaki sposób ukryć implementację encji w poszczególnych serwisach, jeśli jednocześnie chcemy, żeby encje mogły być w relacji z encjami z innych serwisów? Na myśl przychodzą mi tylko publiczne interfejsy, ale to raczej nie rozwiązuje problemu

[ #ddd | #oop | #java | #spring | #naukaprogramowania ]
  • 11
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@noarch: Jeśli jeden pakiet potrzebuje danych prywatnych drugiego pakietu to może być to jedna z takich sytuacji:
1) Prywatne dane drugiego pakietu nie są tak na prawdę prywatne i trzeba je wstawić na jakimś interfejsie komunikacyjnym
2) Coś jest nie tak z odpowiedzialnościami i/lub rzeczy są zbyt mocno podzielone. Wtedy trzeba się dobrze zastanowić nad tym co się tak na prawdę dzieje.

Dodam tylko, że ogólnie te wszystkie zasady odnośnie układania kodu, wszelkie
  • Odpowiedz
@noarch: tez mieliśmy ten problem. U nas świetnie sprawdziło się rozwiązanie 1 tylko identyfikatory opakowane jako value objects. Co do redundancji to moim zdaniem tylko wtedy gdy jest naprawdę potrzebna z biznesowego podejścia.
  • Odpowiedz
#python #oop #programowanie #programowanieobiektowe
Mirki programiści pomuszcie proszę początkującemu, bo nie bardzo rozumiem co tu się dzieje :(
Definiuję klasę Dog, która posiada zmienną name i słownik z cechami nazwany attributes.

Teraz, wywołuję nowe obiekty tej klasy w globalnym słowniku "psy":

psy
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mireczki, natknąłem się kiedyś na stronę, na której autor przedstawiał bardzo rygorystyczne zasady programowania obiektowego. Coś w stylu: metody nie mogą mieć więcej niż 10 linii, klasy mają mieć maksymalnie 5 memberów i 10 metod itp. To było chyba coś całkiem znanego, bo pamiętam, że wiele osób komentowało ten zbiór zasad jako fajne ćwiczenie. Jest ktoś w stanie poratować linkiem?

#programowanie #oop
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

W bazie danych mam około 50 rekordów. Teraz chciałbym w oop zrobić funkcje, które pobierają te wartości. Muszę zrobić tyle funkcji pobierania ile jest wartości, czy mogę jakoś jedną? Chcę pojedyńczo sobie w różnych miejscach na stronie wyświetlać.
#php #oop #naukaprogramowania
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

#php Backend Developer ze znajomością #zendframework

Co będziesz robił?
- analiza kodu
- poprawa funkcjonaliści i późniejsze utrzymanie portalu
- tworzenie nowej wersji portalu
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

#php Backend Developer ze znajomością #zendframework

Co będziesz robił?
- analiza kodu
- poprawa funkcjonaliści i późniejsze utrzymanie portalu
- po kilku miesiącach zaczniemy tworzyć portal od nowa, w nowszych technologiach
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mirki, jak to najlepiej zrobić?
Załóżmy mam abstrakcyjną klasę Entity i chcę wprowadzić do mojej aplikacji owoce, jak to lepiej zrobić? Każdy owoc jako oddzielna klasa dziedzicząca po Entity(tutaj widzę trochę problemy z losowym generowaniem owoców) czy jedna klasa Fruits dziedzicząca po Entity i później obiekty tej klasy jako kolejne owoce?

I drugie pytanie
Załóżmy że mam klasę Fruits(lub klasy Apple, Banana itp) i chcę, żeby klasy reprezentujące jadalne rzeczy dziedziczyły dodatkowo
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@sorhu: Tylko z tym wiążą się kolejne problemy, bo np. nie każdy item powinien posiadać metodę onEat lub coś w tym stylu, a takie coś udostępniałoby dziedziczenie po klasie Edible. :P
  • Odpowiedz
Witajcie mirki.
Mam sobie kontroller #symfony2. W kontrolerze mam różne metody. Prawie w każdej z metod korzystam z obiektu User i EntityManager (chyba), w tym celu w każdej z metod piszę takie dwie linijki kodu:

$em = $this->getDoctrine()->getManager();
$user = $this->get('security.token_storage')->getToken()->getUser();

Czy można w klasie jakoś "globalnie" zadeklarować te zmienne i korzystać z nich w każdej z metod czy jestem skazany na tworzenie tych samych obiektów w każdej z
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@matiit: (CC @normanos)

ale ja po prostu nie umiem "lekko" pisać, nigdy mi to nie wychodziło

A programowanie Ci wychodziło od zawsze?

Z pisaniem jest to samo. Myślenie, że "lekkie pióro" to coś, z czym się albo rodzisz, albo nie i nie możesz tego wypracować
  • Odpowiedz