Comment puis-je formater correctement long composé si les déclarations en Coffeescript
Si j'avais un complexe si l'instruction que je ne voulais pas de débordement simplement pour des raisons esthétiques, ce qui serait le plus casher de façon à le briser, depuis coffeescript va interpréter les rendements, comme le corps de l'énoncé dans ce cas?
if (foo is bar.data.stuff and foo isnt bar.data.otherstuff) or (not foo and not bar)
awesome sauce
else lame sauce
- Si
not bar
est une possibilité, dans le premier alinéa de l' (comme le deuxième alinéa indique), alors la référencebar.data
va provoquer une erreur...
Vous devez vous connecter pour publier un commentaire.
CoffeeScript ne va pas interpréter la ligne suivante comme le corps de la déclaration, si la ligne se termine par un opérateur, donc c'est ok:
il compile à
de sorte que votre
if
pourrait être formaté commeou de toute autre ligne de rupture régime, tant que les lignes de fin de
and
ouor
ouis
ou==
ounot
ou un opérateurComme à l'indentation, vous pouvez mettre en retrait de la non-premières lignes de votre
if
tant que le corps est encore plus en retrait:Ce que vous ne pouvez pas faire est ceci:
if
statmenet du corps "encore plus", vous pouvez utiliserthen
, en commençant au même niveau queif
. Il est plus lisible, à mon humble avis.if
. Les seules règles pour la syntaxe correcte sont (autant que je sache): 1) Le corps ne peut pas avoir la même indentation que ce soit la première ou la dernière ligne de laif
et 2) Ni le corps, ni de n'importe quelle ligne de laif
peut avoir moins d'indentation de la première ligne de laif
. Notez également que vous pouvez avoir différentes marques sur différents non-premierif
lignes.if
lignes avec 2 onglets (de manière à les rendre plus visibles qu'ils ne sont ni après ni à l'intérieur de laif
) et le corps avec 1 onglet.Cela change votre code de la signification quelque peu, mais il peut être de quelque utilité:
Note le
is...isnt
de la chaîne, ce qui est légitime, tout commea < b < c
est légitime en CoffeeScript. Bien sûr, la répétition delame sauce
est malheureux, et vous ne voulez pasreturn
tout de suite. Une autre approche serait d'utiliser imbibe d'écrireLa
if foo and
est un peu inélégant; vous pouvez le jeter si il n'y a aucune chance quefoo
estundefined
.Comme toutes les autres langues, en n'ayant pas d'eux en premier lieu. Donner des noms aux différentes pièces de un de les traiter séparément. En déclarant prédicats, ou par la simple création d'un couple de booléen var.
Échapper à la linebreak ressemble le plus lisible pour moi:
Quand un grand nombre de bas-niveau standard se produit, vous devriez niveau d'augmentation de l'abstrait.
Les meilleures solutions sont:
à utiliser bonne nommé les variables et les fonctions
règles logiques dans si/d'autre états
L'une des règles logiques est:
La première manière. Variables:
Le principal inconvénient de cette méthode est sa lenteur. Nous allons obtenir de meilleures performances si nous utilisons
and
etor
opérateurs fonctions et de remplacer les variables par des fonctions:Si
A
est faux opérateurand
wouldnt appelSi
A
est vrai opérateuror
wouldnt appelLa seconde. Fonctions: