@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
@ozzi91: jeszcze sprawdzaj czy ścieżka istnieje: os.path.isdir() a zamiast helperow fizycznych to możesz próbować mieć coś w pamięci jeśli danych nie jest tona
  • Odpowiedz
jak to zrobić, żeby było SOLID?
#python #programowanie #naukaprogramowania #codereview

mam sobie dwie klasy "rzecz" i "kontener na rzeczy" - jaki jest najlepszy sposób by każda z rzeczy mogła "powiedzieć", gdzie się znajduje? (zakładamy, że każda rzecz jest w jakimś konkretnym jednym kontenerku)? jak to najładniej zaprojektować?

mam taki przyklad: https://pastebin.com/JgLYYbur i proszę o opinie :)
(sorry za screenshot, wykop źle formatuje kod)
janek_ - jak to zrobić, żeby było SOLID?
#python #programowanie #naukaprogramowania ...

źródło: comment_16603016323CHy3TqCSksDMaTNJsbAWq.jpg

Pobierz
@janek_: Hasła: agregacja oraz kompozycja - potem z dobrego zrozumienia agregacji można zrozumieć skąd bierze się agregat w DDD

W dużym skrócie wszystko zależy od tego czy obiekt może żyć / mieć własną tożsamość bez obiektu rodzica.

Przykładowo:
- książka może spokojnie istnieć
  • Odpowiedz
@BRmedia:

1. Trzymaj się jednego języka - angielskiego. Co to ma być za ustawianie "polski"? Powinno być "polish"
2. Rzeczy typu magical number koniecznie do osobnych stałych a najlepiej do pliku gdzie masz wszystkie globalne ustawienia. Takie + 15 w kodzie nic nie mówi
3. W BooksList ten return z Bookiem wygląda źle i różni się tylko jednym propsem - ja to bym ogarnął jednym returnem z dynamicznym propsem albo wyrzucił te propsy do osobnej stałej i zrobił destrukturyzację
4. Za każdym odpaleniem "Book" kasujesz z LS'a "books".
  • Odpowiedz
via Wykop Mobilny (Android)
  • 5
@Rst00: co do pierwszego punktu się nie zgadzam. Bardzo często ustawienia dotyczące języka są napisane właśnie w danym języku, mamy więc listę w stylu: English, Deutsch, Francois, polski

chiński, japoński, rosyjski, ukraiński, itp też są zapisane własnym alfabetem
  • Odpowiedz
Cześć!
Od jakiegoś dłuższego czasu piszę w csharp i tak się zastanawiam jak u mnie z jakością kodu...
Byłby ktoś chętny przejrzeć mój projekt?
Chętnie bym przyjmie jakieś rady itp.

Link do projektu -> link
via Wykop Mobilny (Android)
  • 5
@ProGraMajster: try z pustymi catch, a inne z jakimś dzikim wypisywaniem do konsoli, inne nazwy klasy a inne pliku (form1.cs), część nazw metod po polsku a część po angielsku, troche zduplikowanego kodu też masz.
  • Odpowiedz
#python #django #codereview

Cześć. Właśnie skończyłem pisać projekt. Jest to prosta aplikacja quizowa napisana w Django. Byłbym wdzięczny, gdyby ktoś zechciał spojrzeć na kod i podpowiedzieć jakie błędy popełniam. Jest to moja druga, prawie w pełni napisana przeze mnie, aplikacja w Django, więc proszę o wyrozumiałość. Z góry dziękuję za wszelkie uwagi.

Link do repozytorium: https://github.com/rcybulski1122012/django_quiz_app
@login_zajety_sic:
1. Linijki 17-22 - masz zduplikowaną linijkę zwracającą ścieżkę, można to zrobić mniej więcej tak
2. Jeśli chcesz połączyć stringi ze zmiennymi to używaj Pythonowego formatowania stringów - a najlepiej f-stringów.
3. Jeśli robisz operacje na ścieżkach do plików to używaj os.path.join() lub Path z modułu pathlib - one zajmą się wstawieniem slashy lub backslashy (zależnie od systemu), więc nie będziesz musiał ich ręcznie wstawiać i escape'ować.
4. Komentarze, które mówią oczywiste rzeczy jak np. "# check if the drive is of type removable" nie są potrzebne -ogólnie dobry kod powinien mieć jak najmniej komentarzy (a idealnie zero). Jednakże, jesli tworzysz jakiś komentarz (ofc jesli masz ku temu dobry powód), to rób tak, aby opisywał on dlaczego dana linijka coś robi, a nie co robi - bo co robi to widać.
5. Najpierw otwierasz file_to_save, potem otwierasz dodatkowo input_file, wpisujesz dane z niego do file_to_save po czym zamykasz oba. Więc tutaj dwie rzeczy: ZAWSZE używaj context managera (czyli konstrukcji with) gdy czytasz pliki. Drugą rzeczą byłaby lekka zmiana sterowania w twoim programie - najlepiej jakbyś najpierw otworzył input_file, przeczytał z niego dane i zapisał je do zmiennej oraz zamknął ten plik (przypominam, że konstrukcja with zamknie plik za ciebie). Następnie jak masz dane w zmiennej, to dopiero otwórz file_to_save i
  • Odpowiedz
@login_zajety_sic: osobiście jeszcze trochę popracowałbym tu na modularyzacją. Więcej mniejszych funkcji, dzięki czemu kod staje się samoopisowy i bardziej czytelny, a przy tym możesz unikać zbędnych komentarzy.

Dobrymi (choć nie jedynymi) kandydatami na osobne funkcje są np. bloki z linii 17-22 oraz 58-99.

Lepiej będzie też wyglądało jeśli początek wykonywania programu będzie jasno określony (oczywiście przed doSomething powinno być wcięcie, tylko wykop je
  • Odpowiedz
Hej, potrzebuję waszej wiedzy ( ͡° ͜ʖ ͡°)!

Mianowicie zdaje mi się, że zaszła zmiana na stronie internetowej rządowej i tekst się różni.
Czy można to sprawdzić? Chcę rozwiać wątpliwości.

Stary link z wczoraj
OctoPrint i KDE: napisałem widget do monitorowania stanu drukarki 3d sterowanej przez #octoprint, jej postępów w drukowaniu oraz podglądania obrazu z webcama bezpośrednio na desktopie #kde. Plasmoid można osadzić zarówno w panelu lub też używać jako widget na desktopie.

Instrukcja, obrazki jak to wygląda w działąniu oraz oczywiście pliki do pobrania są na stronie projektu: https://github.com/marcinorlowski/octoprint-monitor

PS: dodaje też #programowanie -> może ktoś ma
MarcinOrlowski - OctoPrint i KDE: napisałem widget do monitorowania stanu drukarki 3d...

źródło: comment_1606809852Y8tdZpW5vO8O1YYDHxFPdO.jpg

Pobierz
  • Odpowiedz
ostatnio robiłem zadanie rekrutacyjne z #symfony ale od razu im powiedziałem, że nie mam komercyjnego doświadczenia z tym frameworkiem i tak średnio go znam. No i teraz chcą ze mną omówić ten projekt :D

Czy ktoś z #programista15k wrzuciłby okiem na ten controller https://pastebin.pl/view/23ff6413 i podpowiedział gdzie przenieść nadmierną logikę z niego?

Dodatkowe pytanie: W feedbacku dostałem Brak bardziej zaawansowanej architektury, użycia wzorców projektowych, interfejsów itd. W projekcie posiadam jeden form type, dwa entity, jeden serwis.
* Do czego powinienem dodać interfejs?
btw. ta walidacja powinna byc w $form->isValid(), czyli formularz powinien ci to zrobic.


@Klopsztanga: tak właściwie to powinna być ogarnięta przez api platform albo fos rest bundle na podstawie przyjmowanego dto i jego constraintów, nie ma tutaj potrzeby żeby bezpośrednio dotykać requesta albo się foremkami bawić ¯\_(ツ)_/¯
  • Odpowiedz