404 Seiten
Aus aktuellem Anlass ein paar sehr schöne 404 Fehlerseiten.
Aus aktuellem Anlass ein paar sehr schöne 404 Fehlerseiten.
Wer schonmal mit vim gearbeitet hat und drüber verzweifelt ist (ja, ja, jeder Linux Nerd wird mir jetzt sagen, daß das der beste Editor der Welt ist mit dem man “alles machen kann” usw. bla blubb
), dem wird vielleicht dieser Link weiter helfen können. Mir jedenfalls ist jetzt klar, wie ich Copy&Paste im vim mache und das ist ja auch schonmal was.
Auf der Suche nach nützlichen Informationen in PHP API Dokumentationen findet sich ab und an auch…sagen wir mal “Erheiterndes”, denn genau so spröde oldschool wie der Begriff, ist auch der Humor, der hinter dem Code steckt, aber wie gesagt, immerhin ein Versuch. Wenn Programmierer witzig sein wollen, kommt mitunter Skurriles dabei heraus:
/**
* function rambo (first blood)
*
* Completely and utterly destroys everything, returning the kill
* count of victims
*
* @param It don't matter, it’s Rambo baby
* @return Integer Body count (but any less than 500 and it's not
* really worth mentioning)
*/
function rambo() {
// Get the victims and initiate that body count status
$victims = func_get_args();
$body_count = 0;
// Kill those damn punks
foreach($victims as $victim) {
if($death_and_suffering = @unset($victim)) {
$body_count++;
}
}
// How many kills did Rambo tally up on this mission?
return($body_count);
}
?>
Ich weiß nicht, ob hier jeder was damit anfangen kann, aber unter http://www.javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.html?page=2 gibt es einen Artikel, der mir immer wieder beim googlen unterkommt, wenn es um OO orientierte Programmierung geht. In dem Artikel wird die Meinung vertreten, daß getter und setter Methoden überflüssig und schädlich für die Refaktorisierbarkeit sind. Der Artikel ist von 2003, insofern kann es sein, daß die IDEs damals noch nicht so weit waren, aber selbst wenn, bin ich entweder total verblödet oder das ist der größte Schwachsinn, den ich je gelsen habe und das erscheint auch noch auf der großen Javaworld Seite.
Unter anderem wird so argumentiert:
A fundamental precept of OO systems is that an object should not expose any of its implementation details. This way, you can change the implementation without changing the code that uses the object. It follows then that in OO systems you should avoid getter and setter functions since they mostly provide access to implementation details.
Wieso zeige ich Implementierungsdetails auf, wenn ich eine getSize() Methode habe? Von aussen sieht man nicht, wie “Size” berechent wird. Und auch die Kombination von mehereren get-Methoden wird darüber nicht Aufschluss geben. Wenn jetzt die Implementierung des Zusammenwirkens der Klassen untereinander gemeint ist, verstehe ich das schon eher, aber dann kommen wir schon zum nächsten Argument:
To see why, consider that there might be 1,000 calls to a
getX()method in your program, and each call assumes that the return value is of a particular type. You might storegetX()’s return value in a local variable, for example, and that variable type must match the return-value type. If you need to change the way the object is implemented in such a way that the type of X changes, you’re in deep trouble.
Natürlich ist man in “deep trouble”, aber nur, wenn man eine IDE hat, die das nicht automatisch refaktorisiert. In diesem “trouble” ist man aber auch, wenn man die getX() Methode weglässt. Und zuguterletzt ist das Problem beim direkten Zugriff auf public Member, daß nachträgliche Änderung der Datenverarbeitung der Membervariablen einen immensen Refaktorisierungsaufwand bedeuteten. Wenn zum Beispiel getX() plötzlich nicht mehr einfach x zurückgibt, sondern vielleicht x+1, dann wünsch ich viel Spaß beim Ändern der ganzen Codestellen, an denen direkt auf x zugegriffen wird.
Irgendwie steig ich nicht dahinter, was das für eine skurrile Theorie sein soll und vor allem sind alle Kommentatoren derselben Meinung. Seltsam…