C Programming Language Specification (b)

5. reglas de identificador de nomenclatura

5-1 identificadores denominados regulares para borrar, un significado claro, claro, y el uso de palabras completas o abreviaturas que, básicamente, se puede entender, para no inducir a error.

Descripción: palabra más corta puede estar formado mediante la eliminación de la abreviatura "vocal"; preferiblemente palabras más largas que forman las primeras letras de la palabra.
Abreviaturas, hay algunas palabras que reconocimos abreviaturas.
Ejemplo: Las siguientes abreviaturas de palabras que pueden ser reconocidos por todo el mundo, básicamente.
temp abreviado como tmp;
En Flag abreviado como FLG;
estadística puede ser abreviado como STAT;
INCREMENTO abreviado como inc es;
Mensaje puede abreviarse MSG;

Reglas 5-2 tipo de datos personalizado bien llamada, por lo que es auto-descripción, para mejorar la legibilidad. Tenga en cuenta que en la misma unidad de nombres de productos, tales como: int32_t, int64_t, int8_t, uint64_t , uint32_t, uint8_t, char.
Descripción: Con un tipo personalizado, puede hacer que el lenguaje de programación de tipo pequeño proporciona suficientes deficiencias de información, y realizar los procedimientos clara y concisa.
Ejemplo: la referencia personalizada de manera declaración de tipo de datos.
sin firmar carbón uint8_t typedef;
typedef unsigned uint16_t corta;
typedef unsigned int uint32_t;

Regla 5-3 usando la estructura typedef definido, y las necesidades _t después de su nombre, usando typedef enum definido, y las necesidades _e después de su nombre.

Regla 5-4 convenciones de nomenclatura se debe mantener con el estilo utilizado por el sistema es consistente y unificada en el mismo proyecto, tales como el uso de minúsculas subrayadas estilo UNIX o capitalización de forma arrastrando los pies, no utilice mayúsculas y subrayados mezclado manera, tales como la identificación o el identificador de las variables miembro y variables globales especial M_ G_, añadiendo después el caso es permitir que el barajado.
Ejemplo: add_user no deseados, add_user, AddUser, m_AddUser permitido.

Solos no aparecen reglas de mayúsculas y minúsculas identificador similares programa de 5-5.

Reglas 5-6 no aparecen en el programa identificador de variables locales y globales idénticas, aunque la diferencia entre los dos ámbitos sin errores gramaticales, pero engañosa. Las variables globales necesarios para agregar g_ prefijo.

Regla 5-7 nombre de la variable se debe utilizar "nombre" o "adjetivo + sustantivo."
Por ejemplo: un valor flotante;
un flotador oldValue;

Regla 5-8 nombre de la función global se debe utilizar "verbo" o "verbo + sustantivo" (frases de objetos móviles). la función miembro de la clase debe ser utilizado sólo "verbo", el sustantivo se omite es el objeto en sí.
Por ejemplo: drawBox (); // función global

6. Los enunciados básicos y expresiones

No confiar indebidamente en la Regla 6-1 C expresiones de reglas de precedencia del operador.
Además de la utilización del operador paréntesis, puede anular la prioridad por defecto también puede ser utilizado para enfatizar los operadores utilizados. C utilizando un bastante complejas reglas de prioridad de operador puede fácilmente conducir a error, este método puede ayudar a evitar este tipo de errores, y puede hacer que el código legible. Sin embargo, demasiado paréntesis distraen reduce la legibilidad del código.
Se recomienda el siguiente enfoque cuando se administra en paréntesis:
1, la mano derecha operando operador de asignación no requiere el uso de paréntesis, a menos que el extremo derecho de la expresión de asignación en sí que comprende:

x = a + b; /* acceptable */
x = (a + b); /* ( ) not required */

2, los operandos de operadores unarios sin utilizar paréntesis:

x = a * -1; /* acceptable */
x = a * (-1); /* ( ) not required */

3, de lo contrario, los operandos operador binario y ternario sea echado-expresiones, a menos que la expresión es el mismo para todos los operadores.

x = a + b + c; /* acceptable, but care needed */
x = f ( a + b, c ); /* no ( ) required for a + b */
if (a && b && c) /* acceptable */
x = (a + b) - (c + d);/* acceptable */
x = (a * 3) + c + d; /* acceptable */
x = (uint16_t) a + b; /* no need for ( ( uint16_t ) a ) */

4, incluso si todos los operadores son los mismos, se pueden usar para controlar la secuencia de operación entre paréntesis. Algunos operadores (por ejemplo, adición y multiplicación) en el álgebra asociativa, pero no es necesariamente así en C. Del mismo modo, un tipo híbrido que implica número entero operaciones (número de reglas permitido) ya que la presencia de la promoción integral puede producir resultados diferentes. El siguiente ejemplo está escrito en la aplicación de 16 bits, que describe la estructura y una expresión clara de la importancia de la adición no es vinculante:

uint16_t a = 10;
uint16_t b = 65535;
uint32_t c = 0;
uint32_t d;
d = (a + b) + c; /* d is 9; a + b wraps modulo 65536 */
d = a + (b + c); /* d is 65545 */

Regla 6-2 variable se incrementa y los operadores decremento necesita una línea separada.

Los siguientes términos dicen nuestra dependencia en el orden de las operaciones es cómo sucedió, y por lo tanto nos ayudan a adoptar la regla.
1, incremento o decremento operadores
como pueden producir ejemplo errónea, consideran
x = b [i] + i ++;
El b [i] es la primera operación en la operación o después de i ++ expresión generado diferentes resultados. Las operaciones de valor añadido como una declaración por separado, para evitar este problema. Entonces:
X = B [I] + I;
I ++;
2, los parámetros de función
de la orden de cálculo de parámetros de función no se especifica.
x = func (i ++, i );
El orden de los dos parámetros de funcionamiento diferentes de la función, la expresión dará resultados diferentes.

Regla 6-3 o lógicos operadores && | | no contiene el número de lateral diestro.
Entre C hay un caso, una parte de la expresión no debe ser calculada. Si estas sub-expresiones tienen efectos secundarios, los efectos secundarios pueden ocurrir o no ocurrir, dependiendo del valor de los otros sub-expresiones.
Por ejemplo:

if ( ishigh && ( x == i++ ) ) /* Not compliant */

Regla 6-4 no está disponible en una sentencia if las variables booleanas se compararon directamente con VERDADERO, FALSO, o un 1,0.
Asumir variable llamada indicador booleano, comparándolo con el valor estándar cero si la declaración es el siguiente:
si (bandera) // bandera Expresión es verdad
si // bandera expreso es falsa (bandera!)

Regla 6-5 en una sentencia if debe utilizar la variable entera "==" o "! =" Directamente en comparación con el 0.
Las variables booleanas no se pueden imitar el estilo y la escritura:
SI (valor) // valor es engañoso es una variable booleana
si (valor!)

Regla 6-6 variables de si la declaración no es de coma flotante con "dobles =" o "! =" En comparación con cualquier número. Asegúrese de prestar atención, si se trata de una variable de tipo float o doble, tienen limitaciones de precisión. Así que asegúrese de evitar las variables de coma flotante "==" o "! =" Es comparada con la digital, debe tratar de convertirse en "> =", "<=" forma o.

Regla 6-7 en una sentencia if debe ser una variable puntero con "==" o "! =" En comparación con NULL.

Regla 6-8 if para tratar de añadir otra rama de la declaración no tiene ninguna rama else debe tratarse con cuidado.

Regla 6-9 estado comparativo recomienda valor constante para la izquierda! ! !
Ejemplo: Por ejemplo, si (5 == i), en lugar de i == 5, escrito == = prevención de errores.

Regla 6-10 en un ciclo multiplex, si es posible, debe ser colocado en el bucle más interior más largas, ciclos más cortos en la capa más externa, para reducir el número de ciclos de CPU capa de corte cruz.
Estilo recomendado:

for (col=0; col<5; col++ )
{
for (row=0; row<100; row++)
{
sum = sum + a[row][col];
}
}
不推荐风格:
for (row=0; row<100; row++)
{
for (col=0; col<5; col++ )
{
sum = sum + a[row][col];
}
}

6-11 regla debe limitarse a profundidad de anidamiento de múltiples ciclos, se recomienda el plazo de 5 capas.

Regla 6-12 cada extremo de la declaración de caso no se olvide de añadir descanso, de lo contrario, dará lugar a múltiples ramas se superponen. Si una pluralidad de rama solapamiento intencionalmente, también puede necesitar aumentar las notas explicativas.

No se olvide que la regla final de 6-13 rama por defecto. Incluso si el programa realmente no necesita procesamiento predeterminado, se debe mantener el valor por defecto declaración: break;.

Regla 6-14 Goto comunicado errores o problemas frecuentes. Es posible saltar la construcción de algunos objetos, inicialización, una importante variable comunicado cálculo, y destruirá el diseño estructural. Estas reglas abogaronMenos, declaración de precaución Goto.

6-15 rama regla de código usando llaves {} están encerrados, incluyendo el caso de una sola línea de código! !

Publicado 56 artículos originales · ganado elogios 75 · Vistas de 300.000 +

Supongo que te gusta

Origin blog.csdn.net/qq_44710568/article/details/105264289
Recomendado
Clasificación