Comment réduire si les déclarations

Le programme ci-dessous les fonctions que nécessaire, mais comment puis-je réduire la quantité de si consolidés. On m'a dit que si votre fonction contient 2 ou plus si les déclarations sont ensuite votre de faire le mal. Toutes les suggestions? J'ai essayé d'utiliser les instructions switch mais cela n'a pas fonctionné parce que le cas ne peut pas être une valeur booléenne.

for(int i = 1; i < 100; i++)
{
if(i % 10 == 3) 
{
System.out.println("Fizz" + "(" + i + ") 3%10");
}
if(i / 10 == 3)
{
System.out.println("Fizz" + "(" + i + ") 3/10");
}
if(i % 10 == 5) 
{
System.out.println("Buzz" + "(" + i + ") 5%10");
}
if(i / 10 == 5)
{
System.out.println("Fizz" + "(" + i + ") 5/10");
}
if(i / 10 == 7)
{
System.out.println("Fizz" + "(" + i + ") 7/10");
}
if(i%10 == 7)
{
System.out.println("Woof" + "(" + i + ") 7%10");
}
if(i % 3 == 0)
{
System.out.println("Fizz" + "(" + i + ") 3%==0");
}
if(i % 5 == 0)
{
System.out.println("Buzz" + "(" + i + ")5%==0");
}
if(i % 7 == 0)
{
System.out.println("Woof" + "(" + i + ")7%==0");    
}
if( (i % 7 !=0 ) && (i % 3 !=0 ) && (i % 5 !=0 )
&& (i % 10 !=3) && (i % 10 !=5 ) && (i%10 !=7 ) )
System.out.println(i);
}
  • Il est tout au sujet de la façon dont vous voulez la conception de votre application.
  • Est-ce un devoir ou à la question du test?
  • Son genre d'une interview question du test.
  • "si votre fonction contient 2 ou plus si les déclarations sont ensuite votre faire de mal", je suis en désaccord. Certains puissants langages comme Perl n'avez pas de switch-comme déclaration. Ne vous inquiétez pas à ce sujet. Nous parlons d'un code clair. Eh bien, à l'aide de l'interrupteur dans ce cas est impossible, parce que vous n'êtes pas en utilisant le même état. (i % nombre) et (i/numéro).
  • Vous ne pouvez pas éviter les tests, mais peut-être refactore pour les appels de fonction pour rendre l'ensemble du bloc de plus léger.
  • Dire à l'interviewer vous préférez simple constructions (si) et d'ingénierie (tous dans l'objet). Peut-être qu'il attendait "qui ne suit le code Java-style conventions".
  • Quel était le problème le cas où vous ont été invités à résoudre?
  • "si votre fonction contient 2 ou plus si les déclarations sont ensuite votre de faire le mal" Nope. Pas vrai. SI-SINON la prolifération est cependant pas la modification de l'environnement, et donc dans le monde réel, où l'extensibilité et la facilité de maintenance sont souvent exigences, n'est pas la meilleure conception.
  • Ça, c'est sur la Revue de Code.
  • liées, mais pas dupe: stackoverflow.com/q/3786358/342852
  • "si votre fonction contient 2 ou plus si les déclarations sont ensuite votre de faire le mal" semble extrême. Selon en.wikipedia.org/wiki/..., il ya de bonnes preuves pour une complexité cyclomatique limite de 10, ce qui représenterait "Si vous avez 4 si les déclarations".
  • devrait probablement être if (Math.floor(i / 10) == 7)
  • Je pense que ce qu'il veut dire est, "Si votre mise en œuvre de cette fonction contient deux ou plus de deux if déclarations, vous le faites mal.
  • oh, ok. Peut-être qu'il fait. Qui me semble bizarre aussi, mais sans plus de contexte, il est difficile à dire.

InformationsquelleAutor Calgar99 | 2013-05-21