verificador validate rut para formato formatear digito chile c# delphi coding-style code-formatting

validate - regex rut c#



¿Cómo formateas tus declaraciones compuestas en Delphi y C#? (19)

Como desarrollador de Pascal y Delphi desde hace mucho tiempo, siempre alineo mi comienzo y finalizo así:

begin if x = y then begin ... ... end else for i := 0 to 20 do begin ... ... end; end;

Lo que me vuelve loco es el código formateado así:

begin if x = y then begin ... ... end else for i := 0 to 20 do begin ... ... end; end;

Cuando hay algunos niveles de declaraciones compuestas, encuentro que esto es difícil de leer. El código anterior está bien, porque no es tan complicado, pero para ser coherente, prefiero que todo comience y termine alineado.

Cuando empiezo a usar c #, me encuentro alineando los corchetes también. ¿Cuál es la norma en el mundo de C #?

Editar:

Alguien ha señalado que este es el tipo de pregunta que no debe formularse en SO. No veo por qué no. Estoy en proceso de configurar un documento de pautas de codificación. Sé que obtendré cierta resistencia a ciertas cosas, espero obtener algunas respuestas aquí, así puedo estar preparado para enfrentar esa resistencia de frente.


Alguien publicó que escribirían lo siguiente:

if x=y then z;

Ahora esto realmente no me gusta, y no tiene nada que ver con la estética. Supongamos que x, y y z son funciones. Si paso por el código, lo anterior significa que no puedo pasar por encima de x, y y entrar en z.

1 if x=y then 2 Z;

Ahora puedo entrar en la línea 2 sin entrar en la línea 1.


El estándar en el mundo C es alinear llaves de cierre con la instrucción inicial:

if (I am nuts) { Psychiatry }

o incluso ponga la llave de apertura en su propia línea:

if (I am nuts) { Psychiatry }

En algunos estilos, las llaves tienen diferentes sangrías:

if (I am nuts) { Psychiatry }

o incluso

if (I am nuts) { Psychiatry }

Utilicé el primer estilo durante mucho tiempo en Perl, y este fue mi camino para la continuación del resto:

if (I am nuts) { Psychiatry } else { I am free }

pero después de haber estado expuesto a Lisp, no veo ningún valor adicional al colocar las llaves en su propia línea cuando ya estoy sangrando correctamente:

if (I am completely nuts) { Psychiatry } else { I am free }

Sin embargo, no tengo ninguna esperanza de cambiar las formas tradicionales de C con estos pensamientos.

Como nota aparte, Python ha descartado los frenos y solo depende de la sangría, sin embargo, esto es demasiado lejos en mi humilde opinión, ya que conduce a cosas tan ridículas como que la lambda solo puede tener una declaración.


Nunca escribiría el código (su segundo ejemplo) de esa manera. Sería cualquiera (preferido)

begin if x = y then begin ... end else begin for i := 0 to 20 do begin ... end; end; end;

o

begin if x = y then begin ... end else for i := 0 to 20 do begin ... end;

fin;

A veces utilizo ese colapso (como en el segundo caso) para combinar si ... y finalmente intento.

x := GetMeTheObject; if assigned(x) then try ... finally FreeAndNil(x); end;


Personalmente, prefiero comprimir declaraciones de unión en una línea. Por ejemplo, end else en otra línea. Hace más claro que el próximo bloque de enunciados está relacionado con el actual.


Siempre alineo el Comienzo / Fin como en tu ejemplo. (Excepto que también tengo una declaración Begin / End alrededor de For, solo en caso de que vayas agregue código más tarde).

De todos modos, si tu código tiene múltiples niveles de profundidad, entonces realmente no importa dónde pongas tu comienzo / final ya que es demasiado complicado. Si te encuentras sobre, por ejemplo, 3 niveles de profundidad, detente y simplifica. Crea sub rutinas para limpiar cosas.

CodeComplete es el mejor libro de referencia sobre este tipo exacto de cosas. Si no aprendes algo leyendo ese libro, entonces me comeré mi sombrero.


Solía ​​usar un principio "colgante" en Delphi:

if (SomeCondition) then begin ... end;

Curiosamente, no lo hice con C, porque encontré esto más legible:

if (SomeCondition) { ... }

Después de un tiempo, dejé de intentar guardar una sola línea aquí y allá a favor de la legibilidad:

if (SomeCondition) then begin ... end;

También uso bloques explícitos de inicio / final en los que creo que mejora la legibilidad. No necesito ser "inteligente". Necesito poder seguir la intención del código de un vistazo. Más importante aún, también lo hacen todos los que puedan leerlo / mantenerlo.

if x = y then begin ... ... end else begin for i := 0 to 20 do begin ... ... end; end;

Por lo general, no me molesto si, obviamente, hay una sola declaración

if (SomeCondition) then ...


Tiendo a alinear siempre mi IF y ELSE y doblo mi bloque BEGIN / END. Si tengo una condición múltiple SI, la divido en varias líneas. Si descubro que estoy llegando a lo profundo, entonces reconsidero lo que estoy codificando o refactorizando en múltiples métodos. Entonces mi código se ve así:

if condition1 then begin // do something end else // not condition1 begin // do something else end;

o los más complejos si condicionales.

if condition1 or condition2 or condition3 and ( condition4 or condition5 ) then begin // do something end else // not conditions begin // do something else end;


Tiendo a hacer esto en Delphi:

if a=b then begin c; end else begin d; end; if x=y then z;

simplemente porque me resulta más legible que con los saltos de línea adicionales. Obviamente, si estoy trabajando con otros, usaré los estándares en los que acordemos (o lo que sea que use la base de códigos actual), pero cuando soy el único que está trabajando en ellos (como en proyectos personales), entonces Lo hago así.


Todos tienen diferentes preferencias. En mi caso, aprendí Modula-2 antes de aprender Pascal. Modula-2 no tiene una palabra clave BEGIN y un END requerido para cada bloque. Así que el código podría verse así (Modula-2 es sensible a mayúsculas y minúsculas):

IF x = y THEN .... END;

Cuando comencé a codificar en Pascal, esto se convirtió en:

if x = y then begin .... end;

De esta manera, el código se parecía más a lo que estaba acostumbrado a ver, sin dejar de estar dentro del dominio del código aceptable de Pascal.

Para mí, estas primeras impresiones han influido en mi estilo preferido de corsé y sangrado para prácticamente todos los demás idiomas con los que he trabajado. No existe realmente ninguna "norma" particular para el código C #, así como tampoco hay ninguna para C o Pascal.

La única regla real a seguir es la siguiente: cuando trabaje con un código existente, use el estilo que ya existe. Cuando trabaje en un código nuevo, use su estilo preferido.


Esto es muy gracioso. Tengo mi propia forma de alineación idiosincrásica que, curiosamente, uso en varios idiomas, incluyendo Pascal, C e incluso COBOL (aunque no en mucho tiempo para eso).

Creo que lo vi por primera vez en una clase de Ken Orr. Mi versión también es muy similar a tener una regla de fuera de juego (similar a Python y F #) donde puedes usar sangría para mostrar el anidamiento.

De todos modos, así es como hago el ejemplo:

begin if x = y then begin (* stack to avoid getting too much indentation *) ... ... end else for i := 0 to 20 do begin ... ... end; end;

y sí, el sabor C / C ++ / Java / C # sería algo así como

{ if (x == y) { ... /* Space as if ''then'' is there */ ... } else for (int i = 0; i<21; i++) { ... /* space as if ''do'' is there */ ... } }

Yo uso esto mucho. Podrías apilar {y} de la misma forma en que comencé y terminé, pero me parece más agradable poder ver hacia abajo un borde y confirmar los paréntesis correspondientes y el final del grupo sangrado. Varío para evitar que la sangría sea excesiva y para evitar tener demasiados "{" y "}" solos en un mar de espacios en blanco.

Yo no evangelizo esto. Nadie se ha quejado de poder leerlo. Poner "{" al final de una línea parece una retención de los preprocesadores de Ratfor y tal, más o menos como Python requiere el ("más agradable") ":" en algunos lugares. No quiero tener que escanear el borde derecho por el código cuando puedo usar la alineación en los bordes izquierdos de manera más útil.

Como decimos por aquí, YMMV


Incluso si se trata de una única declaración dentro de if , siempre uso el begin-end compuestos para evitar confusiones futuras.
También puse // if después de cada end; .

if A < B then begin DoSomething; end; // if

Lo mismo para otras declaraciones:

with qryTemp do begin First; while not Eof do begin if (A < B) or (C < D) begin DoSomething; end else begin DoSomethingElse; end; // if-else Next; end; // while end; // with

Para C #, sigo las convenciones de código para las declaraciones compuestas de estilo del lenguaje de programación Java .

if (condition) { statements; } // if

if ((condition1 && condition2) || (condition3 && condition4) ||!(condition5 && condition6)) { doSomethingAboutIt(); } else { doSomethingElse(); } // if-else

Tanto para Delphi como para C #, los operadores lógicos de conexión se encuentran al comienzo de la siguiente línea.


Soy un programador de fin de semana así que, siendo el único que trabaja en los proyectos, me puedo permitir no seguir una convención de codificación específica, suerte.

Cuando se trata de la legibilidad del código, el resaltado estructural de Castalia es muy útil. CnPack tiene una característica similar es que no estoy confundiendo.



Hah! ¡Toma esto! ;)

try if Condition1 or ( Condition2 and Condition3) then begin DoSomething DoSomeMore; end else if Condition4 then // I only do this if the nested "if" has "case"-like characteristics begin // otherwise the if would obviously be indented and on its own line DoSomethingElse; if Condition5 then begin DoThisToo; DoFoo; end; end else DoTheWholeShebang; case Whatever of A: DoIt; B, C, D: begin DoSomethingSlightly; MoreComplicated; end; else begin DoWhatever; DoLastResort; end; end; except on ESomeException do begin HandleIt; raise; end; on ESomeOtherException do DealWithIt; else DoWhateverItTakes; end;

Aunque parezca extraño, cuando escribo en idiomas con llaves, también prefiero el diseño del parlante posterior:

if (condition) { doSomething; } else { doSomethingElse; }


Solo deja que tu IDE te guíe en la mayoría de los casos.


Encuentro que el código es más legible cuando las palabras clave (clave, tanto sintáctica como lógicamente) están expuestas tanto como sea posible.

Esto es tan importante para mí que a veces recurro a (IMO) algo bastante poco convencional.

Esto es lo que se obtiene:

if (condition) then begin statement; ... statement; end else begin ... end;

Lo admito, esto puede hacer que sea un poco menos conveniente modificar el código. Es solo que encuentro el end ''colgando'' en el medio de una declaración if , y alineado igual que el if , algo confuso. Si es end , debe ser el final (para el enunciado); de lo contrario, espero cualquier else o el comienzo de la siguiente declaración en esa posición.

Y generalmente no lo dejo cuando el bloque está compuesto, pero el else es una sola declaración. Esto nunca es gran cosa conmigo para invertir la condición y reorganizar los bloques. Aún más, ya que soy bastante cerrado cuando se trata de envolver una sola declaración con begin ... end s. Desde mi punto de vista y experiencia, la mayoría de los "comienzos finales son redundantes" al principio y al final más a menudo que no. Aunque me gusta cuando un enunciado tiene una palabra clave de finalización explícita, entonces el case y la repeat son mis favoritos de todos los tiempos. :)

Una cosa más acerca de if s (y while ) es que en el caso de una condición de varios pisos, tiendo a colocar then ( do ) en la siguiente línea y alinearla en la palabra clave inicial de la declaración.

Me gusta esto:

if (some_long_conditional_expression) or (some_other_long_conditional_expression) or (some_even_longer_conditional_expression) then Exit;

Además, hay algunas otras cosas ya mencionadas aquí de las que no soy extranjero, como las de una sola línea else if s (cuando corresponda) o for ... do with ... do try (s, sí, esto de nuevo puede tener algo que ver con hacer con mi naturaleza apretada-fisting mencionada anteriormente).

En general, probablemente dependa demasiado del resaltado y sangría del código, especialmente este último. Tal vez si no fuera por la sangría, preferiría siempre destacar los begin .

Otro punto: el estilo de formateo de alguien muy probablemente sea causado por su estilo de programación. Al igual, algunas personas odian rutinas muy grandes y tienden a factorizar siempre que sea posible, mientras que otros prefieren concentrarse en el código y no importar los bloques compuestos que abarcan la pantalla. Encuentro que estos enfoques son muy diferentes, lo que puede dar lugar a hábitos de formato diferentes. .


Hace algún tiempo utilicé

if <cond> then begin ShowMessage(''balablala''); exit; end;

Pero ahora sigo el estándar por el

if <cond> then begin ShowMessage(''balablala''); exit; end;

Como en la guía de estilo de Object Pascal


Yo personalmente uso:

if Condition then begin DoThis; end else begin DoThat; end;

Ver la Guía de estilo de Object Pascal .

En las sentencias if compuestas, coloque cada elemento separando enunciados en una nueva línea: Ejemplo:

// INCORRECT if A < B then begin DoSomething; DoSomethingElse; end else begin DoThis; DoThat; end; // CORRECT if A < B then begin DoSomething; DoSomethingElse; end else begin DoThis; DoThat; end;

Aquí hay algunas variaciones más que se consideran válidas:

// CORRECT if Condition then begin DoThis; end else begin DoThat; end; // CORRECT if Condition then begin DoThis; end else DoSomething; // CORRECT if Condition then begin DoThis; end else DoSomething;