Lequel est le meilleur style de codage Java?
boolean status = true;
if (!status) {
//do sth
} else {
//do sth
}
ou:
if (status == false) {
//do sth
} else {
//do sth
}
Ancien, bien sûr. Ce dernier est redondant et ne fait que montrer que vous n’avez pas très bien compris le concept de booléens.
Une autre suggestion: Choisissez un nom différent pour votre variable boolean
. Selon ce Java guide de style :
est le préfixe à utiliser pour les variables et méthodes booléennes.
isSet
,isVisible
,isFinished
,isFound
,isOpen
Il s'agit de la convention de dénomination pour les méthodes et variables
boolean
utilisées par Sun pour les packages principaux Java.L'utilisation du préfixe
is
résout un problème courant lié au choix de noms booléens incorrects tels questatus
ouflag
.isStatus
ouisFlag
ne convient tout simplement pas et le programmeur est obligé de choisir des noms plus significatifs.Les méthodes Setter pour les variables
boolean
doivent avoir le préfixe défini comme suit:
void setFound(boolean isFound);
Il existe quelques alternatives au préfixe
is
qui convient mieux dans certaines situations. Ce sonthas
,can
etshould
préfixes:boolean hasLicense(); boolean canEvaluate(); boolean shouldAbort = false;
Je suggérerais que vous fassiez:
if (status) {
//positive work
} else {
// negative work
}
Les tests ==
, bien que manifestement redondants, courent également le risque d’une seule faute =
qui aboutirait à une affectation.
Si vous regardez les alternatives sur cette page, bien sûr, la première option est meilleure et la seconde est plus détaillée. Mais si vous parcourez une classe nombreuse écrite par quelqu'un d'autre, cette verbosité peut faire toute la différence entre réaliser immédiatement ou non le conditionnel.
Une des raisons pour lesquelles je me suis éloigné de Perl est qu’il s’appuie énormément sur la ponctuation, qui est beaucoup plus lente à interpréter lors de la lecture.
Je sais que je suis sur-voté ici, mais je vais presque toujours accepter un code plus explicite afin que d'autres puissent le lire plus précisément. Là encore, je n’utiliserais jamais une variable booléenne appelée "status". Peut-être que isSuccess ou tout simplement le succès, mais "statut" être vrai ou faux ne signifie rien intuitivement au lecteur occasionnel. Comme vous pouvez le constater, la lisibilité du code me tient beaucoup à coeur car je lis beaucoup de code écrit par d’autres.
Le premier, ou if (status) { /*second clause*/ } else { /* first clause */ }
MODIFIER
Si la deuxième forme est vraiment souhaitée, alors if (false == status) <etc>
, bien que plus laid, est probablement plus sûr (typos).
L'ancien. Ce dernier ne fait qu'ajouter de la verbosité.
Cela dépend aussi de la façon dont vous nommez votre variable.
Quand les gens demandent "quelle est la meilleure pratique" - cela implique implicitement que les deux sont corrects, donc c'est simplement une question qui est plus facile à lire et à maintenir.
Si vous nommez votre variable "status" (ce qui est le cas dans votre exemple de code), je préférerais de beaucoup voir
if(status == false) // if status is false
Par ailleurs, si vous avez nommé votre variable isXXX (par exemple, isReadableCode), la première est plus lisible. considérer:
if(!isReadable) { // if not readable
System.out.println("I'm having a headache reading your code");
}
Le premier. Mais juste un autre point, ce qui suit rendrait également votre code plus lisible:
if (!status) {
// do false logic
} else {
// do true logic
}
Notez qu'il existe des espaces supplémentaires entre if
et (
, ainsi qu'avant l'instruction else
.
MODIFIER
Comme l'a noté @Mudassir, s'il existeNOun autre code partagé dans la méthode utilisant la logique, le meilleur style serait alors:
if (!status) {
// do false logic
}
// do true logic
Mon sentiment personnel quand il s'agit de lire
if(!status) : if not status
if(status == false) : if status is false
si vous n’êtes pas habitué à! lire le statut. Je ne vois aucun mal à faire comme la deuxième façon.
si vous utilisez "actif" au lieu du statut I chose si (! actif) est plus lisible
Le premier style est meilleur. Bien que vous deviez utiliser un meilleur nom de variable
C'est plus lisible et une bonne pratique aussi.
if(!status){
//do sth
}else{
//do sth
}