POO - Conseil pour les procédures

Partagez votre expérience de PureBasic avec les autres utilisateurs.
LeCyb
Messages : 273
Inscription : dim. 26/déc./2004 20:49

POO - Conseil pour les procédures

Message par LeCyb »

Pour éviter de mettre le foutoir dans PB en déclarant des procédures trop génériques comme "Free" ou autre "SetX" voici une astuce.

Le principe est que les procédures liées à votre objet soient accessibles uniquement via l'objet (MonObjet\Free() par exemple) et non directement (Free() tout court) tout en gardant le nom générique.

Un petit code vaut mieux qu'un long discour:

Code : Tout sélectionner

; ici on ne touche à rien
Interface Pouet_Object
  SetX(x)
  Free()
EndInterface

; ici non plus
Structure Pouet_Functions
  SetX.l
  Free.l
EndStructure

; ici non plus
Structure Pouet_Structure
  *Functions.Pouet_Functions
  x.l
EndStructure

; ici on change en mettant un nom qui n'est pas générique
Procedure Pouet_SetX(*this.Pouet_Structure, x)
  *this\x = x
EndProcedure

; chaque procédure (même interne) on ne fais pas générique
Procedure Pouet_Free(*this.Pouet_Structure)
  FreeMemory(*this)
EndProcedure

; et ici on change le nom de la procédure en fonction
Global Pouet_Global_Functions.Pouet_Functions
Pouet_Global_Functions\SetX = @Pouet_SetX()
Pouet_Global_Functions\Free = @Pouet_Free()
Après on utilisera MonObjet\Free() mais Free() ne sera pas accessible.
Par contre on pourra toujours atteindre Pouet_Free() d'où l'intérêt de choisir le nom de la lib ou quelque chose de pas générique.
Vive le thread-safe !