<commit_before># README #

#ARCHITECTURE#
- MVC, pour un projet plus conséquent j'aurais utilisé MVVM, un pattern inspiré par le .NET qui permet de séparer les logiques et facilite l'implémentation des test unitaires.

#Tets unitaires#
- Pattern factory pour mocker les objects métiers
- Pour le cas pratique et vu le timing j'ai préféré faire le développement directement puis la test unitaires plus tard. En temps normal j'aurais fais du Test Driven Development, qui reste pour moi la meilleures façon de produire du code scalable et robuste, et de garder une productivité exponentielle durant un projet.

## WebServices ##
- pattern router : Principe -> Avoir une structure qui prend un type d'enum et des paramètre afin de renvoyer une url construire selon la méthode appelée.
- Serialisation: Le but est de créer une extension qui aux requête qui renvoie des objects métiers au lieu d'une réponse json brute.

## Mode offline ##
Implémentation de Nscoding qui va permettre encodé les objects en un format compréhensible par les userDefault. Je n'ai pas eu besoin d'utiliser une base de données car le model relationnel n'est pas nécessaire pour stocker les users. Dans le contraire j'aurais utiliser CoreData ou Realm, en fonction de la complexité du model.

## UI ##
TableViewController avec transition en segue, pas besoin de plusieurs storyboard, nous avons un seul workflow
Je suis parti sur des vues assez basiques, donc pas besoin de créer des sous classes pour les cellules, ou des presentations control pour découper les vues.
En temps normal il est recommandé de créer une extension pour chaque protocol implémenté, par exemple pour un tableviewController X, créer une extension X+datasource et X+delegate pour séparer les logiques et répondre au Single Responsability Principle
j'ai aussi rajouté un pull to refresh pour recharger els données

#Outils#
- gestion des dépendances avec cocoapods
- Git pour la gestion de version


#Frameworks#
Alamofire et swiftyjson: Requêtes webservice et exploitation json
OhHttpStubs: Applications de bouchons réseaux , utiles pour les test unitaires
       

#Difficultés#
Ecrire la classe response serializer

pourcentage : 30%<commit_msg>README.md edited online with Bitbucket<commit_after># README #

#ARCHITECTURE#
- MVC, pour un projet plus conséquent j'aurais utilisé MVVM, un pattern inspiré par le .NET qui permet de séparer les logiques et facilite l'implémentation des test unitaires.

#Tets unitaires#
- Pattern factory pour mocker les objects métiers
- Pour le cas pratique et vu le timing j'ai préféré faire le développement directement puis la test unitaires plus tard. En temps normal j'aurais fais du Test Driven Development, qui reste pour moi la meilleures façon de produire du code scalable et robuste, et de garder une productivité exponentielle durant un projet , et surtout beaucoup plus de test coverage.

## WebServices ##
- pattern router : Principe -> Avoir une structure qui prend un type d'enum et des paramètre afin de renvoyer une url construire selon la méthode appelée.
- Serialisation: Le but est de créer une extension qui aux requête qui renvoie des objects métiers au lieu d'une réponse json brute.

## Mode offline ##
Implémentation de Nscoding qui va permettre encodé les objects en un format compréhensible par les userDefault. Je n'ai pas eu besoin d'utiliser une base de données car le model relationnel n'est pas nécessaire pour stocker les users. Dans le contraire j'aurais utiliser CoreData ou Realm, en fonction de la complexité du model.

## UI ##
TableViewController avec transition en segue, pas besoin de plusieurs storyboard, nous avons un seul workflow
Je suis parti sur des vues assez basiques, donc pas besoin de créer des sous classes pour les cellules, ou des presentations control pour découper les vues.
En temps normal il est recommandé de créer une extension pour chaque protocol implémenté, par exemple pour un tableviewController X, créer une extension X+datasource et X+delegate pour séparer les logiques et répondre au Single Responsability Principle
j'ai aussi rajouté un pull to refresh pour recharger els données

#Outils#
- gestion des dépendances avec cocoapods
- Git pour la gestion de version


#Frameworks#
Alamofire et swiftyjson: Requêtes webservice et exploitation json
OhHttpStubs: Applications de bouchons réseaux , utiles pour les test unitaires
       

#Difficultés#
Ecrire la classe response serializer

pourcentage : 30%
{'fraction_non_alphanumeric': 0.035032562317538735, 'fraction_numerical': 0.0008982708286548395, 'mean_word_length': 4.84514435695538, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1579538', 'n_tokens_mistral': 1249, 'n_tokens_neox': 1269, 'n_words': 652}