Newsgroup: it.comp.java
Titolo: Domanduccia

Ecco la mia solita domanda, così per tener aperto il traffico sul
newsgroup.
La mia domanda è più un inchiesta sugli stili che voi utilizzate. Per
esempio, quando avete un if con una sola istruzione da eseguire , preferite
mettere od omettere le parentesi graffe?
E in un caso del simile al seguente (non badate direttamente alla logica,
ma alla sintassi):
boolean variabile = false;
if(variabile) {
             //non esegue alcunché
}
else variabile = true;     
preferite questa sintassi o:
if(variabile);
else variabile = true;
Personalmente penso che sia sempre buona norma aprire la coppia di
parentesi per questioni di leggibilità.
Cmq , ecco la vera domanda per chi conosce Java e C++: perché è ancora
possibile mettere il ; dopo la graffa? Ad esempio:
if(true) {
           };
oppure 
class Myclass {}; 
oppure
void metodo() {};
in C++, a parte per le classi che è assolutamente necessario, il ; è
ridondante, sconsigliato e scorretto a norma di standard. Ma allora per
quale motivo Java ha ripreso questa tecnica deprecata dal suo stesso
predecessore?
Grazie e saluti.

Ho appena avuto occasione di leggerne una parte, ottimo direi.
Vorrei ancora chiedervi una cosa:
voi tutti sapete che la semantica di Java impone che ogni istruzione
termini con il ;.
In un caso, come quello dell'if, abbiamo quindi due istruzioni che
dovrebbero(in teoria) terminare con la virgola. es.
if(true); i++;
in questo codice però la seconda istruzione non viene legata al ramo if,
quindi ecco il perché dell'uso delle graffe:
if(true) {
      i++;
}
Ma comunque in non riesco a capire a cosa serve:
if(true) i++;
dato che non specifico dove ha termine l'istruzione if.
Secondo lo stile è un errore, ma allora perché non segnalarlo come tale
direttamente dal compilatore?
Inoltre non è raro che alcuni scrivano:
boolean variabile = false;
while( variabile ) {};
oppure
while(variabile) {}
ed altro simile a:
int a = 10 {}
quando tutte dovrebbero terminare con ; in quanto istruzioni singole.
Saluti.

 wrote in message
01c02332$06ee6e80$LocalHost@libero...


Veramente io dicevo l'esatto contrario.
Quando io mi riferivo ad uso improprio del ; intendevo quando (ad
esclusione dei tipi definiti dall'utente) si scriveva:
void metodo() {
};// notare il ;
if() {}; // notare il ;
in questi casi l'uso di ; dove vi sono già le parentesi graffe è un grave
errore.
Mi sembra inutile dire che nelle istruzioni singole l'uso di ; è
obbligatorio.
 
 

 possibile mettere il ; dopo la graffa? Ad esempio:
Perché ; indica una istruzione vuota, e perchè c'è un sacco di gente a cui
piace metterlo.
Ciao,
 Stefano
----------
"X WindowSSS, teSSSoro mio... lo odieremo per SSSempre"
Bill Gollum
----------

 parentesi per questioni di leggibilità.
nel caso di sopra secondo me è molto più leggibile senza parentesi che
appesantiscono la lettura e rendono la struttura troppo formale.
Se stai programmando in un ambito lavorativo nel quale il tuo codice deve
essere sottoposto a fase di testing o ad una fase di manutenzione da parte
di terzi è comunque buona norma seguire l'etichetta e non la comodità
personale
Dato che il Coding style guide non potrebbe farmi nient'altro che bene ..
dove posso trovarlo?? Mi date l'indirizzo esatto??
Pasteur

Se ho capito bene vuoi dire che se io scrivo:
void metodo() {
};
č come scrivere:
void metodo() {
}
;
semplicemente si compone dalla dichiarazione e implementazione di un metodo
e di una istruzione vuota?
Quindi:
if( cond);
la devo interpretare come un if che se vero esegue un'istruzione vuota?
Se č cosě allora mi hai risolto il problema.
Con la domanda in questione io volevo cercare di capire come far si che un
ciclo o un'istruzione condizionale non esegua alcunché e quindi pensavo che
mettere solamente l'istruzione(con l'eventuale condizione) e il ; bastasse,
ma da come mi hai spiegato io eseguo quindi sempre un istruzione vuota.
Ma nel caso del do- while(cond); il punto e virgola dopo l'istruzione while
credo che sia un terminatore e non un'istruzione vuota. Se non č cosě
correggimi.
Detto questo potrei dire che ho fatto l'ennesima figuraccia sul newsgroup.
Grazie a tutti quanti.
Ma per sapere tutte queste cose che libri avete letto ? Nel mio non viene
accennato alcunché su queste cose. 

L'indirizzo completo dell'editor è 
www.freshmeat.com
?

 la devo interpretare come un if che se vero esegue un'istruzione vuota?
Corretto. Anche
int a = 0;
while (++a < 10);
è corretta.
