mobile-best-practice/README.md

85 lines
5.5 KiB
Markdown
Raw Normal View History

2024-02-02 15:13:15 +00:00
# Bonne pratiques d'écoconception appliqué au mobile
## Contexte
L'objectif de ce document est de fournir un référentiel d'écoconception adapté au mobile. L'application des bonnes pratiques ci-dessous ont toutes un but commun : prolonger la durée de vie des terminaux des utilisateurs et utilisatrices.
## Les besoins
Étant donné les évolutions continues du mobile, ce référentiel a besoin de régulièrement être mis à jour.
Toute proposition ou idée d'amélioration, de modification ou de suppression est bienvenue.
## Comment contribuer ?
N'hésitez pas à lire [le guide des contributeurs](CONTRIBUTING.md).
## La liste des Bonnes Pratiques
* [Éliminer les fonctionnalités non essentielles](chapters/MBP_001_fr.md)
* [Quantifier précisément le besoin](chapters/MBP_002_fr.md)
* [Optimiser le parcours utilisateur](chapters/MBP_003_fr.md)
* [Préférer la saisie assistée à l'autocomplétion](chapters/MBP_004_fr.md)
* [Favoriser un design simple, épuré, adapté au mobile](/chapters/MBP_005_fr.md)
* [Optimiser la récupération en fonction du cycle de vie de l'application](chapters/MBP_006_fr.md)
2024-02-07 15:07:29 +00:00
* [Libérer la mémoire des traitements consommateurs en fonction de l'état de l'application](chapters/MBP_007_fr.md)
2024-02-05 15:08:18 +00:00
* [Déployer un Android App Bundle (AAB) plutôt qu'un APK](chapters/MBP_008_fr.md) // TODO a reformuler
2024-02-02 15:13:15 +00:00
* [Supprimer les ressources non utilisées](chapters/MBP_009_fr.md)
2024-02-05 15:08:18 +00:00
* [Minifier le code](chapters/MBP_010_fr.md)
* [Ne pas redimensionner les images coté application](chapters/MBP_011_fr.md)
* [Éviter d'utiliser des images matricielles](chapters/MBP_012_fr.md)
* [Utiliser le chargement paresseux](chapters/MBP_013_fr.md)
* [Ne pas recharger inutilement l'ensemble du contenu d'une liste si seulement une partie a changé](chapters/MBP_014_fr.md)
* [Optimiser le chargement paresseux d'un écran complexe comportant des listes imbriquées](chapters/MBP_015_fr.md)
* [Éviter les animations](chapters/MBP_016_fr.md)
2024-02-07 15:07:29 +00:00
* [Utiliser une bibliothèque que si celle-ci est réellement indispensable](chapters/MBP_017_fr.md)
* [Supprimer les bibliothèques non utilisées](chapters/MBP_018_fr.md)
* [Jetpack Compose : Améliorer la "skipabilité" d'une fonction pour réduire le nombre de Recomposition inutile](chapters/MBP_019_fr.md)
* [Réduire l'overdraw](chapters/MBP_020_fr.md)
* [Mettre en cache des données qui coutent cher à instancier ou qui sont fréquemment consultées](chapters/MBP_021_fr.md)
* [Economiser la bande passante en sauvegardant en base de données locale les données fournies par le serveur](chapters/MBP_022_fr.md)
* [Réduire le volume de données stockées au strict nécessaire](chapters/MBP_023_fr.md)
* [Concevoir et manipuler la base de données SQLite de manière optimale](chapters/MBP_024_fr.md)
* [Mettre en cache les images fournies par le serveur](chapters/MBP_025_fr.md)
* [Assurer la compatibilité avec les plus anciens appareils du parc](chapters/MBP_026_fr.md)
* [Éviter les traitements trop complexes sur des données provenant d'un serveur](chapters/MBP_027_fr.md)
* [Valider le code avec un Linter](chapters/MBP_028_fr.md)
* [Supprimer les traductions non utilisées au sein des bibliothèques tierces (seulement pour les APK)](chapters/MBP_029_fr.md)
* [avoriser les polices standards ou utiliser les "Downloadable font"](chapters/MBP_030_fr.md)
* [Éliminer les fonctionnalités non utilisées](chapters/MBP_031_fr.md)
* [Limiter les outils d'analytics et les données collectées](/chapters/MBP_032_fr.md)
2024-02-09 09:24:42 +00:00
* [Utiliser la version la plus récente du langage (Kotlin/Java) et du SDK Android](chapters/MBP_033_fr.md)
2024-02-07 15:07:29 +00:00
* [Entretenir son application régulièrement](chapters/MBP_034_fr.md)
* [Fournir une alternative textuelle aux contenus multimédias](chapters/MBP_035_fr.md)
* [Éviter la lecture et le chargement automatique des vidéos et des sons](chapters/MBP_035_fr.md)
* // TODO : à écrire
2024-02-09 09:24:42 +00:00
2024-02-05 15:08:18 +00:00
// MAIN/IO thread ?
2024-02-09 09:24:42 +00:00
2024-02-05 15:08:18 +00:00
// Notifications
2024-02-09 09:24:42 +00:00
2024-02-05 15:08:18 +00:00
// ABI ??
2024-02-09 09:24:42 +00:00
2024-02-05 15:08:18 +00:00
// Feature play store
2024-02-09 09:24:42 +00:00
2024-02-07 15:07:29 +00:00
// Utiliser correctement implementation testImplementation debugImplementation pour ne pas packager des librairies utilisées uniquement pour les tests ou le debug
2024-02-09 09:24:42 +00:00
// Reduce cost of inflation (ex ConstraintLayout instead of nested LinearLayout) https://developer.android.com/topic/performance/vitals/render#recyclerview_too_much_inflation_or_create_is_taking_too_long If your view types look good, look at reducing the cost of your inflation. Reducing unnecessary container and structural views can help. Consider building itemViews with ConstraintLayout, which can help reduce structural views.
2024-02-02 15:13:15 +00:00
2024-02-07 15:07:29 +00:00
// TODO pas encore fait mais applicable au mobile
2024-02-09 09:24:42 +00:00
* Monitorer la taille de l'application dans le temps (ex d'outil : https://github.com/JakeWharton/diffuse + le playstore)
2024-02-02 15:13:15 +00:00
* [Utiliser la délégation d'évènements](/chapters/BP_044_fr.md)
2024-02-07 15:07:29 +00:00
* [Optimiser les PDF](/chapters/BP_108_fr.md) // proposer le téléchargement de PDF plutôt que d'inclure un viewer de PDF (=> lib en moins, visibilité de toute façon inadaptée au mobile, peu accessible, personnes ont déjà une app permettant de lire les PDF)
* [Adapter les sons/vidéo aux contextes d'écoute](/chapters/BP_112_fr.md) // et 114
2024-02-02 15:13:15 +00:00
* [Mettre en place une politique d'expiration et suppression des données](/chapters/BP_4012_fr.md)
* [Limiter le recours aux canvas](/chapters/BP_4013_fr.md)
2024-02-07 15:07:29 +00:00
* [Coroutines / Scope / Lifecycle / annulation de traitement](/chapters/BP_4032_fr.md) // https://developer.android.com/topic/libraries/architecture/coroutines
2024-02-02 15:13:15 +00:00
* [Préférer la pagination au défilement infini](/chapters/BP_4035_fr.md)
2024-02-07 15:07:29 +00:00
2024-02-02 15:13:15 +00:00
## Licence
Les sources et contenus de ce projet sont [protégés](LICENCE.md)