Wpis z mikrobloga

Mireczki
#programowanie #codereview (to chyba lekka przesada, ale i tak wołam). #python #naukaprogramowania #programista15k

Zacznijmy może od opisania USER STORY.
1. Użytkownik wybiera ścieżkę folderu, w którym chce, by program zadziałał.
2. Wybiera, do jakich instytucji chce skierować wnioski.
3. Uzupełnia określony plik, by móc na ich podstawie zbudować wnioski.
4. Program drukuje wygenerowany wniosek lub jeżeli trzeba, to wysyła mailem.

Pseudokod mojej aplikacji - niekoniecznie jest zakodowane w ten sposób.
Zapytaj użytkownika, do kogo chce skierować wnioski, a potem zmuś go do uzupełnienia pliku xlsx. Na podstawie pliku xlsx przygotuj poszczególne elementy, które w późniejszej fazie zostaną użyte do generowania wniosków. Wnioski są generowane na podstawie róznych - zależnych od instytucji - plików template. Po wygenerowaniu daj userowi możliwość wydruku lub wysłania mailem wniosku uzupełniając go o potrzebne rzeczy.
Program ogólnie działa i raczej jest trudny do zcrashowania.

Tu kod: https://github.com/gg-coder-dev/make_documents_for_wykop/blob/main/do%20udostepnienia.py

Co bym chciał od Was:
Pomocy w aspekcie architektury tego programu, dobrych praktyk, wzorców projektowych, takiego ogólnego ogarnięcia tego programu, żeby był, nie wiem, bardziej modułowy, Totalnie nie mam pojęcia, w jakim kierunku podążyć teraz i na czym się skupić. Co byście zrobili, jakbyście musieli to jakoś uzdatnić :) Potrzebuję jakiegoś planu jak się za to zabrać.

Zapraszam was oczywiście do dyskusji, czasami z burzy mózgów rodzą się najlepsze pomysły a z waszym doświadczeniem pewnie uda się coś opracować. Zadawajcie pytania, postaram się odpowiedzieć.

PS. wiem, już na dzień dobry są tam bezsensowne zakomentowane linijki kodu, też źle chyba posługuję się if __name__ == "__main__": ale teraz nie chcę już tego zmieniać jak i tak program do przebudowy. wołam jeszcze @mrq i @Calka_internowana oraz @Krolik bo już czytaliście moje wypociny wcześniejsze i udzielaliście się.
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

  • 1
@ozzi91: Moje zdanie znasz. Podsumuje je poniżej na potrzeby dyskusji.

Na początek proponuje:
1. Wyznaczyć jednoznaczny początek programu. Ująć go w funkcje np. main() w której przeznaczeniem będzie obsługa interface'u tekstowego użytkownika i wywoływanie kolejnych funkcji programu.
2. Opracować algorytm interface'u użytkownika w którym będziesz zbierał niezbędne informacje od
  • Odpowiedz
@ozzi91: chcesz, żeby twój program był używany przez kogoś. Jest to program działający tylko na windowsie. Ludzie używają innych systemów. Ale to tam już jak wolisz.

Osobiście podzieliłbym tak:

- klasy typu DocxFile, XlsxFile, Application (w sensie *Wniosek*) w osobnych modułach
- potem dziedziczące (dziedzieczenie zazwyczaj jest złe, ale nie zawsze – tu pasuje)
  • Odpowiedz
@zwei: modelem będzie również np. Printer, do którego przekażesz wypełniony wniosek (a właściwie kontroler o tym zdecyduje w odpowiedniej chwili)

Widzę też, że piszesz bez klas. Może tak być, podział na moduły możesz zrobić i bez klas oczywiście.
  • Odpowiedz
via Android
  • 0
@zwei dzięki wielkie :)

ale oczywiście muszę zapytać. załóżmy, że skupie się teraz na interfejsie użytkownika - views. w którym miejscu powinna znajdować się weryfikacja user input I funkcje z tym związane?
  • Odpowiedz
  • 0
@ozzi91 jakiego rodzaju weryfikacja? ogólnie walidacja wprowadzonych danych raczej należy do danego modelu, bo dla każdego może być inna. tzn tylko dany model wie co jest poprawnymi danymi w jego przypadku
  • Odpowiedz
  • 0
@zwei: próbowałem się za to zabrać - daramatycznie mi to idzie, kompeltnie nie wiem co gdzie wrzucić żeby miało to sens. co się powinno znalezc w xlsx.py a co np base_application.py?
  • Odpowiedz