gambaslinux

Aides aux utilisateurs de gambas linux

Retournez à Accueil /

IDE vs CODE

1

La grande difficulté quand on utilise l'IDE, c'est le fait que pour faciliter la vie de l'utilisateur que nous sommes, celui-ci masque un tas de choses qu'il réalise pour nous sans nous le dire.
Si on n'en est pas averti, cela peut entraîner des erreurs de raisonnement.
Il est simple de s'en convaincre en regardant les fichiers générés par l'IDE et en les comparant avec le code que nous aurions dû écrire pour obtenir la même chose.

La simple position d'un bouton devient plus difficile sans l'IDE quand on a pris un peu trop goût à la chose.

Comparaison à faire entre l'IDE et le code direct :



Le Code à écrire  que nous ne voyons jamais si on laisse l'IDE faire :


   Dim Frame1 As Frame
   Dim btn9 As Button
   Dim btn8 As Button
   Dim btn7 As Button
   Dim btn6 As Button
   Dim btn5 As Button
   Dim btn4 As Button
   Dim btn3 As Button
   Dim btn2 As Button
   Dim btn1 As Button
   Dim btn0 As Button
   Dim btnVirgule As Button
   Dim btnAddition As Button
   Dim btnSoustraction As Button
   Dim btnMultiplication As Button
   Dim btnDivision As Button
   Dim btnCancel As Button
   Dim btnEgal As Button
   Dim btnEffacer As Button

   Me.Icon = Picture["chukablue2.png"]  '<---------------| Me est l'objet qui contient les autres
   Me.Padding = 5
   Me.Arrangement = Arrange.Vertical
   Me.Text = "Calculatrice +++"

   If IsNull(Me.Parent) Then
      Me.h = Desktop.H / 4
      Me.w = Desktop.W / 4
   Endif

   Frame1 = New Frame(Me)
   Frame1.Arrangement = Arrange.none
   Frame1.Padding = 5
   Frame1.Expand = True
   Frame1.MoveScaled(1, 1, 48, 48)
   Frame1.Font = Font["Bold,11"]
   Frame1.Text = ("Calculatrice")
   Frame1.Alignment = Align.Left

   $tbAffichage = New TextBox(Frame1)
   $tbAffichage.MoveScaled(2, 5, 44, 5)
   $tbAffichage.Font = Font["Bold,12"]
   $tbAffichage.Foreground = Color.Black
   $tbAffichage.Alignment = Align.Right

   btn7 = New Button(Frame1) As "Chiffres"
   btn7.Name = "btn7"
   btn7.MoveScaled(2, 12, 10, 6)
   btn7.Font = Font["Bold,14"]
   btn7.Foreground = Color.Black
   btn7.Text = ("7")
   btn7.Expand = True

   btn0 = New Button(Frame1) As "Chiffres"
   btn0.Name = "btn0"
   btn0.MoveScaled(2, 33, 21, 6)
   btn0.Font = Font["Bold,14"]
   btn0.Foreground = Color.Black
   btn0.Text = ("0")
   btn0.Expand = True

   btn4 = New Button(Frame1) As "Chiffres"
   btn4.Name = "btn4"
   btn4.MoveScaled(2, 19, 10, 6)
   btn4.Font = Font["Bold,14"]
   btn4.Foreground = Color.Black
   btn4.Text = ("4")
   btn4.Expand = True

   btn1 = New Button(Frame1) As "Chiffres"
   btn1.Name = "btn1"
   btn1.MoveScaled(2, 26, 10, 6)
   btn1.Font = Font["Bold,14"]
   btn1.Foreground = Color.Black
   btn1.Text = ("1")
   btn1.Expand = True

   btnVirgule = New Button(Frame1) As "Chiffres"
   btnVirgule.Name = "btnVirgule"
   btnVirgule.MoveScaled(24, 33, 10, 6)
   btnVirgule.Font = Font["Bold,14"]
   btnVirgule.Foreground = Color.Black
   btnVirgule.Text = (",")
   btnVirgule.Expand = True

   btn8 = New Button(Frame1) As "Chiffres"
   btn8.Name = "btn8"
   btn8.MoveScaled(13, 12, 10, 6)
   btn8.Font = Font["Bold,14"]
   btn8.Foreground = Color.Black
   btn8.Text = ("8")
   btn8.Expand = True

   btn5 = New Button(Frame1) As "Chiffres"
   btn5.Name = "btn5"
   btn5.MoveScaled(13, 19, 10, 6)
   btn5.Font = Font["Bold,14"]
   btn5.Foreground = Color.Black
   btn5.Text = ("5")
   btn5.Expand = True

   btn2 = New Button(Frame1) As "Chiffres"
   btn2.Name = "btn2"
   btn2.MoveScaled(13, 26, 10, 6)
   btn2.Font = Font["Bold,14"]
   btn2.Foreground = Color.Black
   btn2.Text = ("2")
   btn2.Expand = True

   btn9 = New Button(Frame1) As "Chiffres"
   btn9.Name = "btn9"
   btn9.MoveScaled(24, 12, 10, 6)
   btn9.Font = Font["Bold,14"]
   btn9.Foreground = Color.Black
   btn9.Text = ("9")
   btn9.Expand = True

   btn6 = New Button(Frame1) As "Chiffres"
   btn6.Name = "btn6"
   btn6.MoveScaled(24, 19, 10, 6)
   btn6.Font = Font["Bold,14"]
   btn6.Foreground = Color.Black
   btn6.Text = ("6")
   btn6.Expand = True

   btn3 = New Button(Frame1) As "Chiffres"  '<----------- | l'objet entre () est celui où se situe le nouvel objet
   btn3.Name = "btn3"
   btn3.MoveScaled(24, 26, 10, 6)
   btn3.Font = Font["Bold,14"]
   btn3.Foreground = Color.Black
   btn3.Text = ("3")
   btn3.Expand = True

   btnAddition = New Button(Frame1) As "Signes"
   btnAddition.Name = "btnAddition"
   btnAddition.MoveScaled(36, 12, 10, 6)
   btnAddition.Font = Font["Bold,14"]
   btnAddition.Foreground = Color.Black
   btnAddition.Text = ("+")
   btnAddition.Expand = True

   btnSoustraction = New Button(Frame1) As "Signes"
   btnSoustraction.Name = "btnSoustraction"
   btnSoustraction.MoveScaled(36, 19, 10, 6)
   btnSoustraction.Font = Font["Bold,14"]
   btnSoustraction.Foreground = Color.Black
   btnSoustraction.Text = ("-")
   btnSoustraction.Expand = True

   btnMultiplication = New Button(Frame1) As "Signes"
   btnMultiplication.Name = "btnMultiplication"
   btnMultiplication.MoveScaled(36, 26, 10, 6)
   btnMultiplication.Font = Font["Bold,14"]
   btnMultiplication.Foreground = Color.Black
   btnMultiplication.Text = ("*")
   btnMultiplication.Expand = True

   btnDivision = New Button(Frame1) As "Signes" '<---------- |quand un "Nom" se répète cela constitue 
   btnDivision.Name = "btnDivision"                          | un Group à suivre pour le gestionnaire d'évènement
   btnDivision.MoveScaled(36, 33, 10, 6)
   btnDivision.Font = Font["Bold,14"]
   btnDivision.Foreground = Color.Black
   btnDivision.Text = ("/")
   btnDivision.Expand = True

   btnCancel = New Button(Frame1) As "btnCancel"  '<-------- | la déclaration d'un "Nom" sert au gestionnaire d'évènement à suivre
   btnCancel.MoveScaled(24, 41, 10, 6)                       | les évènements intervenant sur ce "Nom"
   btnCancel.Font = Font["Bold,14"]
   btnCancel.Foreground = Color.Black
   btnCancel.Text = ("C")
   btnCancel.Expand = True

   btnEgal = New Button(Frame1) As "btnEgal"
   btnEgal.MoveScaled(36, 41, 10, 6)
   btnEgal.Font = Font["Bold,14"]
   btnEgal.Foreground = Color.Black
   btnEgal.Text = ("=")
   btnEgal.Expand = True

   btnEffacer = New Button(Frame1) As "btnEffacer"
   btnEffacer.MoveScaled(13, 41, 10, 6)
   btnEffacer.Font = Font["Bold,11"]
   btnEffacer.Foreground = Color.Black
   btnEffacer.Picture = Picture["icon:/22/clear"]
   btnEffacer.Expand = True

End

La même chose générée par l'IDE :


# Gambas Form File 3.0

  { Frame1 Frame
    MoveScaled(1,1,48,48)
    Font = Font["Bold,11"]
    Text = ("Calculatrice")
    Alignment = Align.Left
    { tbAffichage TextBox
      MoveScaled(2,5,44,5)
      Font = Font["Bold,12"]
      Foreground = Color.Black
      Alignment = Align.Right
    }
    { btn7 Button Chiffres
      Name = "btn7"
      MoveScaled(2,12,10,6)
      Font = Font["Bold,14"]
      Foreground = Color.Black
      Text = ("7")
    }
    { btn0 Button Chiffres
      Name = "btn0"
      MoveScaled(2,33,21,6)
      Font = Font["Bold,14"]
      Foreground = Color.Black
      Text = ("0")
    }
    { btn4 Button Chiffres
      Name = "btn4"
      MoveScaled(2,19,10,6)
      Font = Font["Bold,14"]
      Foreground = Color.Black
      Text = ("4")
    }
    { btn1 Button Chiffres
      Name = "btn1"
      MoveScaled(2,26,10,6)
      Font = Font["Bold,14"]
      Foreground = Color.Black
      Text = ("1")
    }
    { btnVirgule Button Chiffres
      Name = "btnVirgule"
      MoveScaled(24,33,10,6)
      Font = Font["Bold,14"]
      Foreground = Color.Black
      Text = (",")
    }
    { btn8 Button Chiffres
      Name = "btn8"
      MoveScaled(13,12,10,6)
      Font = Font["Bold,14"]
      Foreground = Color.Black
      Text = ("8")
    }
    { btn5 Button Chiffres
      Name = "btn5"
      MoveScaled(13,19,10,6)
      Font = Font["Bold,14"]
      Foreground = Color.Black
      Text = ("5")
    }
    { btn2 Button Chiffres
      Name = "btn2"
      MoveScaled(13,26,10,6)
      Font = Font["Bold,14"]
      Foreground = Color.Black
      Text = ("2")
    }
    { btn9 Button Chiffres
      Name = "btn9"
      MoveScaled(24,12,10,6)
      Font = Font["Bold,14"]
      Foreground = Color.Black
      Text = ("9")
    }
    { btn6 Button Chiffres
      Name = "btn6"
      MoveScaled(24,19,10,6)
      Font = Font["Bold,14"]
      Foreground = Color.Black
      Text = ("6")
    }
    { btn3 Button Chiffres
      Name = "btn3"
      MoveScaled(24,26,10,6)
      Font = Font["Bold,14"]
      Foreground = Color.Black
      Text = ("3")
    }
    { btnAddition Button Signes
      Name = "btnAddition"
      MoveScaled(36,12,10,6)
      Font = Font["Bold,14"]
      Foreground = Color.Black
      Text = ("+")
    }
    { btnSoustraction Button Signes
      Name = "btnSoustraction"
      MoveScaled(36,19,10,6)
      Font = Font["Bold,14"]
      Foreground = Color.Black
      Text = ("-")
    }
    { btnMultiplication Button Signes
      Name = "btnMultiplication"
      MoveScaled(36,26,10,6)
      Font = Font["Bold,14"]
      Foreground = Color.Black
      Text = ("*")
    }
    { btnDivision Button Signes
      Name = "btnDivision"
      MoveScaled(36,33,10,6)
      Font = Font["Bold,14"]
      Foreground = Color.Black
      Text = ("/")
    }
    { btnCancel Button
      MoveScaled(24,41,10,6)
      Font = Font["Bold,14"]
      Foreground = Color.Black
      ToolTip = ("Effacement de la mémoire")
      Text = ("C")
    }
    { btnEgal Button
      MoveScaled(36,41,10,6)
      Font = Font["Bold,14"]
      Foreground = Color.Black
      Text = ("=")
    }
    { btnEffacer Button
      MoveScaled(13,41,10,6)
      Font = Font["Bold,11"]
      Foreground = Color.Black
      ToolTip = ("Effacement un chiffre")
      Picture = Picture["icon:/22/clear"]
    }
  }

Le nombre de lignes de code que l'IDE nous évite d'écrire peut être très vite considérable et peut être considéré comme un piège pour les novices.



Qu'apprend on à comparer les deux choses, juste que l'IDE facilite vraiment la vie de ceux qui savent ; ce que celui-ci fait de positif pour eux, pour les autres c'est une perte d'un tas d'informations qui ne leur rend pas aisé, l'apprentissage du langage Gambas, surtout si on considère l'aspect POO de Gambas qui demande une vision élargie de ce qui se passe.

Je vous invite donc vivement à regarder, de près, dans le répertoire de votre projet, dans le classeur caché, nommé ".src", le ou les fichiers de vos classes (le fichier texte pas le fichier .class), à les ouvrir et lire ce que l'IDE a fait pour vous alors que vous n'avez que coché des cases ou validé certaines propriétés.


Rédigé par valaquarus
Unus Ex Altera

1 commentaire

#1  - Spheris a dit :

En effet, dans cet exemple précis, nous voyons bien le problème.
Dans le deuxième fichier, la ligne movescaled apparait à plusieurs reprise, ce qui signifie une interface proportionnelle à la dimension de l'écran, ce qui va poser un gros problème de widgets décalés suivant la plateforme utilisée.
Je vous renvoi à cet article pour plus d'explications:

http://gambaslinux.fr/v2/index.php?article2253/probleme-interface-decalee

Merci philippe pour ce tuto très intéressant.

Répondre

Fil RSS des commentaires de cet article

Écrire un commentaire

Quelle est le dernier caractère du mot 4lg8r2z3 ?