![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 0 Dołączył: 12.11.2010 Ostrzeżenie: (0%)
|
Cześć,
mam kolejny problem z rozplanowaniem kodu... Teraz sytuacja dotyczy systemu newsów, na który składałoby się dodawanie, usuwanie i edycja newsów, system tagów(przyporządkowanie odpowiednich tagów do newsa na podstawie jego id, relacja wiele do wielu), i kategorii(podobna sprawa, tylko że relacja jeden do wielu), paginacja oraz komentarze. Oczywiście do tego dochodzi wyświetlenie newsów, komentarzy i odpowiednich kategorii i tagów na stronie. Pisanie oddzielnej klasy do wszystkiego, moim zdaniem mija się z celem(trudne w użyciu?), zaś walnięcie wszystkiego do jednej klasy jeszcze gorsze. Jak to rozplanować. Tym razem pytam zanim zacząłem pisać jakikolwiek kod (IMG:style_emoticons/default/smile.gif) Myślę, że paginację można wrzucić do klasy odpowiedzialnej za newsy, ale co z resztą? |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
Tych klas powinieneś mieć dokładnie tyle ile będziesz miał różnych "bytów". A tutaj jest ich co najmniej kilkanaście. I dlaczego niby wiele klas miałoby być trudne w użyciu?
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 0 Dołączył: 12.11.2010 Ostrzeżenie: (0%)
|
Czyli sądzisz, że jednak lepiej byłoby trzymać to w oddzielnych klasach. Czemu trudniej? Być może wynika to z mojej niewiedzy... bo popatrzmy, newsy byłyby pobierane "w klasie" News, a paginacja byłaby w oddzielnej klasie. Jak to połączyć? Chodzi o to żeby nie pobierać wszystkich newsów, tylko te które mają być wyświetlone. Klasa odpowiedzialna za paginację miałaby obliczyć na podstawie ilości newsów(zawrócone przez klasę News) i adresu(numer strony), które newsy pobrać(klauzula LIMIT) oraz liczbę stron i wygenerować odpowiedni panel do przechodzenia między tymi stronami. Co miałaby zwrócić klasa odpowiadająca za paginację(oprócz tego "panelu")? Liczbę newsów do pobrania i oczywiście numer newsa od którego zacząć pobieranie, a później te dane przekazać do klasy News, żeby pobrała odpowiednie rekordy?
Mam na, że nie zadałem zbyt dużo pytań. Chciałbym zrobić to jak najlepiej. |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%)
|
Trudniej teraz.. ale łatwiej później (IMG:style_emoticons/default/smile.gif) załóżmy, że stworzyłeś system newsów w dwóch klasach [główna News i Paginacja] i nagle zapragnąłeś mieć moduł dodający komentarze do każdego newsa. Zastanów się teraz ile kodu musisz przerobić, żeby dodać jeden tylko moduł.. do tego dochodzi coś co się zwie błędami programisty - inaczej dobrą aplikację, możesz zbugować.
Sam ostatnio doświadczyłem czegoś takiego - idąc na łatwiznę przy pisaniu modułu wyświetlającego statystyki[upchnąłem wszystko w trzy klasy] tak naprawdę narobiłem sobie tony dodatkowej roboty. |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
Cytat Jak to połączyć? Zapewne jakimś interfejsem który jest znany obiektowi paginacji i implementowany przez wszystkie obiekty od pobierania danych.
|
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 317 Pomógł: 58 Dołączył: 6.11.2005 Ostrzeżenie: (0%)
|
Co miałaby zwrócić klasa odpowiadająca za paginację(oprócz tego "panelu")? Liczbę newsów do pobrania i oczywiście numer newsa od którego zacząć pobieranie, a później te dane przekazać do klasy News, żeby pobrała odpowiednie rekordy? Możesz przekazać z pagera do klasy News np. gotowe zapytanie, które ma zostać wywołane do pobrania porcji wyników. Nie widzę też nic złego w tym, aby pager sam pobrał odpowiednie dane z bazy i w postaci obiektu lub nawet prostej tablicy przekazał je do klasy News w celu ew. obróbki i wyświetlenia. |
|
|
|
![]() ![]() |
|
Aktualny czas: 20.12.2025 - 18:22 |