Filtering, sorting, pagination, CRUD

21 july 2022
Jakub Rojek Jakub Rojek
Photo by Paweł Czerwiński on Unsplash (https://unsplash.com/photos/RkIsyD_AVvc)
Categories: Industry, For clients, IT fundamentals

Cechą specjalistów z każdej dziedziny jest to, że mają swój pewien slang branżowy, którym porozumiewają się w znajomym środowisku. Dzięki temu doskonale rozumieją, o co pytają ich koledzy czy koleżanki z danej domeny, natomiast problematyczne może być efektywne porozumienie się z laikami, czyli na przykład klientami. Czasami wynika to z braku umiejętności komunikacyjnych, czasami z braku możliwości zastąpienia jakiegoś terminu (co jednak nie jest dobrą wymówką), a czasem - niestety - z poczucia wyższości. Ze złudnego poczucia wyższości, dodajmy.

Jak można się spodziewać, branża IT przoduje we wprowadzaniu nowych terminów, głównie pochodzących z języka angielskiego. Informatyka wprowadza tyle nowości do naszego życia, że trudno, aby powszechny język nie musiał ulegać modyfikacjom, choć istnieją granice w kontekście tego, co jest używane w wewnętrznych rozmowach, a co w rozmowie z amatorami. Należy to zrozumieć - osoby chcą się komunikować z informatykami efektywnie i przy okazji poznać branżowy język - to czasami doprowadza do błędów w zrozumieniu, ale należy to docenić. Zdarzają się też sytuacje, w których jakiś termin wydaje się zamienny lub oczywisty, ale okazuje się, że w IT wcale taki nie jest.

Tak jest choćby ze skalowaniem, jednak przez lata rozmów z klientami dotarło do mnie się, że inna fraza jest równie często używana nieprecyzyjnie (przynajmniej w informatycznym sensie) i to taka, która wydaje się dość oczywista. Zapraszam na wyjaśnienie tego, czym właściwie jest "filtrowanie" i "sortowanie", a także mniej znana "paginacja" i kompletnie enigmatyczny "CRUD".

Lista zgłoszeń w Feedybacky z zaznaczonymi fragmentami omawianymi w artykule

Czym jest filtrowanie?

W systemach informatycznych często mamy do czynienia z dużą ilością danych zgromadzonych w tabelkach, na listach i innych formach reprezentowania informacji (swoją drogą, w świecie IT "dana" i "informacja" to też nie to samo, ale to już zostawmy, bo wejdziemy w dyskusję akademicką). Użytkownik może przeglądać naprawdę wiele wierszy z tekstami lub liczbami i trudno się spodziewać, aby wyszukanie czegoś w tym gąszczu bez dodatkowych narzędzi mogło być możliwe lub przynajmniej przyjemne. Dlatego nie tylko w aplikacjach internetowych, ale też choćby w poczciwym (choć znienawidzonym przez niektórych) Excelu często dostępne są filtry, których wypełnienie umożliwia wyświetlenie tylko tych danych, które pasują do zadanych kryteriów. Uwaga - ta operacja nie nazywa się sortowaniem, do którego przejdziemy niebawem. Tutaj mamy do czynienia z filtrowaniem.

Filtry mogą być różne - zazwyczaj odpowiadają one konkretnym kolumnom opisującym tabelę, w której szukamy danych. Niekiedy wymagają wpisania dokładnej wartości, a czasem wystarczy fragment (jak np. podanie części nazwiska). Pola niekoniecznie muszą być tekstowe - bardzo często przyjmują rolę liczb, opcji (jednej lub wielu) do wyboru z pewnej listy, a także dat. Bywają jednak też bardziej skomplikowane - do przykładów można zaliczyć podanie zakresu wartości, z czym często mamy do czynienia przy okazji dni, ale także liczb. Wreszcie, filtry niekoniecznie muszą odpowiadać polom w tabeli z informacjami - mogą znacznie wykraczać poza ten zakres i umożliwiać np. przefiltrowanie zgłoszeń, w których dana osoba wypowiedziała się choć raz.

Często, szczególnie w kontekście tabel zawierających dużo atrybutów, filtry dzielą się na proste oraz zaawansowane, co czasem widać szczególnie w sklepach internetowych, gdzie mamy multum opcji do wyboru. Technicznych rozwiązań jest dużo, natomiast mnogość filtrów może powodować, że użytkownik będzie czuł się swobodniej, gdy będzie mógł zapisać swoje ustawienia na potem i to nie będąc zalogowanym. Dlatego zazwyczaj stosuje się zapamiętywanie ustawionych filtrów w przeglądarce, zwłaszcza w systemach wewnętrznych dla organizacji, gdzie każda osoba korzysta ze swojego sprzętu i jest odpowiedzialna za pewien zakres np. podopiecznych przetwarzanych w aplikacji.

Na przedstawionym wyżej zrzucie ekranu pasek filtrowania (podstawowy i po rozwinięciu) został zaznaczony zielonym kolorem.

Czym jest sortowanie?

Przejdźmy do drugiego sposobu porządkowania informacji, który nie ogranicza nam listy elementów, ale pozwala nam ułożyć je w logicznej kolejności. To jest właśnie sortowanie, a więc uporządkowanie elementów według określonego kryterium. Najczęściej spotykamy się z możliwością wykonania tej operacji poprzez naciśnięcie nazwy kolumny w tabeli - jest to wygodne rozwiązanie, do którego użytkownicy z biegiem lat się przyzwyczaili. Jedno kliknięcie służy zwykle rozpoczęciu sortowania w porządku rosnącym, a kolejne - w malejącym.

Czasami stosuje się sortowanie poprzez osobną listę rozwijaną. To może mieć swoje zastosowanie, gdy dane nie są wyświetlane w postaci tabeli (np. w sklepie internetowym) lub kryteria są bardziej rozbudowane. Oba rozwiązania są widziane na różnych stronach internetowych, a wybór zwykle wynika z formy prezentowania informacji.

Niektórym osobom sortowanie może się kojarzyć także z porządkowaniem danych, ale nie w określonej kolejności, tylko w celu znalezienia grup z elementami o podobnych atrybutach. Informatycznie powiedzielibyśmy jednak, że ta operacja to klasyfikacja lub ew. kategoryzacja, a w jeszcze innej, bardziej naukowej i analitycznej formie, mamy do czynienia z analizą skupień (ang. cluster analysis). Jednak w przypadku aplikacji webowych i porządkowania danych, słysząc termin "sortowanie" na 99% możemy spodziewać się, że chodzi o kolejność pozycji.

Na przedstawionym wyżej zrzucie ekranu pasek służący do sortowania, a tym samym lista nagłówków kolumn tabeli, został zakreślony niebieskim kolorem i prezentuje, że wybrany jest porządek względem kolumny "Status".

Czym jest paginacja?

Filtrowanie i sortowanie są najczęściej omawiane podczas dyskusji o kształcie widoków wyświetlających zbiór danych, natomiast często zapomina się jeszcze o jednej rzeczy. Jeśli użytkownik ma do czynienia z tysiącami elementów, to najczęściej pokazywanie ich na jednej stronie jest niebezpieczne i to z wielu powodów:

  • strona robi się bardzo długa w przeglądarce i dotarcie na sam dół bywa męczące,
  • użytkownik czuje się przytłoczony ilością informacji,
  • strona ładuje się wolniej niż przy pokazywaniu informacji fragmentami.

No właśnie - fragmentami. Rozwiązaniem jest bowiem paginacja, czyli podzielenie listy elementów na strony, po których użytkownik może przechodzić. Jest to znacznie bardziej komfortowane rozwiązanie dla niego, pomagające zarówno w czytelności, jak i szybkości ładowania danych. Spotyka się zazwyczaj dwie formy implementacji paginacji - ręczne przełączanie pomiędzy stronami (najczęściej pod tabelą) lub automatyczne doładowywanie treści po przewinięciu na dół strony (widoczne najczęściej w serwisach społecznościowych, a także w Feedybacky). Obie formy mają swoje zalety oraz wady i mają zastosowanie w różnych sytuacjach - doładowywanie po przewinięciu jest dobre w momencie, kiedy rosnąca wysokość strony nie jest dla nas straszna i z natury przewijamy daną stronę, np. przeglądając newsy (rzadko wracając na górę), natomiast zwykłe "kartkowanie" pozwala mieć większą kontrolę nad danymi tabelarycznymi.

Czasem można się spotkać ze spolszczeniem terminu "paginacja" i zastąpieniem go za pomocą "stronicowania", jednak warto pamiętać, że to słowo jest obecne w informatyce w zupełnie innym kontekście, a mianowicie formy dostępu do informacji zgromadzonych na dysku twardym.

Na zilustrowanej wyżej liście zgłoszeń w Feedybacky zastosowano paginację poprzez przewijanie listy, doładowując kolejne elementy (aczkolwiek wysokość strony się nie zmienia - z tego powodu obok znajduje się pasek przewijania). Zaznaczono to kolorem czerwonym.

Czym jest CRUD?

CRUD to skrót od słów Create, Retrieve, Update, Delete (czasami "retrieve" zamieniane jest na "read") i oznacza zestaw widoków pozwalających zarządzać w systemie obiektami o danym typie. Ponieważ zazwyczaj składa się jeszcze z listy, to spotyka się wersję z dodaną literką "L" od "List". To zwyczajowy termin pozwalający w jednym zdaniu określić, że trzeba stworzyć funkcjonalność z serią widoków dotyczących danego rodzaju informacji. Przykładowo, "CRUDL produktów" daje sygnał, że w systemie będzie możliwość listowania, wyświetlania szczegółów, tworzenia, edycji i usuwania produktów. Oczywiście, nie zawsze oznacza to najprostszą formę i realizację, ale są to już kwestie do uszczegółowienia w kontekście danego systemu.

Koncepcja tego skrótu daje też możliwość lepszej analizy kompletności wymagań funkcjonalnych (tzw. macierz CRUDL), a także pokazania, że jakaś operacja z rozmysłem nie będzie implementowana. Przykładowo, "RL produktów" może oznaczać, że dostępne będzie tylko wyświetlanie produktów, a nie ich modyfikowanie.

Dlaczego powinienem o tym wiedzieć?

Z uwagi na to, że firmy IT używają specyficznej, czasem mocno technicznej terminologii, warto wiedzieć, jak rozumieć te wszystkie dziwne sformułowania. Czasami jest to proste, ale bywa, że drobne nieporozumienia mogą doprowadzić do złej interpretacji oczekiwań klienta oraz późniejszych błędów w realizacji. Na szczęście, z dobrym analitykiem czy kierownikiem projektu bardzo łatwo jest to wszystko sprostować, jednak tak czy inaczej warto nabywać wiedzę o tym, co otacza nas coraz bardziej. Zawsze warto dbać o jak najlepszą komunikację na wszystkich płaszczyznach i w każdej dziedzinie.

Pozdrawiam i dziękuję - Jakub Rojek.

We write not only blog articles, but also applications and documentation for our clients. See who we have worked with so far.

About author

Jakub Rojek

Lead programmer and co-owner of Wilda Software, with many years of experience in software creation and development, but also in writing texts for various blogs. A trained analyst and IT systems architect. At the same time he is a graduate of Poznan University of Technology and teaches at this university. In his free time, he enjoys playing video games (mainly card games), reading books, watching american football and e-sport, discovering heavier music, and pointing out other people's language mistakes.

Jakub Rojek