2010-10-06 18 views
5

Ich bin dabei, eine Benutzerklasse für mein Projekt zu erstellen. Gibt es irgendwelche Meinungen darüber, ob es eine schlechte Praxis ist, eine solche allgemein bekannte Klasse zu schaffen? Ich könnte es mit einem spezifischen Präfix für mein Projekt ergänzen.Java "Benutzer" Klassenbenennung Best Practice?

+1

soll dieses Projekt als Bibliothek von anderen Projekten verwendet werden (und Benutzer wird eine öffentliche Klasse sein)? – Thilo

+0

Nein Proprietäres Webprojekt. Ich bin eigentlich ziemlich zufrieden damit, Benutzer als Benutzer zu behalten, aber wir haben auch ein anderes Domänenkonzept einer Sitzung. Ich bin noch nicht dazu gekommen, aber die Namensgebung gibt mir schon Sodbrennen. – Steve

Antwort

3

Dies ist, was packages sind für.

+2

Nun könnten Sie am Ende zwei Pakete mit der Klasse "Benutzer" importieren. Das würde wahrscheinlich Kopfschmerzen bereiten. – rkg

+0

@Ravi, aber wenn das ein Problem sein sollte, dann könnten Sie auf die Klassen mit ihren voll qualifizierten Namen verweisen. –

+2

@Michael: Das stimmt, aber ich fühle, dass es die Lesbarkeit des Codes verletzt. – rkg

1

Die Verwendung allgemeiner Namen ist keine schlechte Übung, solange und solange Sie den Namen nicht als den für die Funktionalität der Klasse bezeichnen. Denken Sie daran, richtige Pakete zu erstellen, die Ihre Klasse genauer definieren können.

2

Ich würde vorschlagen, dass Sie Ihrer Benutzerklasse definitiv einen anwendungsspezifischen Begriff voranstellen. "User" ist viel zu häufig und vage. Es kann leicht passieren, dass Sie die API verwenden, die die Klasse "User" oder die Schnittstelle "User" besitzt. Obwohl die neuesten IDEs es relativ einfach machen, Ihren Code umzuformen, wäre es sauberer und einfacher, wenn Sie eine anwendungsspezifische "Benutzer" -Klasse haben.

+0

Ich stimme dir zu. Es fängt an, ein Durcheinander zu werden, wenn Sie mehrere Klassen mit demselben Namen haben. –

0

Sie sollten Java package s verwenden, um Namenskonflikte zu vermeiden. Es ist nichts falsch daran, einen gebräuchlichen Namen zu verwenden, stellen Sie sicher, dass Sie ihn in ein eigenes Paket einfügen. Zum Beispiel könnten Sie die folgende Struktur haben:

com/ 
    yourwebsite/ 
     yourproject/ 
      userdata/ 
       User.java 

Sie dann die Datei "User.java" beginnen mit:

package com.yourwebsite.yourproject.userdata; 

Wenn Sie es zu importieren, verwenden Sie:

import com.yourwebsite.yourproject.userdata.User; 
+1

Ich würde immer noch vorschlagen, dass Leute ihre Klassen "String" oder "Liste" oder "Sammlung" oder "Ausnahme" oder "Verbindung" oder "Sitzung" nicht nennen. Mir geht es gut mit "Benutzer", nur weil es sonst nirgends verwendet wird (in meinem aktuellen Arbeitsbereich, der viele Bibliotheken hat, gibt es nur einen in "com.sun.tools.internals ..." und einen in "org .hsqldb ", von denen Sie wahrscheinlich keine verwenden werden. – Thilo

+0

@Thilo, ja, ich würde sicherlich keine Namen verwenden, die bereits in einem der Pakete "java. *" Oder "javax. *" Verwendet werden, aber es gibt keine Benutzerklasse in der Java-API. –

1

Ich versuche immer, allgemeine Namen wie Benutzer für Klarheit zu verwenden. Stellen Sie sicher, dass die Namen aus der Problemdomäne und dem vorhandenen Projektvokabular stammen. Achten Sie auf Zweideutigkeiten und ändern Sie gegebenenfalls den Klassennamen. Moderne IDEs mit automatisierter Refactoring-Unterstützung machen das einfach.

+0

Ja. Der korrekte Klassenname in einem geeigneten Paket ist das Richtige. IDEs wie IntelliJ unterstützen sehr gut beim Suchen und Importieren von Klassennamen - es kann sogar automatisch sein. – Jayan

0

Dieser Name wird von keiner öffentlichen API verwendet. Daher ist es in Ordnung, wenn eine App sie verwendet.