- 10 Puzzle Websites to Sharpen Your Programming Skills
Schon wieder ein Link zu einem Artikel auf Six Revisions. Schon wieder klasse. - Sneaky Microsoft plug-in puts Firefox users at risk
Das ist eigentlich eh ein alter Hut, jetzt aber wieder aktuell. - Goodbye Shared Hosting, Welcome to the Cloud
Für mich momentan noch zu teuer …
Monat: Oktober 2009
Random Links #63
- Java: The Good Parts
Kompakter Java Überblick. Groovy und Grails fehlt aber. - Performance Comparison of Major Web Browsers
Interessant wär noch, wie Safari auf dem Mac mit vergleichbarer Hardware performt. - jQuery UI
Ich finde ja jQuery allein schon Spitze, der UI Part setzt noch eins drauf. - JetBrains’ IntelliJ IDEA Goes Open Source
Ich habs zwei mal lesen müssen. Aber es ist wirklich wahr.
Random Links #62
- An Introduction to the Raphael JS Library
Zeichnen mit JS. - Rubyists – what are your “tools of the trade”?
Toller Post, tolle responses. Super Sache.
Random Links #61
- Plan to write big software – and you have already lost
“Optimizing for your software project becoming big is the same as optimizing a car to hit a rock wall – you are optimizing for failure” – Schöner Satz - The problem with Gentoo
Ich würde “zuviel Aufwand” hinzufügen. - I Don’t Code in my Free Time
Mir sind ein paar Schmunzler ausgekommen …. - Mozilla Join Microsoft in Slamming Google Chrome Frame
Ich bin hin und her gerissen. Mal schauen wie sich Chrome Frame weiter entwickelt
Random Links #60
- Betriebssysteme im Härtetest
Normalerweise bin ich ja bemüht hier nur Links zu guten Artikel zu veröffentlichen. Dieser ist aber sowas von schlecht, dass er auch lesenswert ist. Unglaublich. - 30 Beautiful Custom PC Case Designs
Ich suche ja gerade ein Gehäuse für meinen neuen PC … - View Source Tutorial: Fancy Web Page Using HTML5, CSS, and SVG
HTML5 und Co in Action
Random Links #59
- Updates From the Open-source Browser Front-line
Interessanter Artikel mit vielen weiterführenden Links. - Scan This List of Open Source Barcode Software
Falls ich sowas mal brauche. Naja, das eine oder andere mal hätte ich das schon gebraucht. - More Linux Distros That Don’t Suck
Wenn ich mir diesen Artikel (und dessen Vorgänger) so durchlese, fällt mir auf Anhieb keine Distro ein, die nicht erwähnt wurde. Trotzdem gute Übersicht. - Lean and Kanban Collection
Jede Menge Links zum neuen Über-Buzzword Kanban. Ich habs noch nicht kapiert… Aber mancher Buzz geht ja einfach wieder vorüber.
Random Links #58
Irgendwie war heute außer dem Kindle International Announcement nicht viel los.
- Prey
Ein Open Source Projekt, das helfen soll, einen gestohlenen Laptop wieder zu finden. Free. - TDD Derangement Syndrome
Nachweise, dass TDD wirklich was bringt. Nona. - 7 Things To Look Out For In Kubuntu 9.10 Karmic Koala
Und wieder einmal stehe ich vor der Entscheidung KDE vs. Gnome.
Die verflixte Namensgebung
Den richtigen Namen zu finden ist wohl eine der schwierigsten Aufgaben überhaupt.
Doch das ist nicht wirklich was Neues, Steve McConnell hat schon 1993 in Code Complete geschrieben:
You can’t give a variable a name the way you give a dog a name – because it’s cute or it has a good sound. Unlike the dog and its name, which are different entities, a variable and a variable’s name are essentially the same thing.
..
The most important consideration in naming a variable is that the name fully and accurately describe the entity the variable represents.
Heute kam mir dann diese Frage in die Quere: how do you call this anti-pattern?
Und sofort ist mir ein Gestank (Neudeutsch: Code Smell) aufgefallen:
NotActive = !mytable.active;
Yups. Ein Bool der mit Not anfängt. Sicher, ist noch immer besser als würde die Variable “X” getauft worden sein, aber besser als ganz schlecht ist noch lang nicht gut.
Und warum stinkt das jetzt?
Man muss um die Ecke denken. Wenn ich die Variable auf true setze, meine ich false. Wenn ich wissen will ob das Ding aktiv ist muss ich auf false prüfen.
Da kann dann solcher Code rauskommen:
if (!NotActive) DoSomething();
oder
if (NotActive == false) DoSomething();
oder ganz kreativ (alles schon gesehen)
if (NotActive) else DoSomething();
Kern des Problems ist das Not als Prefix im Variablennamen. Besser wär hier als Name z.B.: IsInactive.
if (!IsInActive) DoSomething();
Trotzdem ist auch das nicht optimal. Erstens weil trotzdem noch eine Verneinung drinnen ist und ich außerdem aus der Variable nicht erkennen kann was jetzt eigentlich (in)aktiv sein soll. Zweiteres hängt natürlich vom Kontext ab.
Viel leserlicher ist schon:
if (MenuItemIsActive) DoSomething();
Beim zweiten Codebrocken in der Frage wirds dann auch nicht besser:
control.enabled = !mytable.Enable_yes_no
Das _yes_no ist natürlich total überflüssig, ein reines “Enabled” liest sich eindeutig besser.
Darum sollte man bei Booleschen Variablen keinesfalls negative Namen verwenden, damit wird der Code unleserlich und vor allem unnötig kompliziert.
Random Links #57
- Gentoo Linux – Ten Years Compiling: 1999 – 2009
Eine LiveCD zum Zehnjährigen - Mastering CSS Coding: Getting Started
Detaillierte Übersicht bzw. Tutorial zu CSS - Getters and setters in vim
Und wieder ein Post zum Thema Snippets im vim - FLOSS Weekly 88: Linus Torvalds
Super Podcast, man hört zwar nur Linus immer wirklich gut, aber um den geht’s auch.
Random Links #56
- Animate validation feedback using jQuery
Gewöhnungsbedürftiger, aber schöner Effekt. Und eigentlich gar nicht kompliziert. - Python Library for Google Translate
Google Translate auf der Command Line, oder in eigenen Programmen …