Qt Coding Style/es: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
No edit summary
Line 1: Line 1:
'''Spanish''' [[Qt Coding Style|English]] [[Qt Coding Style Russian|Русский]] [[Qt Coding Style Japanese|日本語]]
'''Spanish''' [[Qt_Coding_Style|English]] [[Qt_Coding_Style_Russian|Русский]] [[Qt_Coding_Style_Japanese|日本語]]


=Guia de estilo de código Qt=
[[Category:Developing_Qt::Guidelines]][[Category:Spanish]]<br />[toc align_right=&quot;yes&amp;quot; depth=&quot;2&amp;quot;]
 
= Guia de estilo de código Qt =


Este es un resumen de las practicas de codificación que usamos al escribir el código de Qt.
Este es un resumen de las practicas de codificación que usamos al escribir el código de Qt.
Line 7: Line 9:
Los datos han sido recogidos de diferentes fuentes relacionas con Qt, foros de discusión, discusiones de correo electrónico y mediante la colaboración de los desarrolladores.
Los datos han sido recogidos de diferentes fuentes relacionas con Qt, foros de discusión, discusiones de correo electrónico y mediante la colaboración de los desarrolladores.


==Sangrado (Indentación)==
== Sangrado (Indentación) ==


* Usar 4 espacios para sangrar
* Usar 4 espacios para sangrar
* Espacios, no tabulaciones!
* Espacios, no tabulaciones!


==Declarando variables==
== Declarando variables ==


* Declarar cada variable en una linea separada
* Declarar cada variable en una linea separada
* Evitar nombres cortos siempre que sea posible (ej. “a”, “rbarr”, “nughdeget”)
* Evitar nombres cortos siempre que sea posible (ej. &quot;a&amp;quot;, &quot;rbarr&amp;quot;, &quot;nughdeget&amp;quot;)
* Se recomiendan nombres de variables de un solo caracter solamente para usar en contadores y dónde el propósito de la variable es obvio.
* Se recomiendan nombres de variables de un solo caracter solamente para usar en contadores y dónde el propósito de la variable es obvio.
* Esperar hasta que sea necesario para declarar una variable
* Esperar hasta que sea necesario para declarar una variable


* El nombre de las variables y las funciones comienza con una letra minúsculas. Las siguientes palabras en el nombre de la variable empiezan con una letra mayúscula.
<code><br /> // Incorrecto<br /> int a, b;<br /> char *c, *d;
 
// Correcto<br /> int height;<br /> int width;<br /> char *nameOfThis;<br /> char '''nameOfThat;<br /></code>
 
<br />''' El nombre de las variables y las funciones comienza con una letra minúsculas. Las siguientes palabras en el nombre de la variable empiezan con una letra mayúscula.


* Evitar la abreviaturas
* Evitar la abreviaturas


* Los nombres de las Clases siempre comienzan con una letra mayuscular. Clases publicas comienzan con una ‘Q’ (QRgb). Las funciones publicas a menudo comienzan con una ‘q’ (qRgb).
<code><br /> // Incorrecto<br /> short Cntr;<br /> char ITEM_DELIM = '';


==Espacios en blanco==
// Correcto<br /> short counter;<br /> char itemDelimiter = '';<br /></code>
 
* Los nombres de las Clases siempre comienzan con una letra mayuscular. Clases publicas comienzan con una 'Q' (QRgb). Las funciones publicas a menudo comienzan con una 'q' (qRgb).
 
== Espacios en blanco ==


* Usar lineas en blanco para agrupar declaraciones
* Usar lineas en blanco para agrupar declaraciones
Line 31: Line 41:
* Siempre usar un espacio en blanco despues de un carácter, y antes de un corchete
* Siempre usar un espacio en blanco despues de un carácter, y antes de un corchete


* Para punteros o referencias, siempre usar un espacio en blanco entre el ‘\*’ o &amp;, pero no usarlos entre ‘\*’ o &amp;y el nombre de la variable
<code><br /> // Incorrecto<br /> if(foo){<br /> }
 
// Correcto<br /> if (foo) {<br /> }<br /></code>
 
* Para punteros o referencias, siempre usar un espacio en blanco entre el '' o '&amp;', pero no usarlos entre '' o '&amp;' y el nombre de la variable
 
<code><br /> char '''x;<br /> const QString &amp;myString;<br /> const char''' const y = &quot;hello&amp;quot;;<br /></code>


* Envuelva los operadores binarios con espacios
* Envuelva los operadores binarios con espacios
* Ningún espacio después de un “cast”
* Ningún espacio después de un &quot;cast&amp;quot;
* Evitar los “cast” como en C, en la medida de lo posible
* Evitar los &quot;cast&amp;quot; como en C, en la medida de lo posible
 
<code><br /> // Incorrecto<br /> char* blockOfMemory = (char* ) malloc(data.size());
 
// Correcto<br /> char '''blockOfMemory = reinterpret_cast&amp;lt;char'''&gt;(malloc(data.size()));<br /></code>


==Llaves==
== Llaves ==


* Como regla básica, el corchete izquierdo debe estar en la misma linea de inicio de la declaración:
* Como regla básica, el corchete izquierdo debe estar en la misma linea de inicio de la declaración:
<code><br /> // Incorrecto<br /> if (codec)<br /> {<br /> }
// Correcto<br /> if (codec) {<br /> }<br /></code>


* Las implementaciones de funciones y las declaraciones de clase siempre tendrán el corchete izquierdo en una nueva línea:
* Las implementaciones de funciones y las declaraciones de clase siempre tendrán el corchete izquierdo en una nueva línea:


* Usar llaves cuando el cuerpo de una declaración condicional contenga mas de una linea, y también si una declaración de una simple linea es algo compleja.
<code><br /> static void foo(int g)<br /> {<br /> qDebug(&quot;foo: %i&amp;quot;, g);<br /> }


* Excepción 1: Use llaves a si la declaración padre abarca muchas lineas
class Moo<br /> {<br /> };<br /></code>


* Excepción 2: Use llaves también en bloques if-then-else, donde el código ‘if’ o el código ‘else’ ocupen varias lineas.
* Usar llaves cuando el cuerpo de una declaración condicional contenga mas de una linea, y también si una declaración de una simple linea es algo compleja.


* Use llaves cuando el cuerpo de una sentencia condicional este vacía
<code><br /> // Incorrecto<br /> if (address.isEmpty()) {<br /> return false;<br /> }


==Paréntesis==
for (int i = 0; i &lt; 10; +''i) {<br /> qDebug(&quot;%i&amp;quot;, i);<br /> }
<br /> // Correcto<br /> if (address.isEmpty())<br /> return false;
<br /> for (int i = 0; i &lt; 10;i)<br /> qDebug(&quot;%i&amp;quot;, i);<br /></code>
<br />* Excepción 1: Use llaves a si la declaración padre abarca muchas lineas
<br /><code><br /> // Correcto<br /> if (address.isEmpty() || !isValid()<br /> || !codec) {<br /> return false;<br /> }<br /></code>
<br />* Excepción 2: Use llaves también en bloques if-then-else, donde el código 'if' o el código 'else' ocupen varias lineas.
<br /><code><br /> // Incorrecto<br /> if (address.isEmpty())<br /> return false;<br /> else {<br /> qDebug(&quot;%s&amp;quot;, qPrintable(address));<br />it;<br /> }
<br /> // Correcto<br /> if (address.isEmpty()) {<br /> return false;<br /> } else {<br /> qDebug(&quot;%s&amp;quot;, qPrintable(address));<br />it;<br /> }
<br /> // Incorrecto<br /> if (a)<br /> if (b)<br /> …<br /> else<br /> …
<br /> // Correcto<br /> if (a) {<br /> if (b)<br /> …<br /> else<br /> …<br /> }<br /></code>
<br />* Use llaves cuando el cuerpo de una sentencia condicional este vacía
<br /><code><br /> // Incorrecto<br /> while (a);
<br /> // Correcto<br /> while (a) {}<br /></code>
<br />h2. Paréntesis
<br />* Use paréntesis para agrupar expresiones:
<br /><code><br /> // Incorrecto<br /> if (a &amp;&amp; b || c)
<br /> // Correcto<br /> if ((a &amp;&amp; b) || c)
<br /> // Incorrecto<br /> a'' b &amp; c


* Use paréntesis para agrupar expresiones:
// Correcto<br /> (a + b) &amp; c<br /></code>


==Declaraciones Switch==
== Declaraciones Switch ==


* El case debe estar en la misma columna que el switch
* El case debe estar en la misma columna que el switch
* Cada declaración case debe tener un break (o return) al final o un comentario que indique porque intencionalmente no hay un break
* Cada declaración case debe tener un break (o return) al final o un comentario que indique porque intencionalmente no hay un break


==Saltos de linea==
<code><br /> switch (myEnum) {<br /> case Value1:<br /> doSomething();<br /> break;<br /> case Value2:<br /> doSomethingElse();<br /> // fall through<br /> default:<br /> defaultHandling();<br /> break;<br /> }<br /></code>
 
== Saltos de linea ==


* Limite el largo de las lineas a 100 caracteres, inserte saltos de linea si son necesarios
* Limite el largo de las lineas a 100 caracteres, inserte saltos de linea si son necesarios
Line 66: Line 109:
* Las comas van al final de una línea quebrada, los operadores deben empezar al principio de la nueva línea. Un operador al final de la línea no es fácil de ver si el editor es demasiado estrecho.
* Las comas van al final de una línea quebrada, los operadores deben empezar al principio de la nueva línea. Un operador al final de la línea no es fácil de ver si el editor es demasiado estrecho.


==Herencia y la keyword `virtual`==
<code><br /> // Correcto<br /> if (longExpression<br /> + otherLongExpression<br /> + otherOtherLongExpression) {<br /> }
 
* Cuando reimplemente un método virtual, ''no'' ponga la keyword `virtual` en el archivo header.


==Excepción general==
// Incorrecto<br /> if (longExpression +<br /> otherLongExpression +<br /> otherOtherLongExpression) {<br /> }<br /></code>


* Siéntase libre de romper una regla si esta hace que su código se vea mal.
== Herencia y la keyword `virtual` ==


===Categories:===
* Cuando reimplemente un método virtual, ''no'' ponga la keyword `virtual` en el archivo header.


* [[:Category:Developing Qt|Developing_Qt]]
== Excepción general ==
** [[:Category:Developing Qt::Guidelines|Guidelines]]
* [[:Category:Spanish|Spanish]]

Revision as of 10:15, 24 February 2015

Spanish English Русский 日本語
[toc align_right="yes&quot; depth="2&quot;]

Guia de estilo de código Qt

Este es un resumen de las practicas de codificación que usamos al escribir el código de Qt.

Los datos han sido recogidos de diferentes fuentes relacionas con Qt, foros de discusión, discusiones de correo electrónico y mediante la colaboración de los desarrolladores.

Sangrado (Indentación)

  • Usar 4 espacios para sangrar
  • Espacios, no tabulaciones!

Declarando variables

  • Declarar cada variable en una linea separada
  • Evitar nombres cortos siempre que sea posible (ej. "a&quot;, "rbarr&quot;, "nughdeget&quot;)
  • Se recomiendan nombres de variables de un solo caracter solamente para usar en contadores y dónde el propósito de la variable es obvio.
  • Esperar hasta que sea necesario para declarar una variable
<br /> // Incorrecto<br /> int a, b;<br /> char *c, *d;

// Correcto<br /> int height;<br /> int width;<br /> char *nameOfThis;<br /> char '''nameOfThat;<br />


El nombre de las variables y las funciones comienza con una letra minúsculas. Las siguientes palabras en el nombre de la variable empiezan con una letra mayúscula.

  • Evitar la abreviaturas
<br /> // Incorrecto<br /> short Cntr;<br /> char ITEM_DELIM = '';

// Correcto<br /> short counter;<br /> char itemDelimiter = '';<br />
  • Los nombres de las Clases siempre comienzan con una letra mayuscular. Clases publicas comienzan con una 'Q' (QRgb). Las funciones publicas a menudo comienzan con una 'q' (qRgb).

Espacios en blanco

  • Usar lineas en blanco para agrupar declaraciones
  • Siempre usar una linea en blanco
  • Siempre usar un espacio en blanco despues de un carácter, y antes de un corchete
<br /> // Incorrecto<br /> if(foo){<br /> }

// Correcto<br /> if (foo) {<br /> }<br />
  • Para punteros o referencias, siempre usar un espacio en blanco entre el o '&', pero no usarlos entre o '&' y el nombre de la variable
<br /> char '''x;<br /> const QString &amp;myString;<br /> const char''' const y = &quot;hello&amp;quot;;<br />
  • Envuelva los operadores binarios con espacios
  • Ningún espacio después de un "cast&quot;
  • Evitar los "cast&quot; como en C, en la medida de lo posible
<br /> // Incorrecto<br /> char* blockOfMemory = (char* ) malloc(data.size());

// Correcto<br /> char '''blockOfMemory = reinterpret_cast&amp;lt;char'''&gt;(malloc(data.size()));<br />

Llaves

  • Como regla básica, el corchete izquierdo debe estar en la misma linea de inicio de la declaración:
<br /> // Incorrecto<br /> if (codec)<br /> {<br /> }

// Correcto<br /> if (codec) {<br /> }<br />
  • Las implementaciones de funciones y las declaraciones de clase siempre tendrán el corchete izquierdo en una nueva línea:
<br /> static void foo(int g)<br /> {<br /> qDebug(&quot;foo: %i&amp;quot;, g);<br /> }

class Moo<br /> {<br /> };<br />
  • Usar llaves cuando el cuerpo de una declaración condicional contenga mas de una linea, y también si una declaración de una simple linea es algo compleja.
<br /> // Incorrecto<br /> if (address.isEmpty()) {<br /> return false;<br /> }

for (int i = 0; i &lt; 10; +''i) {<br /> qDebug(&quot;%i&amp;quot;, i);<br /> }
<br /> // Correcto<br /> if (address.isEmpty())<br /> return false;
<br /> for (int i = 0; i &lt; 10;i)<br /> qDebug(&quot;%i&amp;quot;, i);<br />


* Excepción 1: Use llaves a si la declaración padre abarca muchas lineas


<br /> // Correcto<br /> if (address.isEmpty() || !isValid()<br /> || !codec) {<br /> return false;<br /> }<br />


* Excepción 2: Use llaves también en bloques if-then-else, donde el código 'if' o el código 'else' ocupen varias lineas.


<br /> // Incorrecto<br /> if (address.isEmpty())<br /> return false;<br /> else {<br /> qDebug(&quot;%s&amp;quot;, qPrintable(address));<br />it;<br /> }
<br /> // Correcto<br /> if (address.isEmpty()) {<br /> return false;<br /> } else {<br /> qDebug(&quot;%s&amp;quot;, qPrintable(address));<br />it;<br /> }
<br /> // Incorrecto<br /> if (a)<br /> if (b)<br /> …<br /> else<br /> …
<br /> // Correcto<br /> if (a) {<br /> if (b)<br /> …<br /> else<br /> …<br /> }<br />


* Use llaves cuando el cuerpo de una sentencia condicional este vacía


<br /> // Incorrecto<br /> while (a);
<br /> // Correcto<br /> while (a) {}<br />


h2. Paréntesis
* Use paréntesis para agrupar expresiones:


<br /> // Incorrecto<br /> if (a &amp;&amp; b || c)
<br /> // Correcto<br /> if ((a &amp;&amp; b) || c)
<br /> // Incorrecto<br /> a'' b &amp; c

// Correcto<br /> (a + b) &amp; c<br />

Declaraciones Switch

  • El case debe estar en la misma columna que el switch
  • Cada declaración case debe tener un break (o return) al final o un comentario que indique porque intencionalmente no hay un break
<br /> switch (myEnum) {<br /> case Value1:<br /> doSomething();<br /> break;<br /> case Value2:<br /> doSomethingElse();<br /> // fall through<br /> default:<br /> defaultHandling();<br /> break;<br /> }<br />

Saltos de linea

  • Limite el largo de las lineas a 100 caracteres, inserte saltos de linea si son necesarios
  • Las comas van al final de una línea quebrada, los operadores deben empezar al principio de la nueva línea. Un operador al final de la línea no es fácil de ver si el editor es demasiado estrecho.
<br /> // Correcto<br /> if (longExpression<br /> + otherLongExpression<br /> + otherOtherLongExpression) {<br /> }

// Incorrecto<br /> if (longExpression +<br /> otherLongExpression +<br /> otherOtherLongExpression) {<br /> }<br />

Herencia y la keyword `virtual`

  • Cuando reimplemente un método virtual, no ponga la keyword `virtual` en el archivo header.

Excepción general