Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

Utiliser PathIO sous WinRT

[new:30/09/2013]Une petite astuce rapide sur les fichiers texte qui permet de gagner pas mal de lignes de code (et donc de limiter les bugs !).

Faire simple est parfois compliqué !

Plus une API est riche, moins elle est connue. Plus une API est méconnue plus il y a de chance que les solutions que vous trouviez ne soient pas les plus simples.

C’est un raisonnement qui se vérifie à chaque fois.

WinRT possède une API pléthorique bien plus grosse encore que celle de .NET. A la fois cette taille gigantesque et le succès modéré de WinRT font que lorsqu’on cherche une solution à un problème on ne trouve pas grand chose sur le Web. On se contente donc de ce qu’on trouve, qu’il s’agisse d’extraits de documentations, de fils de forums ou d’articles.

Mais rien ne garantit que la solution proposée soit la plus directe…

Chercher cette simplicité qui a elle seule permet d’assurer 80% de la fiabilité d’un code est une tâche autrement plus difficile sous ce type d’environnement que de se lancer sur son clavier et de coder des pages de C# !

PathIO, une des portes vers la simplicité

Au détour de mes visites sur le Web et par pure sérendipité j’ai trouvé un bout de code qui permet sous WinRT de lire un fichier texte. Le code en question  (extrait d’une librairie Open Source) faisait usage d’une URI pour accéder à un fichier dans le dossier temporaire de l’application.

Cela donnait ça :

image

C’est pas bien compliqué mais pour une tâche aussi simple cela me semblait vraiment trop lourd.

En cherchant un peu, je me suis souvenu de la classe PathIO qui devait contenir des choses intéressantes pour simplifier tout ça. Bingo !

Tout le code ci-dessus peut s’écrire :

string contenu = 
await Windows.Storage.PathIO.ReadTextAsync(“ms-appdata:///temp/game/player.txt”);

c’est tout…

Conclusion

Bien connaître les API est la clé de la simplicité. Il est vrai que lorsqu’elles deviennent gigantesques cela est plus difficile à faire. Pire, comme en ce moment, où le cross-plateforme s’impose, l’obligation de jongler entre les OS et leurs API ne permet plus vraiment d’atteindre le degré d’expertise et de confort suffisant sur une seule plateforme, et encore moins sur toutes à la fois. Il faut donc toujours se poser la question de savoir s’il n’y a pas “plus simple” et ne pas hésiter à se promener sur le Web, à lire quelques articles. Certes c’est une perte de temps. Mais en réalité écrire un bon code est un gain largement supérieur.

Dans l’exemple ci-dessus, même si une heure a été perdue à se balader sur le Web et les documentations, cela vaut le coup. Le code original est une horreur. A écrire. A comprendre. Et pire, à maintenir. Celui qui le remplace est court, évident, sans risque d’erreur ou de bug ou presque.

D’ailleurs puisqu’on parlait d’elle, la classe PathIO possède d’autres méthodes intéressantes comme AppendLinesAsync, AppendTextAsync, ReadLinesAsync, WriteLinesAsync, WriteTextAsync… Je vous les laisse découvrir mais vous comprenez à leurs noms qu’en une instruction elles font la même chose que plein de lignes de codes éventuellement boguées…

Faire simple est compliqué, mais c’est si efficace…

Stay Tuned !

blog comments powered by Disqus