Contenu | Rechercher | Menus

Annonce

T-shirt Seiche Cosmic, Série limitée

L'équipe des administrateurs et modérateurs du forum vous invite à prendre connaissance des nouvelles règles.
En cas de besoin, vous pouvez intervenir dans cette discussion.

Ubuntu 18.10
T-shirt Ubuntu-FR « Seiche Cosmique » en série limitée ! Prix spécial pré-vente (15€) jusqu'au 4 novembre 2018.

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

Heure d'hiver: N'oubliez pas de décochez l'heure d'été dans votre profil.

#1 Le 12/08/2018, à 11:02

toitoinebzh

[Stud Manager] Structuration projet

Bonjour à tous,

Ce post fait suite à ma présentation d'un logiciel que je développe en ce moment et qui vise à aider à la gestion des élevage équin.

Vous trouverez une présentation détaillée du logiciel ici.

Ici, je souhaite faire un feedback des actions que j'ai menées pour structurer le projet. Ce travail est toujours en cours mais j'ai bien avancé.
Voilà un résumé des actions, vos commentaires sont les bienvenus.

Note sur méthodologie adoptée pour construire l'architecture du logiciel

Voilà un retour concernant les différentes actions mises en oeuvre pour ordonner les sources du logiciel.

Sources d'inspiration

Sam et Max (1)

Sam et Max (2)

Actions

  • Création d'un dossier avec à la racine

    • un fichier LICENSE qui contient la licence du logiciel

    • Un fichier README.md qui présente le logiciel, comment l'installer,...

    • un fichier setup.py et MANIFEST.in utiles pour pouvoir distribuer le logiciel (non complétés actuellement)

    • un dossier AUTHORS pour faire un suivi des différents contributeurs

    • un dossier studmanager qui contient toutes les sources du logiciel, il y a plusieurs dossiers et sous-dossiers rangés dans une logique cohérente à l'interface graphique

    • dans le dossier studmanager, j'ai stocké

      • des données utilisées par le logiciel dans un dossier data

      • les icones dans icons

      • un dossier sample qui contient un fichier demo du logiciel

      • un dossier StudManagerLib utilisé comme package du logiciel

      • un fichier main.py qui permet de lancer le logiciel

  • Création du package  studmanagerlib

    • création d'un fichier "__init__.py" dans chaque dossier et sous dossier pour que python sache que c'est un package

    • dans chaque "__init__.py"

      • import des dossiers contenant des fonctions en ajoutant une ligne au fichier du type "from . import dossier"

      • import des fonctions des fichiers .py du dossier "from .monfichier import mafonction"

    • dans chaque fichier .py, ajoute d'une instruction du type  "__all__=["fonction1","fonction2"]"pour spécifier les fonctions que l'on souhaite accéder via le module

    • on a alors accès à la fonction dans main.py à via une commande du type "studmanagerlib.dossier.mafonction" on peut également envisager une commande du type "from studmanagerlib.dossier import mafonction"

  • modification de l'ensemble des fichiers pour prendre en compte la modification de l'architecture (import des fonctions, chemin des icones)

Aperçu de l'architecture finale

studmanager/
├── AUTHORS.md
├── LICENSE.txt
├── MANIFEST.in
├── README.md
├── setup.py
└── studmanager
    ├── data
    │   ├── BreedList.txt
    │   ├── ColorList.txt
    │   └── SexList.txt
    ├── icons
    ├── __init__.py
    ├── main.py
    ├── sample
    │   └── demo.sqlite
    └── studmanagerlib
        ├── database
        │   ├── contactdb.py
        │   ├── horsedb.py
        │   ├── __init__.py
        │   ├── reminderdb.py
        │   └── studdb.py
        ├── functions
        │   ├── __init__.py
        │   └── myfcts.py
        ├── gui
        │   ├── functionsui
        │   │   ├── __init__.py
        │   │   └── studerrormessage.py
        │   ├── __init__.py
        │   ├── maintabsui
        │   │   ├── contactsui.py
        │   │   ├── dashboardui.py
        │   │   ├── __init__.py
        │   │   ├── myhorsesui.py
        │   │   ├── myhorsetab
        │   │   │   ├── descriptionhorseui.py
        │   │   │   ├── farrierrecordsui.py
        │   │   │   ├── healthrecordsui.py
        │   │   │   ├── __init__.py
        │   │   │   ├── movementrecordsui.py
        │   │   └── remindersui.py
        │   └── mainwindowui.py
        └── __init__.py

Nettoyage/Corrections du code

  • Utilisation de autopep8 pour corriger automatiquement une partie du code

    autopep8 --in-place --aggressive --aggressive monscript.py
  • Utilisation de la fonction d'analyse de code statique de Spyder (pylint) pour mettre en évidence les erreurs de convention. Corrections réalisées en partie.

  • Suppression des imports de modules inutiles.

  • Création d'un script utilisant "pyclean3" pour nettoyer les "__pycache__" et .pyc

  • Changement de nom de fonctions, modules, class pour respecter pep8

    • variable > "nom_de_variable"

    • fonction > "ma_fonction"

    • module/package > "monmodule"

    • class > "MaClass"

    • constante > "MA_CONSTANTE"

    • fichier > "monfichier.py"

Hors ligne