Best Practices für Android bei Paketstrukturproblemen [geschlossen]

8

Basierend auf

Ich habe die folgende Android-Paketstruktur erstellt:

  • com.company.product.activities

  • com.company.product.database

  • com.company.product.fragments

  • com.company.product.fragments.adapter

  • com.company.product.models

Aber manchmal muss ich nach Bedarf einen Adapter für einen benutzerdefinierten Dialog haben.

Wo soll ich das hinstellen? Da es sich um einen kleinen Adapter handelt, wird dieser meist innerhalb einer Aktivität in einem Dialog verwendet, wobei die Vorgänge sich auf die Aktivität zurückführen lassen.

Probleme sind:

  1. Zu viel Kontext (Aktivität) Verweis wird an den Adapter übergeben.

  2. Alle Methoden werden öffentlich, was gegen das OOP-Konzept des Verbergens von Implementierungsdetails verstößt.

  3. Wie viel Unterschied würde es machen, einen privaten Adapter zusammen mit der Packstruktur zu haben? Ist dies die Standardmethode für die Android-Projektpaketstruktur?

Akhil Jain 23.07.2013, 10:52
quelle

1 Antwort

7

Ich würde den Adapter in ein adapters -Paket setzen. Selbst wenn Sie it is small adapter, mostly its to be used within a activity in a dialog, with operations reflecting back to activity kennen, werden Sie nie wissen, wie sich dieser Adapter entwickeln wird und in welcher Situation er verwendet wird.

In Bezug auf Ihre Bedenken:

  1. Too much of context references - Jede Instanz Ihres Adapters hat eine einzige Context für die Referenz. Solange Sie nichts von Ihrem Adapter verlieren, ist das kein Problem. Möglicherweise haben Sie diesen Adapter auch durch andere Implementierungen erweitert, und das gilt auch für diese Implementierung.
  2. %Code%. Solange Sie Adapter von Ihrer App aufrufen (was immer der Fall sein sollte) und Sie kein SDK erstellen, sehe ich das Problem wirklich nicht. Wenn Sie sich Sorgen über die OOP-Best Practices machen, würde ich mir eher Sorgen machen, dass der Adapter All methods end up public, which fails the OOP's concept of hiding implementation details respektiert: Lassen Sie den Adapter nicht mehr als die angegebenen Daten anzeigen .
  3. Unter Berücksichtigung der Wiederverwendbarkeit würde ich lieber keinen Adapter als privates (statisches oder nicht) Klassenmitglied haben. Um mehr hinzuzufügen, gibt es ein Best Practice , das den Zugriff auf Single Responsibility Principle access abhält, wenn Sie beschäftigen sich mit dem Aufruf von private code aus inneren Klassen.

Also, um es kurz zu fassen, unter Berücksichtigung der Wiederverwendbarkeit, private und des Best-Practice-Artikels, bin ich dafür oder teile Single Responsibility von dedizierten Klassen.

    
gunar 23.07.2013, 11:09
quelle