Kunst und Programmierung: Was macht APIs schön?
Neulich beim Diskutieren mit Felix kam wieder die Frage auf, die schon viele Flamewars ausgelöst hat.
Was macht APIs schon?
Das lässt sich natürlich nicht beantworten - aber an Beispiele kann man dass sehr konkret besprechen:
- Was macht Cocoa schön?
- Was mach Trac/die Python API hässlich?
- Und vice versa?
Das fängt ganz vorne an: Namensgebung der Klassen. In Python ist es guter Stil, das man alle Namen so kurz wie irgend möglich macht.
Das hat zur Folge, dass leider aus den Funktionsnamen so gut wie nichts über die Anzahl und die Typen der Argumente abzuleiten ist.
Und das heißt, das man entweder in der API-Doku nachsieht, oder es halt wissen muss.
Gar nicht schön.
Cocoa dagegen funktioniert so, dass vor jedem Argument ein Stück Methodennamen kommt. Und es ist Usus, dass man dieses Stück Methodennamen verwendet die Argumente zu erklären, Beschreiben oder zumindest deren Typ anzugeben.
Damit kann die billigste Autocompletion fast jede API-Doc ersetzen. Zusammen mit den strikten Regeln wie Methoden zu bennen sind (und z.B. [welche Abkürzungen in Namen verwendet werden dürfen]) kann man damit fast alle Methodennamen hervorragend raten und braucht noch weniger Trips in die Dokumentation.
Hier mal ein paar Beispiele:
[NSException raise:NSInternalInconsistencyException
format:@"'format' allways means that there %@ %@",
@"is format string support", @"very handy. :)"];
[aDictionary setObject:@"anObject" forKey:@"aKey"];
// No more confusion which is first, key or value
// or if you do GUIs and want to ingegrate with other applications
[[NSWorkspace sharedWorkspace] openFile:aPath
fromImage:anImage at:theLocationInWindow inView:aView];
Keine Konfusion an dieser Stelle. Kommentare werden viel seltener gebraucht, da sich der Code ausgezeichnet selbst dokumentiert - in jedem fall viel besser als ähnlich guter Python Code.
So. Morgen gehts weiter mit der anderen Seite - was mir an Python besser gefällt als an Obj-C.
