Monatsarchiv für September 2009

Warum öffentliche Attribute keine gute Idee sind

Mal was ganz anderes. Ein kleiner Programmierexkurs. Wenn Entwickler Klassen schreiben achten sie oft nicht genug auf die Sicherheit ihrer Attribute und deklarieren die einfach öffentlich:


Class Me extends Human {
	public $mood = '';
}

Soweit so gut, aber dadurch kann jeder einfach meine Stimmung setzen? Ist das gut? Will ich das?


$Me = new Me;
$Me->mood = 'wildstyle';

Ich weiß nicht wies euch geht, aber ich find das ganz und gar nicht gut. Besser wäre, wenn das vorher nochmal geprüft wird, oder? Also:


Class Me extends Human {
	protected $_mood = '';

	public function setMood($mood) {
		if (in_array(strtolower($mood),
		array('wildstyle', 'mehr Unschönheiten')) {
			//ich lass mir doch nicht die Laune vermiesen
			return FALSE;
		} else {
			$this->_mood = strval($mood);
			return TRUE;
		}
	}
}

Daraus resultiert dann:


$Me = new Me;
//geht nicht
$Me->setMood('wildstyle');
//geht
$Me->setMood('partypose');

Fühlt man sich dabei nicht gleich viel sicherer? Ja, Getter und Setter haben auch ihre Kritiker. Aber grad bei einem User-Objekt find ich es sehr gut wenn es sich quasi selbst verteidigt. Ihr nicht?

Location-based gaming

Spiele die mit einem mobilen Endgerät (z.B.) handy direkt draußen in der realen Welt gespielt werden und dabei den Ort an dem sich der Spieler befindet mit ins Spielgeschehen einbinden. So ählich wie “Monopoly City Streets” nur eben wirklich draußen in den Straßen der Stadt. Ein, wie ich finde, sehr spannendes Thema. Werden doch zwei Welten zusammengebracht die wir bisher für eher unvereinbar gehalten haben.

Mehr Infos im mobile zeitgeist SPECIAL 3-2009.