Path: csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail From: Stefan Schwarzer Newsgroups: de.comp.lang.python Subject: =?utf-8?q?=5BPython-de=5D_Re=3A_Code_Style_Review?= Date: Tue, 29 Nov 2022 18:33:25 +0100 Lines: 74 Message-ID: References: <480b80d21e58d280c437b4854bfc7cf1@posteo.de> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: news.uni-berlin.de ZXn8nr9LIrA5DazmvwZZHwhAiLgmmDfuR839BL8U+4Bg== Authentication-Results: mail.python.org; dkim=none reason="no signature"; dkim-adsp=none (unprotected policy); dkim-atps=neutral User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.24) Gecko/20100411 Thunderbird/2.0.0.24 Mnenhy/0.7.6.666 Content-Language: en-US, de-DE In-Reply-To: <480b80d21e58d280c437b4854bfc7cf1@posteo.de> X-Provags-ID: V03:K1:Vhpj6RO4KIF2ueBgbZ36U3EdxpaEhpXx6A/iKoL/zE8O1vpjJzD 5DUdsB/RcsKnd73FKyayZ8cLe7mDI8UHtCXIHIXSmaaoYDVUlpNIVPpqIQhweC5J0VEVroM fsnKn7rfVnb0mMaXCwXVe+Q6L9QlqVOeUMjhEKOBhZY04wMN0iV+U/v+HOTsRw4/1s277aC wVZVfZdkzKyu2eY1Ls3QQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:CsYx/1ZDKlE=:2TJKv90qvCTue9r5fyZYO+ kdaCTs09TU1pO/7vatsv2xfXFIiCRYMvgFWaGxtBYM1ovGC4E7N0EEFzgX7NypT+gS0RZVqSA 9HwxMvjijnMZ3neeo/1QZQK8ck5rP2zr8ebRGiiPY6g6J6OAkAbHxuDtaHnS8URXjUjoiwCgC dPCblEM5EizbMfrXKaAsKDxKgHBLul3MO5OersT3JdyAwMEOrYSWMLLl7PnO+yD907Bdmfn9q 4RfvVRgnqrGNaKQEbtrd8REBvQI0MudcWLTY9qRURTHVFkFxyaOR+UOSDhwBIfBz7rAg/Ng/d 75wNbDBflbtBbfziqgrEBFhoQi25kkwQQO1ezTwkG7F0yeM99ahMNQZQDld93ZbzxlNAgsadz sMSejvmvOAZwAHdOxpFhdx1nr3cGd5su0qtb4QtPhqIawCXxtFfA5eJoyh/AiIjAqsKnEKDsu 7gd+mweoqQwFDgr5NcM0bxAxIsh0aDqn/oGb+2Nl1JdjevPej25Ll0/Dm8zXRKeLs8DjAEEt+ ut3SOjEtru8KvAtOHCJemkSfWQFZEZxOpg+iy1p+FhE47Wr2NLCXDzbZVvnOxf3F5QT/GUoyZ iawo1Fqe4ycfs0T+g+4L6NSCxCW1tE4qFFF8oWH7SNgkeNRZBfoV4pBNFxMuI50ko9JMzzNTm uc2CK5BzTeUkledDnftukxnPqwytR3OG2D7Bh4EJPlbo/gyb3uY1nrr1H481JzgM0zvalHviB 54PDbUqACpEorLglAVlJvZoV5CxAvWvsMRDGA51clXeyQg2LhL+oqXcWMxs7D/pkYzqjoJAXR 6BmkxihvURGz/epz4lZFNGfuJgURw== Message-ID-Hash: YVQJWLQMKSSGBPO6A7BJIK56FI366LB2 X-Message-ID-Hash: YVQJWLQMKSSGBPO6A7BJIK56FI366LB2 X-MailFrom: sschwarzer@sschwarzer.net X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-python-de.python.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.7 Precedence: list List-Id: Die Deutsche Python Mailingliste Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Xref: csiph.com de.comp.lang.python:5874 On 2022-11-28 16:37, c.buhtz@posteo.jp wrote: > Die Frage ist, warum du solche PyLint Ausnahmen ("# pylint:") definiert > hast. IMHO benötigt man dafür einen wirklich triftigen Grund; eine > strenge Indikation. Die Hinweise und Meldungen von Lintern haben ihre > Berechtigung und sollten nicht unterdrück werden. Ich sehe das nicht ganz so streng. Linter-Ausgaben sind für mich eher Hinweise/Empfehlungen; letztlich sollte der/die AutorIn des Codes entscheiden, was davon wie umgesetzt wird. > Neben den Lintern würde ich dir noch empfehlen, ein paar mehr Leerzeilen > zu machen. Das erhöht IMHO die Lesbarkeit, gerade bei verschachtelten > Strukturen. Natürlich ist das Geschmacksache bzw. eine Frage des > Team-Konsent. Z.B. hier: > > Am 28.11.2022 16:19 schrieb Marc Haber: > >> while True: >> time.sleep(30) >> if debug > 0: >> print('run evaluate() and cleanup_table() from main loop') >> cleanup_table() >> if debug > 0: >> print_table() >> evaluate() > > while True: > > time.sleep(30) > > if debug > 0: > print('run evaluate() and cleanup_table() from main loop') > > cleanup_table() > > if debug > 0: > print_table() > > evaluate() Sinnigerweise sehe ich das umgekehrt, das heißt, ich finde, was die Verwendung von Leerzeilen angeht, die erste Variante lesbarer. :-) Oder spezieller kann man sagen, dass zwar die Lesbarkeit _lokal_ geringfügig verbessert wird, aber durch vermehrtes Scrollen im Code die Lesbarkeit _global_ eher schlechter wird. Die "großzügige" Einrückung von vier Leerzeichen pro Einrückungs-Ebene in Python macht es eigentlich relativ leicht, logische Strukturen zu erkennen, auch ohne die Leerzeilen. Zum Thema Leerzeilen innerhalb von Funktionen und Methoden sollte man sich als Autor ruhig fragen, was man damit bezweckt. Ich habe schon manches Mal Code in einer Methode gesehen, der mit Leerzeilen in Blöcke aufgeteilt wurde, - aber ich hatte keine Ahnung, warum die Blöcke so aufgeteilt waren wie sie waren und fand das dadurch eher verwirrend. Noch ein Tipp, den ich selbst zu beherzigen versuche: Immer, wenn ich Leerzeilen zur Gruppierung innerhalb von Funktionen einfügen würde, schreibe ich stattdessen einen Code-Kommentar, der den Code-Block zusammenfasst. Man kann natürlich trotzdem oberhalb des Zusammenfassungs-Kommentars noch eine Leerzeile einfügen, aber ich mache es normalerweise nicht. Zum Thema Kommentare siehe auch https://sschwarzer.com/download/comments_pycon_de2019.pdf :-) Viele Grüße Stefan