dotfiles

Découverts récemment lors d’une formation, les dotfiles sont géniaux !

Il s’agit de partager via git (ça pourrait marcher avec n’importe quel autre gestionnaire de versions) la configuration de son ordinateur de façon à pouvoir ré-installer simplement son environnement de travail. Nommés dotfiles en références à tout ces petits fichiers cachés commençant par un . sur les systèmes à la UNIX, il est vraiment intéressant de les mettre en forme pour les partager, et ce pour diverses raisons:

  • Sauvegarder & restaurer sa configuration: lorsqu’on change ou formate sa machine, c’est quand même pratique de ne pas avoir à tout reconfigurer, en particulier tout ces petits réglages qui rendent l’utilisation du terminal efficace
  • Apprendre des autres: en naviguant parmi les nombreuses configurations d’autres power users qui les partagent eux aussi, c’est l’occasion de découvrir de nouveaux outils et de nouvelles pratiques

J’ai donc décider de moi aussi partager mes dotfiles sur GitHub.

L’explication des dotfiles, directement par GitHub: http://dotfiles.github.io/

#pragma mark

Les #pragma sont des directives pré-processeur, qui sont évaluées lors de la compilation du code en Objective-C, et qui contrairement aux directives #ifdef / #endif ne changeront pas le comportement de l’application au runtime.

Les directives #pragma sont simplement évaluées, et donc utilisées, par Xcode. On les utilise pour deux raisons:

  • Organiser le code
  • Rendre les warning silencieux

Organiser le code avec les #pragma mark

Les directives #pragma mark permettent donc d’organiser le code en permettant le regroupement de différentes méthodes par groupe.

Elles sont insérées dans l’implémentation des classes (fichiers .m) entre chaque groupe de méthodes comme suit:

@implementation ListViewController

#pragma mark - Constructor
- (id)init
{
    if (self = [super initWithNibName:@"ContactListViewController" bundle:nil])
    {
        [...]
    }

    return self;
}

#pragma mark - View management
- (void)viewDidLoad
{
    [super viewDidLoad];
    ...
}

#pragma mark - UITableViewDataSource methods
- (NSInteger)tableView:(UITableView *)aTableView numberOfRowsInSection:(NSInteger)section
{
    [...]
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    [...]
}

#pragma mark - UITableViewDelegate methods
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    [...]
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [...]
}

#pragma mark - NSFetchedResultsControllerDelegate methods
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller
{
    [...]
}

#pragma mark - Memory
- (void)dealloc
{
    [...]
}

@end

A noter qu’ajouter un tiret entre les mots clés #pragma mark et le titre du groupe permet d’avoir un séparateur dans l’inspecteur de méthodes:

pragma

Bonne pratique

Une bonne pratique est de mettre en place *sans modération* lors de l’utilisation de protocoles est de commencer le titre du groupe par le nom exact du protocole.

// Mauvaise pratique

#pragma mark - Table view data source methods
- (NSInteger)tableView:(UITableView *)aTableView numberOfRowsInSection:(NSInteger)section { ... }

// Bonne pratique

#pragma mark - UITableViewDataSource methods
- (NSInteger)tableView:(UITableView *)aTableView numberOfRowsInSection:(NSInteger)section { ... }

Cela permet notamment d’accéder rapidement à la déclaration du protocole en appuyant grâce au “cmd + click” sur le titre.

Estimer la durée de validation des applications sur l’App Store

À titre indicatif, nous donnons toujours au client une période pouvant aller de 10 à 15 jours lors de la soumission sur l’App Store pour la validation de leur application par les équipes d’Apple. En réalité, le nombre de jours varie, on voit d’ailleurs certaines applications validées en 4 jours seulement.

Impossible donc de prédire la durée nécessaire, mais il est toutefois possible d’utiliser cet outils:

http://reviewtimes.shinydevelopment.com/

Ce site agrège les données des développeurs qui tweet le nombre de jours qui aura été nécessaire à la validation de leur nouvelle application ou de leur mise à jour accompagné du hashtag #iosreviewtime, et donne ainsi une bonne estimation sur le nombre de jours réellement nécessaires. Une information à prendre avec des pincettes toutefois puisque certains évènements peuvent venir perturber ces chiffres, notamment les sorties de versions majeures d’iOS qui voient un grand nombre de soumission arriver à la case validation en même temps et surcharge l’équipe de validation.