visual para net multilinea como comentarios comentario comentar codigo caja bloque comments if-statement

comments - para - como comentar en html5



Dónde poner comentarios en una construcción IF THEN ELSE (9)

¿Qué tal este estilo? Usando // comment para la descripción de la sentencia if-else completa, y /* */ comment para la descripción interna. Uso /* */ comment para no confundirme con el comentario interno de la declaración if-else.

// Process1 if (cond1-1) { /* Process1 > Process1-1 */ Process1-1(); // Process1-1 description... Process1-1(); Process1-1(); ... } else if (cond1-2) { /* Process1 > Process1-2 */ // Process1-2 description... Process1-2(); Process1-2(); Process1-2(); ... // Process1-2 if (cond1-2-1) { /* Process1 > Process1-2 > Process1-2-1 */ Process1-2-1(); Process1-2-1(); Process1-2-1(); ... } else if (cond1-2-2) { /* Process1 > Process1-2 > Process1-2-2 */ Process1-2-2(); // Process1-2-2 description... Process1-2-2(); // Process1-2-2 description... Process1-2-2(); ... } else { /* Process1 > Process1-2 > Process1-2-else */ Process1-2-else(); Process1-2-else(); Process1-2-else(); ... } } else { /* Process1 > Process1-else */ Process1-else(); Process1-else(); Process1-else(); ... }

Nunca decidí cuál es la mejor manera de comentar las construcciones IF-THEN-ELSE, por lo que nunca estandaricé de forma consistente para comentarlas. Aprecio cualquier idea.

Algunas opciones:

un)

IF (blabla) { // this comment explains what happens in the IF case dothis(); } else { // this comment explains what happens in the ELSE case dosomethingelse(); }

drawback: en el caso de múltiples sentencias dothis (), me gusta comentar los principales bloques, y en ese caso no siempre está claro si el IF-comment pertenece al primer bloque dothis () o al caso completo de IF

o b)

IF (blabla) { // this comment explains what happens in the IF case dothis(); } else { // this comment explains what happens in the ELSE case dosomethingelse(); }

inconveniente: solo funciona para comentarios cortos. Usualmente comento las construcciones IF-THEN-ELSE si el caso IF y ELSE no está directamente claro desde el código, lo que generalmente requiere un comentario más largo que una línea.

o c)

// if the following happens IF (blabla) { // then do this dothis(); } else { // or else do this dosomethingelse(); }

PD: Sé que "el código debe explicarse por sí mismo", pero este no es siempre el caso ...


De los docs de docs java para convenciones de código

Comentarios de una sola línea para if-else:

if (condition) { /* Here is a single line comment. */ ... }

Una línea de comentarios muy cortos para if-else:

if (a == 2) { return TRUE; /* special case */ } else { return isprime(a); /* works only for odd a */ }

Comentarios de línea múltiple para if-else:

if (condition) { /* * Here is a block comment. */ }


Haría caso a) pero con un poco más de espacio en blanco:

if (blabla) { // This explains the whole if case // Can comment here for specific block comments doThis(); } else { // This explains the else case // Same again doSomethingElse(); }


Nunca lo pensé mucho; personalmente y cuando sea necesario, he puesto comentarios sobre las declaraciones IF y ELSE. Esto me da una buena separación entre los comentarios sobre las declaraciones de la sucursal y los comentarios sobre el código.

// comment about the if statement if (expression) { // comment about the code doSomething(); } // comment about the else statement else { // comment about the code doSomethingElse(); }

También observo que soy la única respuesta hasta ahora para usar el "estilo abierto de llavero", que podría ser un retroceso en mis días de Pascal, aunque prefiero la justificación visual del comienzo y el final de los bloques de código, así que mi estilo de comentario puede no funcionar para la "comunidad cerrada de estilo de llavero".


Para mí, un comentario sobre el IF explica la declaración IF sí misma. Por ejemplo, si la condición que se prueba es particularmente compleja.

Un comentario en el bloque debajo de IF o ELSE describe qué sucede una vez que se ha evaluado la condición y se ha tomado una decisión.

Así que así:

//Is this a favoured customer and do we have a promotion? if customer.special() and monthly.hasOffer() { //Add discount invoice.addDiscount(); } else { //Add note about favoured customer scheme invoice.addNotes(JOIN_OUR_DISCOUNT_SCHEME); }


Personalmente, creo que es mejor escribir código que no requiera pocos comentarios que digan "about do do x", seguido de "DoX ()". Si es necesario, en lugar de escribir un comentario que diga "do x por y", preferiría escribir un método llamado "DoXBecauseOfY". Si la refactorización posterior elimina la parte "BecauseOfY", entonces tiene más sentido poner un comentario antes de la declaración if , documentando la lógica general.

Por supuesto, debe reducir la cantidad de código dentro de cada bifurcación hasta el punto en que pueda leer todo el enunciado if a la vez.


Use lo que tiene sentido para usted, supongo (a menos que esté trabajando bajo un estándar de codificación que especifique el estilo de comentario). Personalmente no uso (c) porque es inconsistente entre el primero y los siguientes casos. De vez en cuando uso (b) cuando un comentario breve servirá pero generalmente prefiero (a). Si estoy comentando varios subbloques dentro del bloque if, podría dejar una línea en blanco después del comentario del caso:

if (blabla) { // here''s a comment about this case // comment about this bit of code bit_of_code(); // comment about this other bit of code other_bit_of_code(); }

y así.


solo para agregar la respuesta que falta para la ubicación de los comentarios del otro, que en mi opinión es la mejor ubicación para la lectura del código por los siguientes motivos:

  • si el comentario se pone por encima del resto, rompe la continuidad if-else
  • si se pone dentro se puede mezclar con el comentario de la primera declaración dentro del otro


// match jth arc if (j < Count) { // arc matched if (arcs[j].IsBlue) List.Add(arcs[j]) } else // all arcs were matched { // check if there more arcs if (arcs[j + 1] != null) continue; }

Se ve muy bien si colapsas los bloques

// match jth arc if (j < Count)|...| else // all arcs were matched|...|


// Not very much sure, but here is a snippet of my code // tweak URL as per query params and hash index positions if (hasQueryParams && hashPos > -1) { // both query params and hash available ... ... } else if (hasQueryParams) { // only query params available ... ... } else if (hashPos > -1) { // only hash available ... ... } else { // neither query params nor hash available ... ... }