si (a) {
} más si (b) {
}
Es estructuralmente diferente de:
si (a) {
} más {
}
si (b) {
} más {
}
- ¿Cuáles son los softwares necesarios para un ingeniero civil?
- ¿TweetAdder es el mejor software de gestión de Twitter?
- ¿Hay alguna manera de saber qué aplicaciones se lanzan hoy en iTunes?
- ¿Cuál es la pila tecnológica detrás de Slack?
- Código PHP requerido: ¿Cómo podemos hacer la verificación del número móvil a través del servicio de mensajería?
Y:
si (a) {/ * … * /}
si (b) {/ * … * /}
si (c) {/ * … * /}
es diferente de:
interruptor (a) {/ * … * /
}
Por supuesto, estas diferencias estructurales dependen del idioma que esté utilizando. Java puede funcionar diferente de Perl, y PHP es diferente de Javascript. Por ejemplo, hay una recolección de basura opcional en PHP, pero en Javascript está todo el asunto del “carroñero”. Visual Basic tiene Ifs y Elses completamente diferentes según lo mencionado por otro respondedor. Comprenda lo que está haciendo la tecnología subyacente: ¿qué significa la diferencia de sintaxis para la funcionalidad resultante?
También hay “mejores prácticas”, pero en realidad no están hablando de un aspecto del lenguaje como el anterior a menos que estemos en idiomas o marcos de navegador.
C y C ++ también los tienen, pero generalmente es algo después de la especificación. Por ejemplo, en C / C ++, desea rellenar los parámetros de macros con paréntesis porque ayuda a compartimentar el reemplazo literal proporcionado por el programador cuando se utiliza la macro.
Ejemplo:
#definir UMIN (a, b) ((a) <(b)? (a): (b))
Al agregar el paréntesis, estamos protegiendo al compilador de los excesos cuando se utilizan ciertos tipos de parámetros. Estamos afirmando al compilador que el parámetro “a” es una unidad en sí mismo, no un nombre parcial o que debe interpretarse como una sección porque de lo contrario pueden producirse confusiones.
Al igual que lo recomiendo al usar printf () para convertir cada parámetro a su tipo previsto para evitar un comportamiento indefinido. Este es un consejo, una mejor práctica, pero no una regla difícil y rápida. Rómpelo y descubrirá por qué lo hago, pero puede romperse.
Tal vez todos deberíamos mirar la especificación y el comportamiento del compilador en lugar de la opinión de algunos expertos sobre la mejor manera de hacer las cosas.
¿Estás siguiendo estas filosofías y técnicas?
- SÓLIDO
- SECO
- MVC
Asegúrese de evitarlos cuando no tengan un propósito superior. No siempre uso el “SO” de SOLID, para casos especiales, en ciertos momentos, etc. MVC es extremadamente suelto en comparación con DRY, que literalmente significa “No te repitas”
Mi filosofía es “si funciona de la manera que usted quiere, déjelo”: si la sintaxis del código (y la estructura que proporciona) proporciona un medio para un fin, entonces está cumpliendo su mejor propósito.
Si desea escribir software “lenta pero correctamente, teniendo en cuenta la opinión de todos, incluso si es la corrección del estilo”, nunca terminará sus proyectos.
Las casas de software burocrático generalmente no producen trabajo muy rápido. Estos son los que tienen muchos procesos que supuestamente mejoran la calidad del código, pero introducen mucho papeleo. De acuerdo, algunos trabajos requieren un mantenimiento cuidadoso y minucioso. Cortar la burocracia, al menos en las recomendaciones de otros. Hay tantos, por lo general, es solo una forma de criticar pasivamente agresivamente, aunque algunos consejos son bien tomados.
Solo hay algunas métricas para el “software correcto”:
- “¿Qué tan bien funciona?” (¿Se verifica que funciona? ¿Qué pasa con los casos de esquina? ¿Consume más recursos de los que necesita? ¿Es rápido?)
- “¿Qué tan rápido funciona?” (¿Podría optimizarse aún más?)
- “¿Qué tan fácil es de usar?” (¿Requiere documentación esotérica que haga referencia? ¿Es intuitivo y está escrito ‘inteligentemente’?)
- “¿Qué tan fácil es modificar?” (¿Qué tan claramente escrito está? ¿Está bien documentado? ¿Funcionará en una variedad de plataformas o hay una manera de portar el código rápidamente?)
- “¿Cuánto tiempo se tardó en hacer?” (¿Qué tan costoso de desarrollar?)
- “¿Cuánto vale?” (¿Qué tan rentable es? ¿Qué utilidad proporciona? ¿Es esta la utilidad más posible o la utilidad óptima? ¿Está “completa”? ¿La usan otros?)
Es muy difícil obtener el 100% en todas las categorías. Solo hay mucho tiempo en el día.
Mira esta tetera: Shadertoy
/ * Gracias Coyote !!! * / #definir A (i) vec2 (4 * (T [i] y 63) -120,3 * (T [i] >> 6) -40) -q
/ * Creado por Sebastien Durand-2014 * / #define G (a) para (int i = 0; i <a; i ++)
/ * Licencia Creative Commons * / #define U (a, b) (ax * by-bx * ay)
/ * Atribución – No comercial * / #define N normalize
/*ShareAlike3.0 UnportedLicense. * / #define W vec3
flotador K, a, t
, z = 0.; W
CORREOS;
int [] T =
int [] (30,46,110,242,690,
1074,1966,2029, 1964,2092, 2209,2270, 2466,2595
2590,1743,1793,1345, 896, 652,2107,1976, 1591,
1077,944); flotante B (int i) {vec2 q = P.xy, m = A (i), n = A (i + 1), o = A (i +
2); flotante x = .5 * U (o, m), y = U (n, o), z = U (m, n); q = m * (x + y) + n * (zy) – o * (x + z
); qx = -qx; m- = n + = no; K = abrazadera (.5 * U ((o + (y * zx * x) * q .yx / dot
(q, q)), m) / (x + x + y + z), 0., 1.); return sqrt (dot (q = o + K * (n-o + K
* m), q) + P * P) .z;} flotante M (W p) {P = p + O; a = min (min (B (15), B (17)) – 6.
, max (Py-50., min (abs (B (20) -7.) – 1., B (22) * (. 25 + .75 * K) -8.))); P.
xz / = N (P.xz); Pz = 0 .; G (7) a = min (a, (B (i + i) -2.) * .7);
return a;} void mainImage (out vec4 o, vec2 p) {vec2 r = iResolution
.xy; o = o-o + .8-.3 * longitud (p = (p + pr) / ry); WY = W (0,1,0), u = cruz (O
= N (W (cos (t = iDate.w) ,. 6-iMouse.y / ry, sin (t))), Y), d = N (px * u +
py * cross (u, O) -OO), E = Y / 1e3, L = N (3. * Y + O); O * = 3e2; G (99
&& z <5e2) z + = t = M (d * z); if (t <Ey) {O + = z * d; u = N (W (M (E.
yxx), M (E), M (E.xxy)) – M (EE)); z = .3; G (30) z = min (z
, M (L * (t + = 2.)) / T); o = mezclar (o, .4 * (Y * max (z + z, 0.)
+ Y) .grbb + pow (max (punto (reflejar (L, u), d
), 0.), 1e3), – punto (u, d));}}