Wie empfiehlt es sich, Klassen unter Paketnamen in Android zu platzieren?

7
%Vor%

Hallo,

Ich habe gerade einen Test auf Android abgeschlossen, der eine App erstellen sollte, die einen Live-News-Feed aufnimmt und anzeigt. Der Lehrer war jedoch sehr kritisch, da ich alle meine Klassen in einem Paket zusammenfasste.

Ich frage mich nur, was die beste Praxis für Verpackungsklassen ist. Für meinen speziellen Test habe ich folgende Klassen unter diesem Paketnamen:

com.viewsys.ncon

Meine Klassen waren diese:

%Vor%

Vielen Dank für Anregungen,

    
ant2009 07.10.2014, 17:05
quelle

6 Antworten

17

Zuerst können Sie nach Model (Klassen, die Ihre Daten enthalten) und View (alles für die Anzeige) trennen und dann können Sie Unterpakete für verschiedene Arten von Klassen erstellen.

Zum Beispiel:

com.viewsys.ncon

%Vor%

com.viewsys.ncon.model

%Vor%

com.viewsys.ncon.model.db

%Vor%

com.viewsys.ncon.view

%Vor%

com.viewsys.ncon.view.activities

%Vor%

com.viewsys.ncon.view.fragments

%Vor%

Sie sollten versuchen, die Abhängigkeitszyklen von Paketen zu minimieren. Das heißt, ein Paket kann von einem anderen (oder mehreren anderen) Paket abhängen und seine Klassen verwenden, aber das erforderliche Paket sollte die Abhängigkeit vom ersten Paket minimieren. also sollten die abhängigen Anrufe nur in eine Richtung gehen.

    
Simulant 21.10.2014, 07:33
quelle
9

Nun, ich benutze die folgenden Pakete -

  1. project.activity - Um alle Aktivitäten zu sehen
  2. project.fragment - Fragmente
  3. project.broadcastReceiver
  4. project.databaseHelpers - Um die Datenbankhilfsklassen für die Verarbeitung einzelner Tabellen sowie die SqliteHelper-Hauptklasse, die zum Erstellen aller Datenbanktabellen verwendet wird, zu verwenden.
  5. project.networkTasks - alle Aufrufe an verschiedene APIs verschiedener Dienste finden Sie hier.
  6. project.services - Dies schließt die Klassen ein, die als Dienste ausgeführt werden. Manchmal überschneiden sie sich mit Netzwerkaufgaben.
  7. project.general - Dies schließt allgemeine Klassen ein. Angenommen, Sie speichern Schülerdaten in einer Tabelle. Dann können Sie einen Studentenkurs haben. Wenn Sie eine Instanz davon erstellen und ausfüllen, können Sie die mit dem Schüler verbundenen Daten klar vermitteln.
  8. project.utils - Dies schließt Hilfsklassen ein. Diese Klassen haben hauptsächlich statische Methoden. Zum Beispiel würde die Methode, die HttpResponse als String zu erhalten, in eine dieser Klassen eingefügt.

Als eine allgemeine Regel, was Steve sagte, ist richtig, wenden Sie das Prinzip der Kohäsion und Kopplung an.

    
Neeraj Shukla 27.10.2014 18:35
quelle
5

Ich strukturiere meine Pakete ähnlich wie Simulants Ratschläge. Ich habe festgestellt, dass dies der beste Ansatz für die Aufrechterhaltung eines gut strukturierten Projekts ist.

Ich erstelle jedoch auch Unterpakete für Objekte, die eines Ihrer eigenen Objekte erweitern. Zum Beispiel:

%Vor%

Dieser spezielle Ansatz kann sehr nützlich sein, um Ihr Projekt zu navigieren, sobald es ein bisschen größer wird, besonders wenn Sie eine Menge früherer Funktionalität von benutzerdefinierten Objekten erweitern.

    
Chackle 27.10.2014 16:32
quelle
4

Die Aufteilung Ihrer Klassen in Pakete sollte nach den Programmierprinzipien von Kohäsion und Kopplung erfolgen.

Zusammenhalt, einfach gesagt, bedeutet, dass Dinge, die verwandt sind (oder eines Typs), zusammenpassen sollten. Zum Beispiel Ihre Fragmente und Ihre Aktivitäten, wie von Simulant vorgeschlagen.

Kopplung ist, wie stark verschiedene Dinge voneinander abhängen. Wo immer es möglich ist, sollten Dinge lose gekoppelt sein - wo Abhängigkeiten nur in eine Richtung gehen. Wenn zwei Module voneinander abhängen, sagen wir, dass sie fest gekoppelt sind und sie sollten Teil desselben Pakets sein - obwohl Sie ihre Abhängigkeiten möglicherweise durch Einführung einer Schnittstelle trennen möchten. Wenn die Abhängigkeiten nur eine Möglichkeit sind (wie sie sein sollten), können Sie sie in verschiedene Pakete aufteilen.

    
Steve K 23.10.2014 02:36
quelle
4

Versuchen Sie immer, die Module lose gekoppelt zu halten, damit sie die Skalierbarkeit in Zukunft unterstützen können. Wenn Sie alle Klassen in dasselbe Paket einfügen, kann dies zu Problemen mit der Skalierbarkeit führen. Halte die Fragmente, Aktivitäten, modelliere alles in einem anderen Paket.

    
Arun Raja 27.10.2014 10:26
quelle
2

Bitte werfen Sie einen Blick in dieses Repository , dort werden die besten Praktiken für die Android-Entwicklung und eine davon vorgestellt Praktiken ist die Java-Paket-Architektur.

Kurz gesagt, können Sie Folgendes tun:

%Vor%

Aktivitäten und Fragmente werden nicht als Ansichten klassifiziert, da sie Controller sind, aber sie behandeln auch die Ansicht, also fügen Sie ihre eigenen Pakete ein.

    
Filipe Bezerra de Sousa 10.03.2015 12:06
quelle

Tags und Links