Wpis z mikrobloga

Czytam sobie książkę o dobrych praktykach w Django (Two Scoops of Django) i zasanawiam się nad podanym przykładem. W przykładzie funkcja ma sprawdzać czy użytkownik ma prawo do wykonania akcji. Do funkcji przekazywany jest cały obiekt Request. Czy to jest dobra praktyka? Funkcja nie powinna przyjmować tylko instancji użytkownika? Po co jej cały request?

To w sumie nie jest pytanie odnośnie samego Django, ale takie ogólne dobre praktyki.

#programowanie #naukaprogramowania #python #django
bananowy_szejk - Czytam sobie książkę o dobrych praktykach w Django (Two Scoops of Dj...

źródło: comment_1583580116g24DG2XDBN04as04dOLxE9.jpg

Pobierz
  • 5
via Wykop Mobilny (Android)
  • 2
@bananowy_szejk: Przecież jest napisane że w wielu funkcjach przekazywali właśnie atrybuty/pola, ale w praktyce dla jasności kodu przyjęli jako argument cały request. W tej konkretnie funkcji potzebny jest tylko user. Wyobraź sobie teraz że sprawdzane są uprawnienia w jakiejś wariacji z innym polem z requestu. Gdybyś przekazywał tylko usera to cała sygnatura do zmiany, w przeciwnym wypadku po prostu wyciągasz co tam jeszcze potrzebujesz.

Ale to tylko moje gdybanie, nie jestem
@bananowy_szejk: Nie znam się na pythonie, ale mogę się wypowiedzieć z ogólno programistycznego punktu widzenia. Jeśli masz pewien zbiór operacji, które musisz zrobić często - zamykasz to w funkcjach. Przy serwerach HTTP takimi mechanizmami często są właśnie jakieś guardy na uprawnienia, które być może potrzebują tylko kawałka requestu - ale musiałbyś w każdym miejscu ten kawałek wyekstraktoać i podać do tej funkcji, co na dłuższą metę jest duplikacją kodu. Żeby uzyskać