| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Markus Raab Registriert seit: Aug 2001 Ort: Berlin Friedrichshain
Beiträge: 935
| Struktur der Klassenbibliothek
Hallo Leute, ich fange eigentlich reichlich spät an mir eine Klassenbibliothek anzulegen, aber besser spät als nie. Bis jetzt habe ich immer neue Pakete geschrieben oder per Copy und Paste einen Teil in ein neues Projekt eingefügt usw. Da ich mich gerade mit dem Thema Design-Patterns beschäftige und das ein oder andere bereits entwickelte Klassenpaket neu erstelle, wollte ich mal nachfragen wie man die denn dann am besten strukturiert. Ich habe jetzt einfach in Eclipse ein neues Projekt "ActionScriptLibrary" angelegt mit einem Source-Folder "classes_AS2". Darin wollte ich jetzt als erstes ein paar Decorator for die Window-Componente von Flash erstellen. Sollte ich da zum beispiel das Paket gleich benenne wie das der Komponente? Ich würde also die Klasse "mx.containers.WindowDecorator" erstellen? Oder doch lieber in einem weiteren Package als "mx.containers.window.WindowDecorator"? Das fände ich z. B. schöner. Oder ratet Ihr ab davon, die gleichen Pakete der Komponenten zu verwenden? Gibt es gängige Verfahrensweisen wie man Klassenbibliotheken strukturiert? Ich habe bis jetzt nur erfahren, dass man für die Projekte Domainstruktur abbildet. Also z. B. das Paket "com.derraab.PROJEKTNAME". Naja, viele Fragen...
__________________ Blog | derRaab(); - Flash Platform Developer | XING | Joykey - Joystickevent to Keyevent | electronicSat - elektronische Musik | MySpace |
| | |
| | #3 (permalink) |
| muh Registriert seit: Apr 2002 Ort: Freiburg
Beiträge: 4.350
|
Auf jeden Fall solltest du die Klasse in deine Package-Struktur packen, nicht in die mx-Struktur von Macromedia. Sonst könnte es ja irgendwann passieren, dass die auch nen Window-Decorator anlegen, und dann hast du zwei Klassen mit gleichem Package und gleichem Namen.
__________________ »Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!) |
| | |
| | #5 (permalink) |
| DeRailed Registriert seit: Sep 2006
Beiträge: 321
|
Als Anregung (oder abschreckendes Beispiel? ) hier die Struktur meiner Codebase (bzw. Klassenbibliothek):Mein Root ist at.klickverbot. Auch wenn ich diese Domain (noch) nicht besitze, sollte das doch eindeutig sein. In diesem Root existieren verschiedene Pakete für die "Subsysteme", also beispielsweise drawing für die Zeichenfunktionen, ui für die Benutzerschnittstelle, oder util für Sachen wie Timer, EnterFrame, Delegate, ... In diesen Paketen liegen im Normalfall die Klassen, aber manchmal ist eine feinere Einteilung erforderlich. Beispielweise habe ich in at.klickverbot.ui noch ein Unterpaket namens themed, dass die Klassen enthält, die mein Theme-System verwenden. Projekte bekommen ihr eigenes Root-Paket at.klickverbot.projektname, wenn es die Logik erfordert – beispielsweise bei MVC – werden auch diese noch einmal unterteilt. Ich würde auf gar keinen Fall eigene Klassen im mx-Namespace erstellen. Abgesehen davon, dass hier mit einer neuen Flash-Version neue Klassen hinzukommen können, wird dies die meisten Leute verwirren, die das Vergnügen haben, deinen Code lesen zu müssen. Geändert von klickverbot (08-02-2007 um 00:34 Uhr) |
| | |
| | #6 (permalink) |
| Markus Raab Registriert seit: Aug 2001 Ort: Berlin Friedrichshain
Beiträge: 935
|
@Omega Psi: Die Schreibweisen sind mir klar, wollte es nur hervorheben. ![]() Also dann mache ich das jetzt in Zukunft so: Kundensachen lege ich also in einem Paket "topleveldomain.domain" ab und erstelle darin die projektspezifischen Klassen. Zusätzlich habe ich dann noch eine separate Bibliothek in der ich allgemeingültige Klassen hinterlege wie z. B. String Validatoren usw... Die liegen dann in meinen Paket "com.derraab". Die will ich ja wiederverwenden... So. Oder?
__________________ Blog | derRaab(); - Flash Platform Developer | XING | Joykey - Joystickevent to Keyevent | electronicSat - elektronische Musik | MySpace |
| | |
| | #8 (permalink) |
| Markus Raab Registriert seit: Aug 2001 Ort: Berlin Friedrichshain
Beiträge: 935
|
Und mein WindowDecorator liegt dann halt genau da: "com.derraab.mx.containers.window.WindowDecora tor"
__________________ Blog | derRaab(); - Flash Platform Developer | XING | Joykey - Joystickevent to Keyevent | electronicSat - elektronische Musik | MySpace |
| | |
| | #9 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.898
|
Hm, also im endeffekt ist es echt latte, wo du das Ding speicherst... aber wieso mx? Also, du mir ists egal... ob du
|
| | |
| | #10 (permalink) |
| Markus Raab Registriert seit: Aug 2001 Ort: Berlin Friedrichshain
Beiträge: 935
|
mx nur, damit klar ist, dass es sich um Erweiterungen des mx-Paketes von Macromedia ist. Huch, Adobe mein ich.
__________________ Blog | derRaab(); - Flash Platform Developer | XING | Joykey - Joystickevent to Keyevent | electronicSat - elektronische Musik | MySpace |
| | |
| | #11 (permalink) |
| FF User Registriert seit: Jul 2002
Beiträge: 135
|
Ich tendiere eher dazu projektspezifische Klassen mit in den Projektordner zu legen (Projektordner_flash/Classes). Zum einen sind dann alle Entwicklungsdateien zusammen, was Weitergabe und Backup erleichtert, zum anderen möchte ich nicht auf die Idee kommen, diese Klassen für spätere Projekte des Kundens umzuschreiben, so dass das andere Projekt nicht mehr damit läuft. Projektübergreifende Klassen speichere ich natürlich auch in der von dir genannten Form ab. Zu Beachten ist dabei aber, wenn Änderungen an diesen Klassen vorgenommen werden, können evtl. ältere Projekte nicht mehr veröffentlicht werden, da diese die alte Schnittstelle verwenden. Wenn ich Änderungen vornehmen, kopiere ich stets alle Klassen in einen neuen Versionsordner und arbeite damit weiter. Die Projekte erhalten dann einen Vermerk mit welcher Version des Frameworks sie veröffentlicht wurden. Mit Subversion wäre das ganz sicherlich noch eleganter zu lösen. Wollte ich nur noch zu bedenken geben. |
| | |
| | #14 (permalink) |
| Markus Raab Registriert seit: Aug 2001 Ort: Berlin Friedrichshain
Beiträge: 935
|
Ich wollt nur noch kurz klarstellen, dass ich alle Kundenspezifischen Klassenpakete natürlich im Workspace des Kundenprojektes habe. Und zusätzlich eine allgemeingültige Library als eigenständiges Projekt, die ich dann als LinkedLibrary und über den Klassenpfad in der FLA einbinde. Vielleicht sollte ich auch einfach immer dieses Paket zusätzlich in den Projektordner packen. Ich würde halt nur ungern allen Kunden immer meine komplette Bibliothek überlassen. Dann kopier ich halt nur das, was ich gerade benötige rüber.
__________________ Blog | derRaab(); - Flash Platform Developer | XING | Joykey - Joystickevent to Keyevent | electronicSat - elektronische Musik | MySpace |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |