Page 1 sur 1

POO - Conseil pour les procédures

Publié : ven. 07/oct./2005 22:20
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.