Ich habe ein Github-Projekt durchsucht und dieses Modul gefunden, das mehr als zehntausend Zeilen enthält.
Ist es üblich, so viel Code in einem einzigen Modul zu haben?
Es scheint mir, dass dies über mehrere Module aufgeteilt werden sollte. Vielleicht eine für jeden DB-Motor.
Welchen Vorteil hat der Entwickler, wenn er ein großes Modul wie dieses erstellt (außer "alles an einem Ort") oder welchen Nachteil hat es, wenn er es aufteilt (außer "Komplexität")?
python
code-quality
modules
Mahmoud Hossam
quelle
quelle
Antworten:
Was Ihnen begegnet ist das sogenannte " Gott-Objekt ", weil es alles tut oder alles weiß. Lauf davon weg (wenn du kannst).
Es gibt keine definierte Anzahl von LOC pro Modul, aber es sollte etwas sein, das es einfach macht, den Code zu durchsuchen und leicht zu verstehen, was die Methoden tun. Nach meiner persönlichen Erfahrung machen Sie etwas falsch , wenn Ihr Modul mehr als 1k Zeilen * umfasst .
* Auch ein 1k-Line-Modul ist sehr groß.
quelle
Dies scheint ein Modul zu sein, für das möglicherweise keine typischen Größenbeschränkungen gelten. Der Großteil der Funktionen befindet sich in den ersten 2 KB Code- und Kommentarzeilen. Der Rest der Datei scheint aus vielen Adapterklassen und anderen Unterstützungsklassen zu bestehen, die eng mit dem Modul verbunden zu sein scheinen. In anderen Sprachen befinden sich die Klassen in separaten Dateien mit einer angemessenen Größe.
Einige weitere Dokumentzeichenfolgen könnten nützlich sein, würden jedoch die Größe eines bereits großen Moduls erhöhen. Der Code ist klar und selbsterklärend und enthält bei Bedarf entsprechende Kommentare.
quelle
Das tatsächliche "Limit" hängt natürlich von Ihrem Projekt und einer Vielzahl von Faktoren ab.
Aber ich stimme der Faustregel zu: 200 Zeilen anständiges Python. Das heißt, kein in Python geschriebener C- oder Java-Code, sondern gutes Python in Python.
quelle
Wow.
Ich glaube, ich weiß nicht die vollständige Antwort auf diese Frage, aber ich denke gerne als Antwort auf die Titelfrage "Wie groß sollte ein Python-Modul sein?" als das Konzept von Parnas, ein Geheimnis zu verbergen. In diesem Fall scheint das Modul das richtig zu machen (und das ist ein so großes Geheimnis, das es verbirgt).
Ich habe mich später mit Papieren befasst, die viel über Kopplung und Zusammenhalt erzählen. Vielleicht würden zu viele db-Module zu vielen Aufrufen zwischen den Modulen führen, was zu einer Erhöhung der als schlecht geltenden Praxis führt, d. H. Einer geringeren Kohäsion und einer höheren Kopplung?
Ich habe experimentelle Daten gesehen, in denen davon die Rede war, dass sich Programmierer dazu entschlossen hatten, gute Praktiken zu opfern, um die Sache zu vereinfachen und zu verstehen, ungeachtet dessen, was gute Praktiken vorschreiben. Tatsächlich könnte es auch zu einem Konflikt zwischen bewährten Praktiken kommen. Nehmen wir an, die Leistung macht die Leute, die später Wartungsarbeiten durchführen, normalerweise nicht glücklich. Ich bin mir nicht ganz sicher, wie sich die Lesbarkeit in diesem Fall mit einem so großen Modul verbessern würde.
Eine andere Sache, die mir aufgefallen ist, ist, dass ein Teil des Codes als generisch angegeben ist und der Rest der DBS daraus erweitert wird. Ich bin kein Python-Programmierer, aber vielleicht könnte dies etwas rechtfertigen?
Also, ich habe keine endgültige Antwort, aber ich hoffe, dass jemand diese Punkte auch hervorhebt!
quelle