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

Ocena projektu - kalkulator w Pythonie (tkinter)

Hosting forpsi easy 1 pln
+1 głos
983 wizyt
pytanie zadane 26 lipca 2019 w Nasze projekty przez Programista3 Gaduła (3,390 p.)

Witam. Od jakiegoś czasu piszę sobie kalkulator w Pythonie. Posiada on już dość dużo funkcji i zbliża się do poziomu funkcjonalności który mnie zadowala i na którym zamierzam zakończyć jego rozwój i skupić się na innych projektach. W związku z tym chciałbym prosić o ocenę mojego projektu. Kod znajduje się na GitHubie, instalator można pobrać w zakładce releases.

Chętnie przyjmę wszelkie rady, opinie dotyczące kodu jak i samego kalkulatora oraz pomysły na rozwój czy też informacje o znalezionych błędach. Może nawet komuś się spodoba i zacznie używać go zamiast kalkulatora z Windowsa smiley

komentarz 26 lipca 2019 przez tkz Nałogowiec (42,000 p.)
A gdzie testy?

3 odpowiedzi

+2 głosów
odpowiedź 26 lipca 2019 przez adrian17 Ekspert (337,860 p.)

Hmm, po kolei...

 - gdzie requirements.txt (lub odpowiedniki typu pyproject.toml)

- czemu customowa biblioteka do tłumaczeń zamiast np wbudowanego gettext?

- klasa `Tools`, nie ma sensu istnienia, a tym bardziej to dziwne dziedziczenie. To powinny być zwykłe wolne funkcje.

- if, elif etc nie potrzebują nawiasów

- zamiast `def size()`, używaj standardowe sygnatury typu __len__. (osobiście bym po prostu użył listę zamiast klasy wrapującej, ale to inny temat)

	def isNumber(self, str):
		if(str.isdigit()):
			return 1
		else:
			try:
				float(str)
				return 2
			except ValueError:
				return 0

1, 2? To nie C, możesz po prostu zwrócić True.

			if(re.match(r'^[01]+$', number)):
				number = int(number,2)
			else:
				messagebox.showerror(_("error"), _("err2"))
				return

Regex raczej niepotrzebny, wystarczy wywołać int(number, 2) i złapać wyjątek.

To tak bardzo na szybko z kilku pierwszych linii kodu.

komentarz 27 lipca 2019 przez Programista3 Gaduła (3,390 p.)
Dzięki za wskazówki, postaram się wprowadzić zmiany.

Muszę wreszcie zadbać aby inni mogli łatwo odpalić kod i nie chodzi tylko o requirements.txt.

Customowa biblioteka do tłumaczeń dlatego że gettext wydawał mi się trochę niepotrzebnie skomplikowany jeśli chodzi o strukturę katalogów i tworzenie tłumaczeń.

Klasa Tools nie ma sensu ale nie wiedziałem jak sobie z tym poradzić, nie wiem dlaczego użycie tego jako funkcji poza jakąkolwiek klasą wydawało mi się niewłaściwe.

Wiem, że nawiasy w if są niepotrzebne, po prostu takie dziwne przyzwyczajenie, że akurat w if je daję choć nie są wymagane.

Zwracanie 1 lub 2 w funkcji isNumber daje możliwość sprawdzenia dodatkowo czy jest to int czy float. Pewnie lepszym rozwiązaniem byłoby podzielenie tego na isInteger() i isFloat() zwracające True/False.
+1 głos
odpowiedź 26 lipca 2019 przez Secrus Nałogowiec (32,880 p.)
1. dziwne ustawienia formatowania kodu, bardzo duże wcięcia, długie linijki

2. w kilku miejscach używasz w pętli listy [0, 1, 2, 3, 4, 5], bardziej eleganckie byłoby range(6)

3. podział na pliki. każda klasa do osobnego pliku, łatwiej się potem czyta kod

4. brak testów
komentarz 27 lipca 2019 przez Programista3 Gaduła (3,390 p.)
Dzięki za wskazówki, postaram się wprowadzić zmiany.
+1 głos
odpowiedź 27 lipca 2019 przez mokrowski Mędrzec (155,480 p.)

1. Brak testów. W przyszłości ktoś kto będzie chciał (albo z konieczności będzie zmuszony) utrzymywać aplikacje, zastosuje mnożnik do wyceny usługi.

2. Brak należytej modularyzacji. Nawet na poziomie warstw (np. warstwa logiki kalkulatora i jego prezentacji).

3. Pierwsze czego szukałem to:

if __name__ == '__main__':

.. nie ma, już wiem że będzie ciekawie....

4. 1 klasa Stack... co ma ten stos czego nie ma zwykła... lista?

5. Przy klasach budujących GUI, praktykuje się dziedziczenie z Frame lub innego okna/widgetu. Wtedy dostęp do elementów nie jest rozbudowany przez self.coś.gdzieś.komujś. Poza tym wygląd warto wyprowadzić do oddzielnego kontenera a nie "dziergać tu i ówdzie w kodzie".

5. Narzędzie pep8 (tu masz online: http://pep8online.com/ ) zgłasza zastrzeżenia.

6. Ja bym ostrzegał że konwersja waluty wymaga dostępu do sieci.

7. Połączenie mnożników i jednostek, proponuję zrobić w jednym kontenerze a nie rozbijać na osobne. Łatwiej to utrzymać i znaleźć błąd.

8. Jawne złamanie DRY. Wszystkie konwertery mają taki sam kod a jedynie różnią się zestawem jednostek.

9. ~1200 linii... naprawdę? Miejże litość...

10. Brak łatwej instalacji. Może zipapp, może jeszcze inaczej.. ale nie tak ..

 

komentarz 27 lipca 2019 przez Programista3 Gaduła (3,390 p.)
Dzięki za wskazówki, postaram się wprowadzić zmiany.

Podobne pytania

+3 głosów
4 odpowiedzi 354 wizyt
pytanie zadane 25 czerwca 2018 w Nasze projekty przez Danrox Bywalec (2,370 p.)
+11 głosów
7 odpowiedzi 633 wizyt
pytanie zadane 30 marca 2019 w Nasze projekty przez kondzio18 Początkujący (380 p.)
0 głosów
3 odpowiedzi 172 wizyt
pytanie zadane 30 maja 2018 w Nasze projekty przez Adrian1999 Nałogowiec (34,530 p.)

92,125 zapytań

140,785 odpowiedzi

317,804 komentarzy

61,446 pasjonatów

Advent of Code 2023

Top 15 użytkowników

  1. 1468p. - Łukasz Eckert
  2. 1444p. - Dawid128
  3. 1430p. - CC PL
  4. 1419p. - rafalszastok
  5. 1418p. - Marcin Putra
  6. 1373p. - Mikbac
  7. 1362p. - rucin93
  8. 1351p. - sefirek
  9. 1296p. - Adrian Wieprzkowicz
  10. 1267p. - Eryk Andrzejewski
  11. 1260p. - TheLukaszNs
  12. 1239p. - JarekDev
  13. 1188p. - Rafał Trójniak
  14. 1179p. - 13NOONE37
  15. 1144p. - Michal Drewniak
Szczegóły i pełne wyniki

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.

Uwaga - w dniach od 02.12 do 08.12 trwają Mikołajki (książki drukowane mają rabat -35%, ebooki do -45%). Zaś dodatkowy, specjalny kod zniżkowy: HELMIKOLAJ-10 dla naszych Widzów zapewni Wam oszczędność -10zł dla zamówień powyżej 70zł! Warto korzystać!

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...