le 02-23-2015 10:13 AM
voici le code d'un sous-VI (code "théorique" minimum juste pour illustrer la question)
Je le présente sous deux formes : Code A et Code B
J'ai toujours codé mes sous-Vis sous la forme A (j'allais presque dire "évidemment")
mais ... je me pose la question suivante :
La forme B est-elle non valide ? et si oui, pourquoi ?
Est-ce juste une question de "bonnes pratiques graphiques" de préférer la forme A ?
Ou existe-t-il des raisons "plus en profondeur" ?
Que dit le compilateur ? Préfère-t-il réellement une forme plutôt que l'autre ?
Pourtant ... les deux formes ne semblent poser aucun soucis à Labview, et les deux codes A et B tournent sans problèmes.
et si la forme B était plus rapide à l'exécution ?
Quels seraient les inconvénients - dangers - soucis - problèmes quelconques ... que pourrait poser la forme B ?
le 02-23-2015 10:36 AM
Salut,
Je fait comme toi, je privilégie le Code A, permet de visualiser tous les commandes du Vi sans aller les chercher dans les diffécrents cas de la structure.
La réponse à ta question m'intéresse aussi.
le 02-24-2015 02:29 AM
Salut Ouadji,
Le code A permet une meilleure lisibilité de ton programme, on connait directement l'ensemble des entrées de ton VI.
Je me permets d'attirer ton attention concernant la place des sorties, indicateurs, qui a une très grande importance lors de la compilation. En effet, un indicateur à l'intérieur d'une structure condition (Conditional indicator) va créer un nouveau Data Buffer. L'explication ici.
Autre point, il faut essayer d'éviter les structures imbriquées qui rendent le code pas lisible. Il faut regarder chaque cas pour déterminer comment sont gérer les données et comment sont obtenus les sorties.
le
02-24-2015
03:38 AM
- dernière modification le
04-27-2025
11:15 PM
par
Content Cleaner
salut à tous, la note d'application donnée par Benjamin est vraiment à connaître pour optimiser la gestion des données sous LV.
une version française...
https://www.ni.com/docs/fr-FR/bundle/labview/page/vi-memory-usage.html
pour info en cherchant sous google avec "lvconcepts LabVIEW" il y a d'autres "lv concepts" à lire
A+
Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion
MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group
le 02-24-2015 03:47 AM
Bonjour Benjamin,
Le code A est plus lisible ... on "voit" facilement toutes les entrées .... ok, 100% d'accord avec toi.
Attention aux sorties .... un nnouveau "data buffer" .... ok. (je vais lire la doc de ton lien)
Je précise (re) que je ne code jamais suivant le code B, la question (débat ouvert) était plutôt d'une dimension prurement théorique.
éviter les structures imbriquées (???)
là .... oui, "on" essaye (bien entendu) .... mais faire du code un rien complexe sans structures imbriquées,
autant chercher à fabriquer une voiture sans devoir plier aucune tôle.
en pièce jointe "unsafe.vi" (c'est un code qui regarde si un Roi sur un échiquier est en prise ou pas)
Dans ce vi, j'ai 6 structures imbriquées.
Je lance le défi à quiconque pourra me réaliser cette fonction, avec un code plus rapide que le mien,et avec moins de 6 imbrications. (attention à la conrainte "plus rapide que" )
et la question : éviter les structures imbriquées ... ok, mais pourquoi ?
PS:
si quelqu"un veut réellement se frotter au défi, je lui donnerai les infos supplémentaires.
le 02-24-2015 03:48 AM
Merci Luc pour la version en français !
le 02-24-2015 04:30 AM
Structures imbriquées :
En soit, avec un bon PC et l'habitude de lire des VIs, les inconvénients d'édition sont balayés. Par contre, dans une approche de performance et de projet (l'évaluation des risques et la validation sont devenues des parties prépondérantes dans le cycle de développement), la deuxième partie est importante.
A+
--Eric
Eric M. - Senior Software Engineer
Certified LabVIEW Architect - Certified LabVIEW Embedded Systems Developer - Certified LabWindows™/CVI Developer
Neosoft Technologies inc.
02-24-2015 05:43 AM - modifié 02-24-2015 05:44 AM
Bonjour Eric,
avis "très pro" (qui a bien évidemment sa place ici ... peut être même "surtout")
lisibilité : nous sommes d'accord, question d'habitude.
plus de mémoire : je suis d'accord ... question de contrainte principale, taille ou vitesse (l'un excluant l'autre dans 99% des cas)
rallonge les tests : suis d'accord ... plus il y a de structures imbriquées, plus l'algorithme globale est complexe.
au risque d'irriter ... question de capacités personnellles.
Ne jamais construire un code qui dépasse votre capacité à le maitriser.
La stabilité ?
c'est une notion (que je comprends parfaitement) mais qui me laisse toujours un peu perplexe.
La notion de stabilité induit obligatoirement que l'on suppose ne pas connaître la totalité du fonctionnement-comportement du code.
On "accepte" qu'il puisse exister des "cas non connus" qui pourraient placer le code dans une position instable, donc non définie. (pour faire court ... un bug)
Pour moi, un code vis à vis duquel au accepte la notion de stabilité est un code qui ne pourra jamais être autre chose qu'une version bêta.
Ceci dit, oui ... plus un code est complexe, plus la possibilité d'avoir un (ou des) bug est élevée.
Cela me laisse une impression curieuse (peut-être bien réelle dans le monde du soft "commercial")
Il y aurait comme un rapport "temps de développement - gain" (je comprends cela)
qui ferait qu'à un certain moment, on "laisse partir" un programme en sachant très bien qu'il est possible qu'un ou plusieurs bugs soient toujours présents.
D'où cette notion de stabilité.
Ceci dit, le sujet est complexe (et quasi philosophique)
Au delà d'une certaine complexité, qui peut affirmer qu'un code ne contient aucun bug ?
Merci pour ton intervention Eric.
Elle ouvre la réflexion. Réfléchir et douter de ses propres certitudes est peut-être le plus important.