2015-06-26 5 views
6

mi hanno scritto:Analizzatore Java SonarQube, regola S2183, perché dovrei rimuovere questo spostamento inutile?

public static final int MY_GREAT_COLOR = (91 << 16) + (155 << 8) + 213 + (255 << 32); 

e Sonar dice:

Nuovo: Calamaro: S2183 Gravità: Critica, Messaggio: Rimuovere questo spostamento inutile

Qualcuno potrebbe dirmi perché? È solo il fatto che non dovrebbero esserci calcoli sui letterali, anche se si aggiunge alla leggibilità?

+1

Può essere collegato con '(255 << 32)', non ha senso farlo, perché sarà sempre zero. Prova a rimuoverlo e vedi se ottieni lo stesso errore. –

+6

sono l'unico, che ha letto l'ultima parola di una domanda sbagliata? – AdamSkywalker

+0

@AdamSkywalker: No.: D – Bhoot

risposta

2

Immagino che 255 sia il tuo canale alfa, in tal caso suppongo che tu voglia 255 << 24.

SonarQube non conosce le tue intenzioni, ma ha un punto valido, come dichiarato da Toby.

Per quanto riguarda la leggibilità, è anche possibile provare il codice hexa (ad esempio 0xFF5B9BD5), molti sviluppatori sono già abituati. Naturalmente, un numero decimale sarebbe totalmente illeggibile e brutto.

2

255 << 32 overflow Java (32 bit) int, che diventa zero.

Vuoi un long e 255L << 32?

Problemi correlati