Erstes Projekt als Github-Repository

Rosenduft

Banned
Registriert
Dez. 2019
Beiträge
98
Hallo ihr Lieben!

Ich bin ein Programmier-Anfänger und will es mir nun zur Angewohnheit machen, meine Projekte wie die Profis mit Git zu verwalten und auf Github hochladen!
Um das Prozedere zu testen, habe ich ein kleines Kommandozeilen-Spiel geschrieben, in dem der Benutzer 20 Mathematik-Aufgaben lösen muss.

Ich wollte nun aber fragen, ob die Art und Weise, wie ich die Dateien und das Repository angelegt habe, okay ist, oder ob ich irgendwelche Stibrüche begangen habe. Ich wäre über Tipps diesbezügl. sehr dankbar! Falls ihr abgesehen davon noch weitere Ratschläge habt, lasst es mich wissen!

https://github.com/DexterThorn/Mathematician/tree/master/src

Ich werde auch Updates einflegen. Ich habe zum Beispiel geplant, innerhalb der nächsten zwei Tage eine Highscore-Liste einzuführen, in der gemessen wird, wer 20 Aufgaben hintereinader richtig und am schnellsten lösen kann. Ich hoffe, das wird nicht allzu schwer.
 
Hatte ich innerhalb von 0,5 Sekunden ergänzt. Aber da war wieder einer schneller...
 
Kann man so machen, aber lässt sich halt nicht einfach herunterladen, importieren und kompilieren.
Ein Maven oder Gradle Projekt wäre da meine erste Wahl. (mit der passenden .gitignore Datei)
 
  • Gefällt mir
Reaktionen: Rosenduft
Fehlt irgendwie außerdem eine package-struktur.

Dass Du keine wirkliche Objektorientierung in deinen Klassen nutzt sei mal dahingestellt, da Du ja ein Anfänger bist - aber ich würde hier frühzeitig nochmal überlegen, ob globale static-Methoden wirklich zielführend sind.
 
maxpayne80 schrieb:
Fehlt irgendwie außerdem eine package-struktur.

Dass Du keine wirkliche Objektorientierung in deinen Klassen nutzt sei mal dahingestellt, da Du ja ein Anfänger bist - aber ich würde hier frühzeitig nochmal überlegen, ob globale static-Methoden wirklich zielführend sind.

Du musst nochmal genauer schauen, ich benutze sehr wohl Objektorientierung. Außerdem soll erwähnt sein, dass ein so kleines Programm nicht gleich in 20 Klassen untegliedert werden kann und sollte - falls du das meinst.

Manche wenige Methoden sind dann global und statisch, wenn ein Missbrauch weitestgehend ausgeschlossen werden kann und ihre Funktionalität so allgemein ist, dass sie vielfältig verwendet werden kann - und in Zukunft vlt. wird. Das bricht zwar ein wenig mit der Philosophie der Objektorientierung, aber das tut jedes nicht ideologische Projekt irgendwann, wenn es sinnvoll ist, wurde mir gesagt.
 
Zuletzt bearbeitet:
Die Tab-Abstände scheinen mir zu groß, für Java würde ich die standardmäßig verwendeten 4 Leerzeichen/Tab verwenden.
 
  • Gefällt mir
Reaktionen: Rosenduft
M4ttX schrieb:
Die Tab-Abstände scheinen mir zu groß, für Java würde ich die standardmäßig verwendeten 4 Leerzeichen/Tab verwenden.

Das werde ich mir fürs nächste Commit vormerken.
 
Neben der bereits erwähnten .gitignore, würde ich eine README.md verwenden statt eine txt. Wenn du beim Anlegen des Repos "Initialize this repository with a README" wählst, wird diese auch automatisch angelegt. Zusätzlich kannst du noch eine .gitignore anlegen lassen, z.B. für Java. Oder du wählst eine passende Datei aus diesem Repo oder lässt dir einfach eine generieren.

Anstatt "Dummy@email.gov" als Email zu verwenden, kannst du auch eine private Email von GitHub nutzen (siehe Punkt 6). Dann können die Commits auch deinem Account zugewiesen werden.

Wenn du möchtest, dass andere deine Software nutzen, dann solltest du außerdem eine Lizenz verwenden.
 
  • Gefällt mir
Reaktionen: BeBur und Rosenduft
Und wenn du einen Release erstellst, auch wenn es die erste Version 1.0.0-alpha ist, gebietet es sich einen Tag zu erzeugen, damit der Release erzeugt werden kann. Damit einhergehend zwingt man sich dann auch ein wenig sich an eine Semantische Versionierung zu halten. Das ist für ein strukturiertes Arbeiten mit Quelltext wie bei SVN oder eben GIT schon recht bedeutsam.
Für einen alleine ist das nicht so schlimm, wenn man dann jedoch mal mit mehreren Leuten zusammen an der Software arbeitet ist es immer gut, wenn es eine ordentliche Versionsstruktur gibt und nicht nur einen Branch-Wildwuchs ;)
 
Kann da das Buch "clean code" empfehlen. Das sollte wirklich jeder Entwickler mal gelesen haben. Am besten von Anfang an, bevor man sich schlechten Stil angewöhnt. Da stehen elementare Dinge drin, wie Klassen und Methoden zu benennen sind etc.
 
  • Gefällt mir
Reaktionen: Picus
Das von Robert Martin?
(Gut, dass Bücher eine eigene UUID in Form der ISBN haben...)
 
ayngush schrieb:
Gut, dass Bücher eine eigene UUID in Form der ISBN haben...
Das ist Quatsch. Eine ISBN ist keine UUID. Eine ISBN ist eine 13-stellige Zahl. Kann also mit weniger als 48 bit abgebildet werden. Eine UUID ist eine 128-bit Wert - also deutlich größer als eine ISBN-13.
Abgesehen davon gibt's noch einen bedeutenden Unterschied: ISBNs werden von einer zentralen Stelle vergeben, um die Eindeutigkeit zu gewährleisten. UUIDs können von jeder x-beliebigen Person oder Maschine aus einem so riesigen Pool (je nach Variante) zufällig generiert, sodass die Eindeutigkeit allein durch die Anzahl der Möglichkeiten gewährleistet sein sollte. Die Wahrscheinlichkeit einer doppelten UUID ist dadurch so-gut-wie-null, aber eben nicht exakt null - im Gegensatz zur ISBN.
 
benneq schrieb:
Das ist Quatsch. Eine ISBN ist keine UUID. Eine ISBN ist eine 13-stellige Zahl. Kann also mit weniger als 48 bit abgebildet werden. Eine UUID ist eine 128-bit Wert - also deutlich größer als eine ISBN-13.
Abgesehen davon gibt's noch einen bedeutenden Unterschied: ISBNs werden von einer zentralen Stelle vergeben, um die Eindeutigkeit zu gewährleisten. UUIDs können von jeder x-beliebigen Person oder Maschine aus einem so riesigen Pool (je nach Variante) zufällig generiert, sodass die Eindeutigkeit allein durch die Anzahl der Möglichkeiten gewährleistet sein sollte. Die Wahrscheinlichkeit einer doppelten UUID ist dadurch so-gut-wie-null, aber eben nicht exakt null - im Gegensatz zur ISBN.

Ich wette, es gab schon Fälle einer doppelten UUID. Ist irgendwo geregelt, was dann mit den betroffenen Datensätzen passieren muss?
 
Nein ist es nicht. Und ja es gab mindestens schon eine doppelte, ich habe schon eine doppelt erzeugt.

Beantwortet meine Frage aber nicht: Welches Buch ist gemeint, es gibt mehrere die "Clean Code" im Titel oder Untertitel tragen. Deswegen hat man ja die ISBN erfunden...
 
Rosenduft schrieb:
Ist geregelt, was dann passieren muss?
Nein, aber eigentlich ja, also vielleicht, soll heißen: Kommt drauf an.

Normalerweise generierst du UUIDs innerhalb eines abgeschlossenen Ökosystems. D.h. deinem System ist es vollkommen egal, ob am anderen Ende der Welt ein anderes System dieselbe UUID generiert hat, weil du eh niemals damit in Berührung kommst.

Und selbst wenn du von einem anderen System eine UUID erhältst, die du selbst auch schon verwendet hast, ist das auch nichts neues. Dasselbe Problem tritt milliardenfach öfter auf bei den seit Jahrzehnten eingesetzten SQL Datenbanken mit Auto-Increment-IDs. Da gibt's in jeder einzelnen Datenbank bereits mehrfach die ID "1".

Also bleibt eigentlich nur ein interessanter Fall: Was passiert, wenn dein eigenes System 2x dieselbe UUID generiert? Das wird hoffentlich deiner Datenbank beim INSERT auffallen: "duplicate key error". Und was dann passiert, regelt der Code deiner Applikation. Da stehen dir alle Türen offen: Z.B. Heimlich still und leise so oft eine neue UUID generieren bis du eine gefunden hast, die noch nicht benutzt wurde. Oder dem User eine Fehlermeldung präsentieren "unerwarteter Fehler, versuchen sie es später noch mal". Viele Wege führen nach Rom.

@ayngush Das ist natürlich wahr, aber wie viele Bücher findest du, die wirklich einfach nur "Clean Code" heißen? Ich habe 3 gefunden. 1 davon hat keinerlei Bewertungen bei Amazon. Und die anderen beiden (deutsche + englische Fassung desselben Buches) sind von "Uncle Bob" (a.k.a. Robert C. Martin), der in der Welt der Software Entwicklung einen ähnlichen Bekanntheitsgrad wie Martin Fowler hat.
Sowohl Google als auch Amazon und Wikipedia liefern dir für "Clean Code" als ersten Treffer exakt dieses Buch.
Die Wahrscheinlichkeit, dass ein anderes "Clean Code" Buch gemeint sein könnte ist also vergleichbar mit der einer doppelten UUID.

Aber Uncle Bob sollte echt mal an seinen Buch Titeln arbeiten :D - oder die Branche wechseln, um Ratgeber für Putzkräfte zu verkaufen... "Clean Code" , "Clean Architecture" , "Clean Coder" , "Clean Agile"
Kann ich als "Dirty Coder" überhaupt "Clean Code" produzieren, oder muss ich vorher "Clean Coder" gelesen haben?
Fragen über Fragen. :evillol:
 
Zuletzt bearbeitet:

Ähnliche Themen

Zurück
Oben