Fausse certitude

Dans le TGV de retour de Paris pour notre rencontre de la Fédération Agile.

Au premier arrêt, en gare de Nurieux, à quelques 480 km de Paris, une femme monte dans le wagon, et de façon assez désagreable, lance aux deux jeunes assis près de la porte : “C’est ma place !”. Après s’être regardés, les deux jeunes, hésitants, se lèvent et l’un d’eux change de place.

A l’approche de l’arrêt suivant, à Bellegarde, la femme se lève pour descendre : elle cherche alors sa valise sans succès, et en fait part au wagon en faisant porter sa voix. Le train étant arrivé en gare, elle bondit hors du wagon pour interpeler vivement la controlleur sur le quai… A tel point que tout le wagon a pu suivre la conversation de l’intérieur : “Non madame, vous êtes descendu du wagon 12 à Nusieux et êtes remonté dans le wagon 13″. On voit alors la femme courrir le long de notre wagon 13 en direction du 12, et effectivement repasser dans l’autre sens avec sa valise !

Ce moment de vie est une belle leçon, et à plusieurs niveaux.

    • Oui la place était la bonne, mais avec un peu de recule, ce n’était pas le bon wagon.
    • Une bonne raison pour rester respectueux dans des situations de crise ou de conflit.
    • Pour ma part, les deux jeunes portent leur part de responsabilité : ils ont été trop conciliants. Un minimum de feedback, un simple “Pourquoi ?” ou “Etes-vous certain(e) ?”
    • Enfin, cela peut aller loin si on n’est pas vigilant. J’ai honte d’avouer que ma première pensée a été de me dire que les deux jeunes s’étaient vengés…

Attention aux certitudes… Avec respect !

 

Objective-C : réifier les classes natives avec les Catégories

Les Catégories en Objective-C : “Ça ressemble à de l’Objet, c’est encapsulé comme l’Objet… mais ce n’est pas de l’Objet”

Je suis en train de travailler sur une application iPad qui doit reprendre une partie du code source d’une précédente version de l’application.

Une des fonctionnalités que j’ai réutilisée est le blog. Il repose sur la digestion en lecture seule d’un flux JSON. Ce flux JSON, via l’API native iOS, retourne un NSDictionary (une hash map) par item, ou plus exactement un tableau (NSArray) d’items (NSDictionary).

Afin de limiter les modifications dans les sources que j’ai importées de la version antérieure, je me suis demandé si je ne pouvais pas utiliser directement les classes natives (NSArray et NSDictionary) au lieu de créer des classes dédiées (Blog et Post).
Et cela s’est finalement bien passé, et donne une solution plutôt séduisante grâce à un idiome du langage Objective-C : les Catégories.

Voir à la fin pour les sources du projet d’exemple.

En Ruby, on parle aussi de ré-ouverture de classe.

Etant donné que, contrairement au C++, Objective-C ne supporte pas l’héritage multiple, les catégories, avec les protocoles, sont un bon moyen d’étendre une classe.

Lire la suite