JeuWeb - Crée ton jeu par navigateur
[Coding style] Vos solutions pour un code lisible ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Coding style] Vos solutions pour un code lisible ? (/showthread.php?tid=4309)

Pages : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17


RE: [Coding style] Vos solutions pour un code lisible ? - Roworll - 11-01-2011

Je pense que c'est plus une question d'habitude un peu comme les langues étrangères.
Quand on connais le français par exemple, on a plus de facilités pour l'espagnol et l'italien les structures syntaxiques et les règles grammaticales étant très semblables mais on en bave plus sur de l'allemand, du russe ou simplement du latin. Le reste n'est qu'une question de vocabulaire.

A titre d'exemple, LISP a une structure particulière et sans un minimum d'entraînement, ce genre de truc est plutôt opaque
Code :
(defun in (column-name table)
  (let ((test (equality-predicate (find-column column-name (schema table))))
        (values (map 'list #'(lambda (r) (getf r column-name)) (rows table))))
    #'(lambda (row)
        (member (getf row column-name) values :test test))))

A contrario, ce morceau de script Kix semble plus familier
Code :
$Activetask = pipe("XNET LIST MSSQLServer")
FUNCTION pipe($command)
dim $i,$error,$line
dim $array[255]
dim $redim $redim = ubound($array)
dim $tempfile $tempfile = "%temp%\pipe.tmp"
IF exist("$tempfile")
  del("$tempfile")
ENDIF

Revenons-en à Ruby. La syntaxe étant plutôt éloignée de PhP, C/C++, Pascal et consorts, il faut un petit temps d'adaptation pour s'y sentir à l'aise quand on a connu que ça ou presque. Pour certains ça se fera naturellement, pour d'autres plus difficilement. Normal, on a pas tous les même facilités.

Le reste n'est que subjectivité.

J'ai vu en formation pour débutant une personne qui bloquait sur des trucs simples.
a=1 ça allait, b=2 aussi mais a=a+b c'était foutu.
Alors tenter de lui faire comprendre un truc comme name ||= 'Anonyme' ou même $name = empty($name) ? 'Anonyme' : $name;, faut du courage ou une bonne dose d'inconscience.

Au final, on peut se faire à tout langage. On peut le trouver chiant/accessible/pratique/lourd, ça reste tout de même très lié à notre vécu et à nos sensibilités. Ses chances de perdurer quant à lui sont dépendent plus de ses fonctionnalités et à de son utilité/usage réel.


RE: [Coding style] Vos solutions pour un code lisible ? - Holy - 09-02-2011

Tiens, ça fait plusieurs semaines que je cherche des références sans grand succès sur la structuration JS (et en particulier JQuery). Je trouve que c'est assez difficile de structurer son travail efficacement et surtout de le maintenir lisible du fait du grand nombre d'instances et variables qu'on gère parfois (ça a vite tendance à se multiplier avec le dom). Je me demandais si vous auriez des conseils niveau lisibilité ^^


RE: [Coding style] Vos solutions pour un code lisible ? - Sephi-Chan - 09-02-2011

Sur quels plans ? Construction du DOM ? Création de fonctions ? Autre ?

Ça me fait penser à la lisibilité de jQuery Template. J'ai du mal à comprendre ce qui est passé par la tête de John Resig quand il a imaginé cette API : le nommage des fonctions est à vomir.


Sephi-Chan


RE: [Coding style] Vos solutions pour un code lisible ? - Holy - 09-02-2011

(09-02-2011, 05:49 PM)Sephi-Chan a écrit : Sur quels plans ? Construction du DOM ? Création de fonctions ? Autre ?

Ça me fait penser à la lisibilité de jQuery Template. J'ai du mal à comprendre ce qui est passé par la tête de John Resig quand il a imaginé cette API : le nommage des fonctions est à vomir.


Sephi-Chan
Je pense que l'une des particularités de JQuery (ce qui en fait aussi l'une des faiblesses je trouve) c'est qu'il a tendance, par sa facilité d'utilisation, à enfoncer le programmeur dans l'interaction avec le dom en négligeant la réutilisation du code, ce qui fait que le programmeur gère tout dans une seule interface (au sens où il n'y a aucune distinction entre modèle et vue). On en revient un peu à une discussion qu'on avait déjà eu sur le code trop ou pas assez générique. Donc oui, niveau création de fonction, comment gérez-vous ça (Plugins ? Fonctions classiques ?).

Et alors une seconde chose au niveau du code styling à proprement parler :
- Convention de nommage ? (Dom comme Js)
- Indentation & passage à la ligne ? (Exemple classique : si un objet a "x" méthode derrière lui, à partir de quel moment retournez-vous à la ligne ?)
- Déclaration de fonctions ?

Ce que je peux peut-être faire c'est filé un code javascript dégradé puis que vous le rendiez plus clean selon vos conventions, histoire de voir ce que ça donnerait. Je dois avouer que si je me débrouille sans aucun soucis avec JQuery et javascript, j'ai l'impression de l'utiliser de manière un peu batarde, sans réellement comprendre ce qu'il y a derrière.


RE: [Coding style] Vos solutions pour un code lisible ? - Sephi-Chan - 09-02-2011

Pour ce qui est de la définition de variable, fonctions, etc. je trouve que c'est bien de travailler avec des objets : ça permet de créer des namespaces et de voir clairement ce qui se passe. Je préfère ainsi appeler la fonction Chat.append(author, message) que appendToChat(author, message), ça permet de bien ranger les choses.

Vas-y balance du code, on verra bien comment on peut le reformater. C'est vrai que c'est plus simple pour illustrer.


Sephi-Chan


RE: [Coding style] Vos solutions pour un code lisible ? - Sephi-Chan - 10-02-2011

Un autre excellent moyen de nettoyer son code est d'utiliser le script jQuery UJS (pour Unobstrusive Javascript).
Il permet de bien limiter l'écriture de code en utilisant intelligemment les attributs data.

Il permet d'écrire des choses comme (là je combine le tout !) :


<form id="the-form" action="..."
data-remote="true"
data-type="json"
data-confirm="Really?"
data-disable-with="Saving…">
...
</form>

Qui vont générer automatiquement un appel Ajax vers l'URL quand le formulaire sera soumis (après avoir validé le message de confirmation) en demandant du JSON au serveur. Le bouton sera ensuite désactivé pour éviter le double-clic et son contenu sera remplacé par "Saving…".

Si on veut ajouter des callbacks à certaines événements, on peut les intégrer au cycle de vie de la requête en les définissant ainsi :


$("#the-form").live('ajaxConfuseduccess', function(data){
...
});

Les événements disponibles sont ajax:beforeSend, ajaxConfuseduccess, ajax:complete et ajax:error.

Voilà donc un excellent moyen de produire un code de meilleur qualité tout en réduisant beaucoup la quantité de code à saisir.

N'hésitez pas à lire le code source de jQuery UJS, c'est très simple et il y a beaucoup à apprendre !

Encore une perle issue de la communauté Ruby on Rails ! Smile


Sephi-Chan