Ich bin derzeit 4 Monate in einem Praktikum und als ich meinen Code überprüfte, mochte mein Chef nicht, dass ich ein bestimmtes Objekt für eine Reihe von Methoden in einigen separaten Klassen innerhalb einer Assembly lokal gehalten hatte. Es gefiel ihm nicht, dass ich jedes Mal ein neues Objekt erstellt habe, und er sagte mir stattdessen, ich solle ein einzelnes Objekt erstellen, auf das von überall aus zugegriffen werden kann. Ich musste es daher als statisches Objekt innerhalb einer statischen Klasse erstellen und von hier aus einfach darauf verweisen, ich möchte es verwenden!
Wie würden Sie damit umgehen, da ich erst seit 4 Monaten professionell programmiere?
teamwork
coding-standards
singleton
Darren Young
quelle
quelle
Antworten:
Wenn ein Objekt ausreicht, ist es eine Verschwendung, jedes Mal ein Objekt zu erstellen, und hier könnte Ihr Chef Recht haben.
Das Problem ist der ordnungsgemäße Zugriff auf dieses Objekt. Eine fabrikähnliche Methode mit korrekter Sichtbarkeit, die immer das statische Objekt zurückgibt, ist die erste Lösung, die in den Sinn kommt. Andere existieren sicherlich.
quelle
Ich kann Ihren speziellen Fall nicht kommentieren, aber die Verwendung globaler Variablen ist manchmal eine gute Lösung. Java - System - Klasse voll von statischen, globalen Variablen.
Aber im Allgemeinen, wenn Sie denken, dass Sie Recht haben und Ihr Chef Unrecht hat, warum fragen Sie dann Ihren Chef nicht, warum er eine globale Variable für eine bessere Lösung hält? Ein einfaches "Ich mag es nicht" ist so vage wie "globale Variablen sind böse". Sie müssen mehr von Ihrem Chef verlangen!
Wenn er seine Haltung nicht begründen kann und Sie Ihre Haltung begründen können oder umgekehrt, ist dies eine gute Gelegenheit zum Lernen. Wenn ihr beide eure Standpunkte rechtfertigen könnt, dann ist es wahrscheinlich eine Geschmackssache - oder eine Frage der Erfahrung: Euer Chef muss mehr als 4 Monate professionell programmiert haben, denke ich?
quelle
java.lang.System
enthält genau drei globale Variablen und für jede gibt es eine Methode, um sie richtig einzustellen. AberSystem
es steckt voller statischer Methoden, die globale Objekte zurückgeben, und daran ist genau nichts auszusetzen.System
aufrechterhalten, werden 99,9% der Anwendungsfälle vereinfacht, während die verbleibenden 0,1% Probleme verursachen. Es gibt keine "richtige" Antwort darauf, ob 0,1% die zusätzliche Komplexität wert sind oder nicht.Als jemand in Ihrer Position können Sie nur lernen. Wenn es sich bei dem Objekt im Wesentlichen um eine Konstante handelt (dh es kann sich nicht ändern und behält den Status nicht bei), hat Ihr Chef möglicherweise Recht. Es schadet nicht, ein statisch konstantes Objekt zu haben. Wie viele Definitionen von PI gibt es schließlich?
Einige Leute verteidigen die Denkweise "keine globalen Objekte" bis zum religiösen Fieber. Dies hat einen von zwei Gründen: Sie waren aufgrund übermäßiger Nutzung globaler Variablen / Objekte nicht in der Lage, Fehler oder die Fragilität des Systems nachzuvollziehen, oder sie haben gehört, dass dies schlecht ist, und sie können nicht selbst nachdenken. Ich persönlich gehöre zu der Gruppe von Menschen, die von Zerbrechlichkeit und der Suche nach Fehlern schwer getroffen wurden - aber ich habe auch hier ein gewisses Gleichgewicht gelernt.
Wenn ich in deinen Schuhen stecke, würde ich weitermachen und tun, was der Chef sagt - es ist schließlich sein Hintern in der Leitung. Dann würde ich die Auswirkungen dieser Wahl im Laufe der Zeit beobachten und sehen. Dies ist ein effektives Lernwerkzeug.
quelle
Abhängig von der jeweiligen Situation ist eine globale Variable möglicherweise die beste Lösung. In der eingebetteten Programmierung belegen Globals keinen Stapelspeicher und sind daher eine gute Wahl.
Globals oder nicht, ich habe es als gute Praxis empfunden, Globals ein Präfix zu geben. Dadurch werden andere Programmierer, die Ihren Code googeln, auf die Auswirkungen aufmerksam, wenn sie damit in Konflikt geraten.
quelle
Vielleicht wollte Ihr Chef, dass Sie das Singleton-Muster verwenden. Dies ist eine sehr gute Vorgehensweise, wenn Sie von mehreren Instanzen aus auf ein bestimmtes Objekt zugreifen müssen.
Hier ist ein Link zur Erklärung der Wikipedias
quelle
good practice
wäre, en.wikipedia.org/wiki/Dependency_injection