• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Planista(Python) - poprawność kodu

Object Storage Arubacloud
0 głosów
141 wizyt
pytanie zadane 2 września 2020 w Python przez Damian2102 Nowicjusz (150 p.)

Cześć, dość na poważnie wziąłem naukę Pythona, napisałem program działający w linii poleceń, jest to planista, tzn. 

użytkownik wpisuje jakieś wydarzenie składające się z tytułu, daty, aktywności(tego co robi) oraz czy jest ona wykonana, robiona albo będzie zrobiona. Chciałem poprawnie zaimplementować używanie docstringów, wyjątków, klas i paru innych rzeczy. Prosiłbym o feedback czy kod ten jest znośnej jakości (dobrej wątpię że jest), co można poprawić. Metoda do synchronizacji wydarzeń z plikiem nie działa poprawnie, ale nie chce mi się jej naprawiać. Od razu tutaj zapytam, jeśli mamy klasę utworzoną z namedtuple, tzn. coś takiego

EventDetails = namedtuple("details", [
        "title",
        "date",
        "activity",
        "state"
    ])
    #^^^^^^^^ DOCS REFERRING TO EventDetails !!!
    # TODO Use datetime object instead of str for date
    """
    Parameters
    ---------
    title: str
    date: str
        String representing date in [yyyy.mm.dd] format
    activity: str
    state: Event.ActivityStates.DONE | DOING | TO_DO
    """

To w jakim sensownym miejscu można umieścić komentarz do niej, bo na pewno nie pod nią laugh

main.py https://pastebin.pl/view/70369320

exceptions.py https://pastebin.pl/view/8ab627ba

event.py https://pastebin.pl/view/eeee646f

scheduler.py https://pastebin.pl/view/19ae9a23

1
komentarz 2 września 2020 przez adrian17 Ekspert (345,220 p.)

Od razu tutaj zapytam, jeśli mamy klasę utworzoną z namedtuple

Pytanie, po co tak robić, jak można napisać normalną klasę lub - od 3.7 - to:

@dataclass
class EventDetails:
        title: str
        # String representing date in [yyyy.mm.dd] format
        # TODO Use datetime object instead of str for date
        date: str
        activity: str
        state: Event.ActivityStates

 

komentarz 2 września 2020 przez Damian2102 Nowicjusz (150 p.)
Myślę, dzięki, o tym @dataclass nie wiedziałem, zaraz sobie poczytam o tym dokładniej.
1
komentarz 2 września 2020 przez adrian17 Ekspert (345,220 p.)

Analogicznie wszędzie indziej:

    def _check_date_correctness(date):
        """ Check date correctness, correct date is in [yyyy.mm.dd] format
 
       Parameters
       ----------
       date: str

Czemu nie normalnie otypować?

def _check_date_correctness(date: str) -> bool:
    """
    Verifies that date format is [yyyy.mm.dd] 
    """

(jeszcze inna sprawa, że ta funkcja w zasadzie nie powinna istnieć, bo Python lub zewnętrzne biblioteki mają funkcjonalność parsowania dat)

1
komentarz 2 września 2020 przez adrian17 Ekspert (345,220 p.)
class Scheduler:
    """ Class representing a scheduler
   
   Attributes
   ----------
   _events: list(Event)
       An Events class instances list

->

class Scheduler:
   _events: List[Event]

etc etc etc

komentarz 2 września 2020 przez Damian2102 Nowicjusz (150 p.)
Tak jak pisałem gdzieś w TODO, date nie będzie stringiem tylko normalnie obiektem datetime, to wtedy pewnie ta funkcja do sprawdzenia poprawności daty wyleci.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
1 odpowiedź 1,414 wizyt
0 głosów
1 odpowiedź 347 wizyt
0 głosów
1 odpowiedź 242 wizyt
pytanie zadane 1 czerwca 2023 w Python przez wojtek_programista Nowicjusz (170 p.)

92,634 zapytań

141,505 odpowiedzi

319,883 komentarzy

62,015 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...