samedi 3 mars 2012

Plus l'iPhone 3 Development Update

Aujourd'hui, j'ai taquiné mes followers sur Twitter avec des this and this. J'ai pensé qu'il ne serait que justice pour élucider un peu.

La première moitié de Plus l'iPhone 3 de développement a été une lutte à écrire. Dans la première moitié du livre, nous allons créer une application de navigation basée sur l'aide de données de base. Bien que les chapitres sont principalement destinés à enseigner les différents aspects des données de base, je voulais aussi montrer le bon exemple du design. Si vous avez déjà écrit une vue basée sur des tables de montage en détail, vous savez que c'est un défi. Même exemple de code Apple utilise kludgey, difficiles à maintenir les techniques, car l'architecture de tableau n'était tout simplement pas conçu principalement pour la création de ce type de vue, il a été conçu pour afficher des valeurs d'une collection ou d'une liste n'est pas pour l'affichage ou la modification d'attributs différents un seul objet.

Ma pensée au début était de créer un cadre générique de contrôleurs qui pourrait manipuler n'importe quel objet d'édition de base de données tout en créant des listes de propriétés. Cette approche, bien que je pense qu'il a beaucoup de mérite pour une utilisation dans le développement, a fait le livre trop difficile à écrire. Tout le code que j'ai eu besoin de montrer devenait amassés dans ces classes génériques, et j'ai eu à passer beaucoup de temps à expliquer l'architecture plutôt que de l'importance de données de base des concepts que j'avais besoin de faire passer.

Après beaucoup de difficultés, et sans doute l'écriture de vingt à cinq prototypes différents, j'ai finalement frappé sur une solution qui me plaisait. C'était une conception maintenable qui a emprunté beaucoup de la liste des biens de prototype, mais a gardé tout dans les endroits où les gens sont habitués à le voir. Plutôt que de listes de propriétés, nous stockons la structure de la vue du tableau de tableaux, mais nous commençons suffisamment simples pour que les concepts ne deviennent pas trop écrasante. Ou du moins je l'espère, ils n'en ont pas.

Comme j'ai commencé à travailler sur le chapitre 7 version de l'application, qui est la première fois que nous avons besoin d'ajouter un autre contrôleur de montage détaillée, j'ai réalisé que dans quelques pages courtes, on peut factoriser la classe contrôleur écrite au cours des six chapitres précédents d'être complètement générique et totalement réutilisable, ce qui signifie que nous n'aurions pas besoin d'écrire du code plus substantiels pour l'édition ou l'affichage des données une fois la refactorisation est fait. Nous pouvons ajouter descendre dans un nombre infini de contrôleurs, traversant des relations ou chercher des propriétés, et ne jamais avoir à ajouter plus de code que ce qui est nécessaire pour créer un couple de tableaux qui définissent l'objet et les attributs que nous voulons laisser l'utilisateur voir ou éditer.

C'est jusqu'à présent été un chapitre un peu difficile à écrire, mais il est incroyablement édifiant pour arriver ici et de réaliser que l'attention à la conception a été payante. Le résultat final du chapitre 7 est fondamentalement une infrastructure extensible pour la création de la navigation basée sur des données de base-applications. Espérons que le lecteur aura également emmené une solide compréhension des données de base, mais même si elle n'est pas, vous aurez un point de départ pour travailler à partir de qui vous fera économiser beaucoup de temps de développement. Vous créez simplement votre modèle, et mis en tableaux de l'instance du contrôleur afin de refléter les objets et les données qui doivent être affichés ou édités dans votre application. Tous les trucs vraiment dur est fait et peut être exploité maintes et maintes fois.

Merci pour votre patience. Une fois le chapitre 7 est fait, je devrais être capable de faire des progrès beaucoup plus rapides.

Aucun commentaire: