Ich möchte euch mein Programm vorstellen, an dem ich gerade programmiere: FIDER (kommt von FileUploader).
FIDER ist ein OpenSource-Programm (Java), das zum Upload von Bildern zu dem Sharehoster Abload (http://www.abload.de/) dient.
Der Vorteil ist die einfachere Bedienung und die Werbefreiheit gegenüber der webbasierten Oberfläche.
Es ist geplant, auch andere Dateiformate zu unterstützen (also nicht nur Bilder).
FIDER ist zwar erst in der Alpha-Phase und erst im Aufbau.
Aber genau deswegen kann ich eure Tipps und Ratschläge gut gebrauchen - und wer sich an meinem Projekt beteiligen will, kann sich gerne bei mir melden (entweder hier im Thread, per PN oder per Mail)!
Ohne jetzt dein Programm oder Abload zu kennen - sicher, dass du das von Seiten Abloads darfst? Oftmals wird sowas verboten, eben wegen der Werbeeinnahmen, die dem Anbieter entgehen.
warum muss ich mir noch die libraries zusammensuchen ? warum sind sie nicht schon dabei ?
es gibt die Globale Variable Controller - die auch noch zig weitere Objekte referenziert… somit hast du nicht nur die eine Instance global auch jede andere - Globale States sind nicht gut …
throws IllegalArgumentException ist nicht noetig… es ist eine RuntimeException
Programmiere immer gegen interfaces - zb statt public ArrayList getUploadArray() -> public List getUploadArray() oder gar public Collection getUploadArray()
Tell dont ask
httpClient = new HttpClient();
SimpleHttpConnectionManager conManager = (SimpleHttpConnectionManager) httpClient
.getHttpConnectionManager();
conManager.getParams().setConnectionTimeout(8000);
table = new UploadTable();
tableScrollPane = new JScrollPane(table);
linkBox = new ImageLinkBox(this);
}
deine API luegt in dieser Hinsicht - dem Verwender ist nicht klar was AbloadUpload fuer Abhaengigkeiten hat… Abhaengigkeiten immer explizit angeben und nicht selbst herbeizaubern.
nicht ein Test zu finden
Vor allem fuer Tests ist dieser Code nicht zugaenglich und das ist nicht gut. Weiterhin, was macht jemand der ueber 8000 port nix tun kann ? etc
ist nicht boes gemeint, aber sind generelle Sachen, die man beachten sollte - als Tipp fuer zukuenftige Sachen
[QUOTE=deathbyaclown]mein erster eindruck (hab den src runtergeladen)
Programmiere immer gegen interfaces - zb statt public ArrayList getUploadArray() -> public List getUploadArray() oder gar public Collection getUploadArray()
[/QUOTE]
Ich hab den Sourcecode nicht angeschaut, aber was ist der Vorteil wenn man gegen Interfaces programmiert? Wenn intern eine ArrayList verwendet wird, sehe ich keinen Grund nur eine Liste zurückzugeben - im Gegeinteil, außen weiß man ja nicht mehr welche Klasse genau vorliegt und welche Methoden genutzt werden können. Man verliert sozusagen Details oder?
nein, implementierungsdetails sollten NIE nauch aussen gegeben werden. Statt eine ArrayList weiterzugeben gibt List zb raus. Da ArrayList das List interface implementiert kann der Verwender alle Methoden nutzen, ohne zu wissen dass es eine arrayList oder eine LinkedList oder deine eigene super performante List ist.
Man macht sie somit nicht von einer konkreten Implementierung abhaengig.
Warum soll der aussenstehende wissen welche Implementierung man genommen hat… es ist eine List, ergo kann ich alle in List angebotenen Methoden auch nutzen.
Weiterhin stell dir vor du hast ueber ArrayList geschrieben und Leute benutzen nun deine API und dementsprechend auch ArrayList. Jetzt hat sich aber rausgestellt dass ArrayList nicht gut ist sonder die SuperDuperList ist wesentlich besser… viel Spass beim Aendern
Durch Interfaceimplementierung hast du und deine API keinerlei Probleme Implementierungen auszutauschen, da die Kommunikation nur ueber die Schnittstellen (Interfaces) geht .
auch wenn das ganze schon etwas älter ist, ich wollte es Testen aber unter Java schmiert mir das ganze als ab und bleibt wenn das nicht ist einfach hängen.
Öffnet sich denn bei dir ein Fenster? Und wann schmiert es ab bzw. bleibt es hängen?
Edit:
Wenn ich hier schon mal etwas schreibe, möchte ich erwähnen, dass ich schon länger nicht mehr an diesem Projekt weiterentwickelt habe (da ich andere Projekte angefangen habe). In der neuesten Version, die allerdings nur auf meinem PC vorhanden ist, besteht die Möglichkeit, einfach weitere Hoster hinzuzufügen (Pluginfähigkeit).
Wenn jemand Interesse daran hat, kann ich den Source evtl. auch nochmal rauskramen.
nach einem Restart meines System, konnte ich auch das Java Päckchen ausführen.
java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) Client VM (build 14.0-b16, mixed mode, sharing)
ohne Probleme und es lief schnell.
Intresse besteht auch für meinen Bilderhoster , das ist Richtig!
Hierzu sollte man allerdings auch seinen Username und Login Details eingeben können, damit der Überblick im Archiv besteht.