7
votes

Qu'est-ce que si (faux) {un code} signifie en Java

code Java xxx

quand est si (faux) {code} exécuté?


1 commentaires

Quelle question ... bien sûr la réponse est la suivante: jamais


13 Réponses :


1
votes

Le code dans si la condition s'exécute lorsque la condition devient vrai em> strong> dans si (faux) code> La condition est toujours FALSE EM> STRUT> SO SO SO CODE IN SI ne sera jamais exécuté.

if(false){

// This code will be dead code and will never execute.

}


0 commentaires

18
votes

Il n'est jamais exécuté. Parfois, les gens le font quand ils ont du code ancien qu'ils veulent se rappeler, ou un nouveau code qui ne devrait pas encore être utilisé. Comme xxx

(en ce qui me concerne, c'est une mauvaise forme et que vous ne devriez pas le faire, mais cela ne signifie pas que cela n'arrive pas;))


3 commentaires

C'est plus que le code ne s'exécute pas. Le code d'octet n'est pas placé dans la classe par le compilateur, de sorte que l'ensemble de l'instruction si est supprimé de sorte qu'il n'y a pas de cycles consacrés à des tests même sur les tests faux .


Si le test a été fait, cela serait encore pire, mais vous utilisez toujours une partie du compilateur pour enregistrer quelque chose qui est fondamentalement un commentaire. Si vous voulez commenter quelque chose, faites-en un commentaire. C'est beaucoup plus lisible.


C'est tellement Sonarqube a quelque chose à faire rapport sur ... ;-)



5
votes

J'utilise xxx

à l'occasion pour éviter l'exécution de dosomething () .

Il peut être meilleur / plus clair pour le faire: xxx

de sorte qu'une seule constante puisse activer / désactiver le comportement de plusieurs blocs d'une mode nommée.


4 commentaires

Pourquoi ne pas simplement le commenter au lieu d'utiliser si (faux)?


@Fortegna Parce que ce modèle peut être utilisé pour activer / désactiver plusieurs blocs de code en modifiant une seule ligne (+1 à la réponse)


C'est plus que le code ne s'exécute pas. Le code d'octet n'est pas placé dans la classe par le compilateur, de sorte que l'ensemble de l'instruction si est supprimé de sorte qu'il n'y a pas de cycles consacrés à des tests même sur les tests faux .


@Kevin: ça aussi. Je suis tellement habitué au comportement de la refonte-Code-Code-Sanemed-Code-Compile-compilé que j'oublie de le mentionner.



1
votes

Le code dans si (faux) {code} sera jamais être exécuté.

Il est un moyen courant de "commenter" le code qui ne doit pas fonctionner (généralement du code de débogage ou du code de test). Ce n'est pas vraiment le meilleur style, à mon avis, mais c'est un idiome assez commun.


0 commentaires

0
votes

code n'est jamais exécuté et sera probablement éliminé du code octet. Cependant l'extrait de syntaxe sera vérifié lors de la construction, il existe donc de bonnes raisons de le faire.


0 commentaires

0
votes

Le code à l'intérieur de l'IF ne sera jamais exécuté, le code pourrait aussi bien être commenté le code sur


2 commentaires

D'accord - Il est extrêmement gênant de devoir creuser à travers des monticules de fonctions de demi-commentée en essayant de déterminer ce que cela fait réellement. Il est malheureux que certaines personnes aiment utiliser des commentaires comme une forme de contrôle de la source.


Je ne disais pas que je commenterais le code, soulignant que si (faux) a essentiellement le même effet que de commenter



0
votes

Ce n'est pas un code normal, je n'ai jamais utilisé constructions l'aimait. Peut-être une façon moelle de commenter un code.


0 commentaires

0
votes

Cela peut être pratique si vous entrez dans le code du débogueur.

Si vous avez un code que vous souhaitez uniquement exécuter alors qu'il est "supervisé", c'est-à-dire que vous utilisez le débogueur et définit activement la prochaine étape exécutable dans le code pour être à l'intérieur du si (faux) bloc. Normalement, lorsque le code est exécuté, il sera ignoré.

Il n'y a pas de vraie raison pour que cela soit dans le code de production cependant.


0 commentaires

2
votes

code comme celui-ci ne sera jamais exécuté. Retirez-le. Ne le commencez pas. C'est juste un fouillis qui confondra quelqu'un qui doit le maintenir plus tard. Si vous avez besoin de le récupérer, accédez à votre système de contrôle de version.


2 commentaires

C'est plus que le code ne s'exécute pas. Le code d'octet n'est pas placé dans la classe par le compilateur, de sorte que l'ensemble de l'instruction si est supprimé de sorte qu'il n'y a pas de cycles consacrés à des tests même sur les tests faux . Donc, il y a une raison supplémentaire à cela lorsque vous utilisez une constante; En particulier pour un code de débogage spécial dans des boucles nécessitant des performances élevées.


Il ajoute toujours CRUFT au code et doit être supprimé. C'est distrayant.



9
votes

Cela pourrait également être un moyen courant d'imiter les directives de préprocesseur macro comme #Ifdefine. Certaines personnes l'utilisent pour activer ou désactiver la journalisation.

Par exemple, par exemple, le code suivant: p> xxx pré>

produit les éléments suivants: p>

public class Sample extends java.lang.Object{
public Sample();
  Code:
   0:   aload_0
   1:   invokespecial   #1; //Method java/lang/Object."<init>":()V
   4:   return

public static void main(java.lang.String[]);
  Code:
   0:   return

}


1 commentaires

+1. Les autres réponses qui ne sont que la déclarant «n'exécuteront jamais» ne sont pas complètement correctes. Le code est physiquement supprimé par le compilateur et fait partie de la spécification de compilateur Java.



0
votes

si (faux) signifie paix du code qui n'est jamais exécuté. Si certains de votre code sont inutilisés, vous devez le supprimer.

La seule raison d'utiliser le code est le but de débogage, mais je pense que ce n'est pas une bonne idée. De nos jours, lorsque l'IDE existe, nous pouvons sélectionner le bloc de code et appuyer sur un raccourci pour faire des commentaires multilignes (pour Eclipse Ctrl + /).

Vous ne devez jamais commettre ce code car peut causer de nombreux problèmes:

  • Il est difficile de noter que cette paix de code ne sera jamais exécutée
  • Nous devons toujours maintenir ce code.
  • Nous ne pouvons pas faire de la couverture de test pour cette

2 commentaires

Alors, comment «faire une couverture de test» pour ce morceau de code?


Vous ne pouvez préparer aucun test pour la paix du code à l'intérieur si. C'est méchant que ce que vous avez à l'intérieur si (faux) n'est jamais testé



0
votes

J'utilise si (faux) lorsque j'utilise goto instruction, pour y aller et exécuter un code non effectué autrement et continuer avec le reste du code.


0 commentaires

0
votes

Emballage d'un code dans si (faux) Block est juste pour la référence de l'auteur.

Bien sûr, le code ne sera jamais exécuté mais il contient des instructions qui pourraient être exécutées autrement. En disant aujourd'hui, j'écris actuellement un code et j'ai une idée de quelque chose d'autre qui pourrait être utile aux jours futurs, mais il faut encore des idées claires sur la manière dont je pourrais traiter. Au lieu de simplement écrire des commentaires ou commencez le code, je l'ai mis dans ce bloc.

Ce n'est pas une bonne pratique cependant. Mais ne nuit pas.


0 commentaires