Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Discussions


Index du Forum » Discussions » Coder avec les pieds
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Coder avec les pieds

Posté le 19/12/2014 12:50

Beaucoup savent programmer et écrire des lignes de codes en écrivant parfaitement, je fais ici une liste des choses à faire pour coder aussi dégueulassement que débilement:

1) L'indentation

voici un exemple d'indentation:
void a_function(void)
{
    if (x == y) {
        something1();
        something2();
    } else {
        somethingelse1();
        somethingelse2();
    }
    finalthing();
}


Savez vous ce qui dérange?, c'est ce rangement des instructions, conçu pour rendre plus lisible en code. Pour coder avec les pieds, il faut savoir indenter correctement, par exemple, n'indenter pas ou encore faite une indentation aléatoire.
void a_function(void)
{
if (x == y) {
something1();
something2();
} else {
somethingelse1();
somethingelse2();
}
finalthing();
}


ou encore

void a_function(void)
{
  if (x == y) {
              something1();
    something2();
        } else {
somethingelse1();
                          somethingelse2();
}
           finalthing();
     }


2) Ecrire sur une seule ligne

Mais oui, ça, c'est la bonne idée, certains langages comme le C autorisent l'écriture uni-linéaire .
par exemple, voici un code trop facile
void a_function(void){ if (x == y) { something1();something2(); } else { somethingelse1();somethingelse2(); } finalthing(); }


3) Les commentaires

Mais ça sert à quoi, cette fonctionnalité? Absolument à rien. Le principe du commentaire sert à aider les autres à lire le code. Mais comme on se casse pas les c******* en écrivant un code complexe pour que les autres comprennent facile, mieux vaut oublier de les aider.

Par exemple,
void a_function(void)
{
    if (x == y) {
        something1(); //on fait quelque chose si x=y
        something2();
    } else {
        somethingelse1();//si x=y, on fait autre chose
        somethingelse2();
    }
    finalthing();  // en fin, on fait la dernière chose
}


4) Les noms des variables

Choisissez des noms non évidents pour vos variables et vos fonctions. Je vous conseille de prendre des noms de plus de 20 lettres choisis en hasard(taper sa tête sur le clavier si on ne sait pas choisir au hasard fonctionne aussi).

Préférez nuuFiuopjdOjij677NnlLIUYuyè_nyè9OYNoçypàçU87 à incrementation_de_qqchose

5) Les raccourcis

Ne mettez jamais de raccourcis, cela aide à la compréhension.

Par exemple, voici un code trop compréhensible:
var += 3;
var++;
structure_pointeur->var = 5;


Mettez plûtot
var = var + 3;
var = var + 1;
(*structure_pointeur).var = 5;


Si vous avez d'autres idées, envoyez les moi


Totoyo Hors ligne Membre d'honneur Points: 16102 Défis: 102 Message

Citer : Posté le 19/12/2014 20:47 | #


Drac0300 a écrit :
Btl a écrit :
Je pense que n'utiliser qu' une seule lettre comme nom de variable pour... toutes ses variables est pas mal non plus.

On appelle pas ça du BASIC Casio ?

Oui
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

Citer : Posté le 19/12/2014 23:00 | #


Importer des tonnes de librairies inutiles et noyer celles utiles dedans.
Faire des fonctions qui amènent a des fonctions qui ramènent à une autre fonction... jusqu'à revenir à la fonction mère.
Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



Ninestars Hors ligne Membre Points: 2462 Défis: 24 Message

Citer : Posté le 19/12/2014 23:13 | #


5) Les raccourcis

Ne mettez jamais de raccourcis, cela aide à la compréhension.

Par exemple, voici un code trop compréhensible:
var += 3;
var++;
structure_pointeur→var = 5;


Mettez plûtot
var = var + 3;
var = var + 1;
(*structure_pointeur).var = 5;

Heu ça faut pas abuser non plus
Je te mets au défi d'écrire (*structure_pointeur).var = 5; à chaque fois !
Lephenixnoir En ligne Administrateur Points: 24575 Défis: 170 Message

Citer : Posté le 20/12/2014 10:43 | #


var += 3;
var++;
structure_pointeur→var = 5;

Mettez plutôt
var = var + 3;
var = var + 1;
(*structure_pointeur).var = 5;

Entre parenthèses, c'est tout aussi optimisé dans un cas que dans l'autre.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 20/12/2014 10:46 | #


Lephenixnoir a écrit :

(*structure_pointeur).var = 5;

Entre parenthèses, c'est tout aussi optimisé dans un cas que dans l'autre.


C'est pas au niveau de l'optimisation, c'est au niveau de la lecture que c'est plus difficile
Lephenixnoir En ligne Administrateur Points: 24575 Défis: 170 Message

Citer : Posté le 20/12/2014 11:49 | #


Intelligide a écrit :
Lephenixnoir a écrit :

(*structure_pointeur).var = 5;

Entre parenthèses, c'est tout aussi optimisé dans un cas que dans l'autre.


C'est pas au niveau de l'optimisation, c'est au niveau de la lecture que c'est plus difficile

Yep, c'est pour ça que je l'avais mis entre parenthèses.

Sinon, on peut aussi accumuler les instructions (plus subtil) :
int i = 0;
while(i<10) *(ptr+i++) = 0;

est moins lisible que
int i;
for(i=0;i<10;i++) *(ptr+i) = 0;


Au passage je viens de me rendre compte qu'on peut aussi écrire *(ptr+i) au lieu de ptr (j'utilise le premier quand je fais de l'adressage mémoire et le second quand je manipule vraiment des tableaux).

Sinon on peut aussi s'amuser à mélanger i++ et ++i, inverser le pointer et la variable dans la somme :
int i = 0;
while(i<10) *(i+++ptr) = 0;


Ou alors y'a le fait de ne pas sauvegarder les valeurs utilisées plusieurs fois (ici le nombre d'octets pour stocker x bits) :
int o = ((x-1)>>3)+1;
if(o<4) bmp->width = o;
else bmp->width = o+2;

ou
if(((x-1)>>3)+1<4) bmp->width = ((x-1)>>3)+1;
else bmp->width = ((x-1)>>3)+3;


Toujours dans les expressions condensées (setPixel(x,y,v) à peu de choses près) :
if(v) *(vram+(y<<4)+(x>>3)) |= (128>>(x&7));
else *(vram+(y<<4)+(x>>3)) &= ~(128>>(x&7));

Y'a aussi les optimisations aux opérateurs logiques, le code inline, le code compilé dans les tableaux, le stockage de données brutes, les algorithmes quadratiques et j'en passe...

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 20/12/2014 11:55 | #


On va essayer de se limiter aux bases
Dark storm En ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 20/12/2014 12:15 | #


Et les ternaires imbriquées ?
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 24575 Défis: 170 Message

Citer : Posté le 20/12/2014 15:39 | #


Dark storm a écrit :
Et les ternaires imbriquées ?

Et les ternaires imbriquées !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dj_omnimaga Hors ligne Membre Points: 175 Défis: 0 Message

Citer : Posté le 21/12/2014 10:21 | #


Le hic avec l'indentation c'est que c'est impossible sur certaines calculatrices (par exemple le TI-83 Plus BASIC) et ça rend le code très difficile à lire du à la taille de l'écran. Sur HP Prime, par exemple, quand tu indente trop, tu te retrouves avec du scrolling horizontal qui n'en finit plus.
Drac0300 Hors ligne Membre Points: 839 Défis: 39 Message

Citer : Posté le 21/12/2014 10:28 | #


Dj_omnimaga a écrit :
Le hic avec l'indentation c'est que c'est impossible sur certaines calculatrices (par exemple le TI-83 Plus BASIC) et ça rend le code très difficile à lire du à la taille de l'écran. Sur HP Prime, par exemple, quand tu indente trop, tu te retrouves avec du scrolling horizontal qui n'en finit plus.

Sauf que sur le topic, tout le monde parle de C (effectivement en basic ou le moindre octet compte, on indente pas.. Et puis le basic des casios ne le supporte pas un seul espace dans le code et il renvoie une erreur...)
Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 218 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd