Code Review ~ Python

10/28/2020 19:13 Mad0ck#1
Schönen Abend !

Ich wollte mir mal Meinungen von anderen über meinen Code einholen.
Bin fest davon überzeugt, dass man selber oft umständliche Sachen, oder Eigenheiten entwickelt die einem selber zu selten bis gar nicht auzfallen.


Darum wie gesagt würd ich mich über jedes Verfügbare Feedback freuen.

Kurze Erklärung:
Das Skript liest userdaten von einem Konfigfile aus, und erstellt je nach angaben einen oder mehrere Accs auf einer Website.
(Die jeweiligen Acc Usernamen werden auf bestehende Existenz geprüft)
Mehr ist es eigentlich nicht ...


Anbei der Code:
[Only registered and activated users can see links. Click Here To Register...]

Vielen Dank vorab !
Lg
10/29/2020 22:11 cypher#2
Du könntest dein Code ein wenig sauberer gestalten. Ich würde mir Schreibarbeit sparen, wenn du einfach in deiner IDE einen Linter (pylint, flake8) aktivieren würdest. Der wird dir dann ein paar Meldungen um die Ohren schmeißen.

Dein Modul kommt auch ohne eine Klasse aus. Die pythonische Art wäre die Klasse komplett wegzulassen und die Methoden einfach im Modul zu deklarieren. Falls du dennoch die streng objektorientierte Art (á la Java, C#) imitieren möchtest, kannst du deine statischen Methoden innerhalb der Klasse deklarieren:
Code:
@staticmethod
def foo():
    pass
Außerdem würde ich dir folgende Videoreihe empfehlen:
10/31/2020 16:35 Mad0ck#3
Quote:
Originally Posted by Cyphernomic View Post
Du könntest dein Code ein wenig sauberer gestalten. Ich würde mir Schreibarbeit sparen, wenn du einfach in deiner IDE einen Linter (pylint, flake8) aktivieren würdest. Der wird dir dann ein paar Meldungen um die Ohren schmeißen.

Dein Modul kommt auch ohne eine Klasse aus. Die pythonische Art wäre die Klasse komplett wegzulassen und die Methoden einfach im Modul zu deklarieren. Falls du dennoch die streng objektorientierte Art (á la Java, C#) imitieren möchtest, kannst du deine statischen Methoden innerhalb der Klasse deklarieren:
Code:
@staticmethod
def foo():
    pass
Außerdem würde ich dir folgende Videoreihe empfehlen: [Only registered and activated users can see links. Click Here To Register...]
Mahlzeit !

Vielen Dank für das Feedback.
Ich werd mir die Videoreihe def. ansehen, und nen linter hab ich jetzt =)
Da war ja einiges zu tun :p haha
11/04/2020 10:23 ZKDev#4
Tach,

1. Du musst bei neueren Python 3 Versionen bei Klassen nicht mehr von Object erben.
Code:
15: class AccountCreator:
+ readability

__________________________________________________

2. Prinzipiell würde ich dir empfehlen mit Python's typing package strengere Typisierung einzubauen.
+ readability
+ maintainability
+ stability


__________________________________________________

3. Das data struct in Zeilen 38 - 52 ist ein no-go meiner Meinung nach. Seit Python 3.8 sind Dataclasses buildin vorhanden, nutze diese! Guckst du
[Only registered and activated users can see links. Click Here To Register...]
+ readability
+ maintainability


__________________________________________________

4. Stick to Pep8! PyCharm bietet dafür auch eine wunderbare Integration an. Wir leben in einem OpenSource zeitalter, Konventionen sind wichtig, außerdem wird dich jeder erfahrene Entwickler direkt als Vollidiot abstempeln wenn du CamelCase Funktionsnamen in Python wählst. Das ist der schlimmste Pep8 Bruch welchen man sich leisten kann.
Prinzipiell brichst du in dem Snippet viel Pep8, glaube ein Linter wäre wirklich sinnvoll für dich.
+ readability
+ maintainability


__________________________________________________

5. If condition overhead (Zeile 31)
Code:
if accountCheck == True:
das True kannst dir sparen,
Code:
if accountCheck:
reicht
+ readability

__________________________________________________

6. Format strings
Code:
self.sendRequest('https://forsaken-kingdom.com/api/check/account/'+username)
no no no ...
Würde zwar eher zu einer url-factory greifen, aber wenn schon string concatenation dann bitte mit format string
Code:
url = f'https://forsaken-kingdom.com/api/check/account/{username}'
+ readability
if factory: stability


__________________________________________________

7. Zeile 96...
Was sagt Zen of Python bzgl. Fehlerbehandlung?
Quote:
Errors should never pass silently.
Was ist Zen of Python? -> Mach mal eine repl Shell auf und
Code:
import this
__________________________________________________
__________________________________________________

Habe jetzt nicht auf Komplexität oder Patterns geachtet, aber rein stilistisch würdest du kein Code-Review in einem professionellen Umfeld passen.

Nimms mir nicht übel, fail early and hard!
11/05/2020 17:49 Mad0ck#5
Quote:
Originally Posted by ZKDev View Post
Tach,
Nimms mir nicht übel, fail early and hard!
Auch dir vielen Dank !

Übel nehmen kann ichs dir nicht. Das ist ja das Ziel, dass ich auf Fehler, oder sonstiges aufmerksam gemacht werde.

Danke !