Se considera una mala práctica para el uso de los dos puntos para poner dos declaraciones en la misma línea en Visual Basic?

  • Yo solía hacerlo en vb6 a cabo la declaración y la inicialización en la misma línea, pero ese problema se ha corregido en vbn.
InformationsquelleAutor | 2009-09-11

12 Comentarios

  1. 22

    No hay nada inherentemente malo con el uso de la coma para combinar instrucciones. Realmente depende del contexto, pero siempre que no reduzca la legibilidad, no hay nada de malo con ello.

    Como regla general me evite el uso de los dos puntos para este propósito. Me parece que es más legible para tener una instrucción por línea. Sin embargo, esto no es un signo de dos puntos específicos del problema. Puedo evitar hacer lo mismo con un semi-colon en C# o C++. Es sólo una cuestión de preferencia personal.

    • +1 de acuerdo. Yo lo hice en VB por más de 10 años, y ni siquiera yo saber, usted puede poner la de las declaraciones en la misma línea, separados por un punto y coma. Yo no haría esto a menos que las barras de desplazamiento vertical en mi equipo estaban rotos.
  2. 17

    Es una buena práctica en la moderación, porque a veces la legibilidad mejorada mediante la concatenación de dos líneas:

    • cuando las líneas son cortas y están íntimamente
      relacionados con
    • cuando las líneas son cortas y trivial

      Option Compare Database:  Option Explicit   ''My favorite!
      rsDataSet.Close:          Set rsDataSet= Nothing

    No hacerlo si:

    • duele la legibilidad.
    • se complica la depuración. Estructuras de Control tales como If...Then necesita para mantenerse limpio. Se le alegra que usted mantuvo es simple cuando es el momento de establecer un punto de interrupción.
    • se pone en peligro el futuro de la edición. A menudo se desea mantener las secciones portátil. Mover o reestructuración de un bloque de código es fácilmente obstaculizado los intentos de minimizar el código.
  3. 11

    En general, me gustaría aconsejar en contra de ella, como se hace para que las más ocupado de código.

    Sin embargo, para tareas simples, no hay nada de malo con ello. Por ejemplo:

    for i = 1 to 10: ProcessFoo(i): next

    Creo una línea como esta es lo suficientemente corto como para no causar confusión.

  4. 9

    Voy a tomar el otro lado. No me gusta densas líneas de código. Es más fácil descremada código cuando las líneas no se combinan.

    Combinación de instrucciones también hace que sea más fácil para crear funciones que todavía caben en una sola pantalla.

    No es un pecado mayor, simplemente no me gusta.

    Yo también no como una línea Si declaraciones.

  5. 8

    Para mí, usted no debería decir «nunca hagas así», debe decir «Si usted hace esto, un posible problema es tal y tal». A continuación, sólo sopesar los pros y los contras para ti. El pro es la brevedad/pocas líneas de código. A veces esto puede ayudar a mejorar la legibilidad. Por ejemplo, algunas personas lo utilizan para hacer vb.Net declaraciones:

    Dim x As Long: x = 1

    O esperar bucles:

    Do Until IE.ReadyState = READYSTATE_COMPLETE: DoEvents: Loop

    Pero, obviamente, usted realmente puede hacer que sea difícil para alguien demasiado:

    Public Sub DoYouKnowWhatThisDoes()
        MsgBox Example
    End Sub
    
    Private Function Example()
        Const s$ = "078243185105164060193114247147243200250160004134202029132090174000215255134164128142"
        Const w% = 3: Const l% = 42: Dim i%, r$: For i = 1 To l Step w: r = r & ChrW$(Mid$(s, i, w) Xor Mid$(s, i + l, w)): Next: Example = r
    End Function

    Otra razón práctica que es posible que no desee utilizar este enfoque es que los puntos de interrupción. Los puntos de interrupción sólo puede ser definido por la línea. Así que si usted tiene varias cosas que se ejecutan en la misma línea, no se puede aislar la segunda cosa. Se detendrá en la primera instrucción. (Esta es también una de las razones por las cuales algunas personas no les gusta sola línea de ifs.) Sólo complica la depuración un poco.

    Yo normalmente no uso de los dos puntos en el código de producción, por esta razón. Sin embargo he de hacer uso de ellos para mejorar la brevedad de «copiar/pegar» el código que he puesto en los foros y en otros lugares. YMMV:)

    • +1 para el ejemplo 🙂
  6. 5

    Me doy cuenta de que esta es una muy vieja pregunta, pero fue el primer resultado de mi búsqueda de Google, así que espero que yo pueda ser perdonado para repicar en aquí.

    Hay una situación (exactamente lo que me llevó aquí, de hecho) en que este enfoque no es sólo útil, es la única manera de lograr el resultado deseado: la ventana Inmediato. Cualquier código que se desea ejecutar en la ventana Inmediato debe ser en una línea. Así, en orden de uso de cualquier forma de Hacer, Case, For, while, o en la ventana Inmediato, usted tendrá que utilizar los dos puntos.

    • De nuevo la vieja pregunta, pero ya que este es un nuevo tipo de respuesta voy a publicar un nuevo comentario. Yo rara vez uso el : en el código, pero me pareció que era muy útil para lidiar con este error: support.microsoft.com/kb/327244 he utilizado el : de la siguiente manera: Me.ComboBox.SelectedItem = Nothing : Me.ComboBox.SelectedItem = Nothing yo hubiera puesto que en dos líneas, pero es más sencillo de leer todo en una línea y tiene sentido, ya que fue la repetición de una declaración.
  7. 4

    Se es considera una mala práctica en la mayoría de los sitios en los que he trabajado. Y por la mayoría de la VB desarrolladores con los que he trabajado. Y en mi cabeza. Si yo lo veo, tengo que admitir que estoy casi seguro que esto cambie. Digo «casi» porque he de admitir que existe una posibilidad de que pudiera encontrar un pedazo de código que se veía mejor de esa manera. No espero a ver en mi vida, aunque.

    También me gustan de una línea **If**s bien.

    Tanto es más probable la resaca de los días de la VGA (640×480) monitores; eso no es excusa en estos días.

  8. 4

    Sólo la he utilizado cuando estoy clsoing un conjunto de registros y la configuración de la variable a la nada. I figura una línea en lugar de los dos me da más líneas de código en la pantalla y no en detrimento de la legibilidad.

    He visto que se usa en la selección simple de los casos, tales como los siguientes, pero que sería tan lejos como me gustaría ir.

     Select Case success
          Case ERROR_FILE_NO_ASSOCIATION: msg = "no association"
          Case ERROR_FILE_NOT_FOUND: msg = "file not found"
          Case ERROR_PATH_NOT_FOUND: msg = "path not found"
          Case ERROR_BAD_FORMAT:     msg = "bad format"

    de http://vbnet.mvps.org/index.html?code/system/findexecutable.htm

    Y aun así me he forrado el «msg =» porción.

    • ¿Alguna vez piensa en la persona con quién heredará su código? Han considerado que no puedo poner un punto de interrupción en el VBE IDE en la línea msg = «no hay asociación» sin causar modo de interrupción en cada caso?
    • Tu comentario es irrelevante en los dos únicos casos que he coloque dos staements en la misma línea.
    • Es muy relevante para el código que has publicado aquí!
    • <encogiéndose de hombros> Entonces estamos de acuerdo en estar en desacuerdo.
    • ¿Qué hemos estado en desacuerdo sobre? Que la colocación de dos declaraciones en la misma línea significaría que no puedo poner un punto de interrupción en la segunda instrucción. No es que inequívoco?
    • Para qué. Nunca poner un punto de interrupción en un Select simple Caso así.
    • Lo que si es un defecto había sido informado de que el mensaje «no hay asociación» se muestra de forma inesperada. Una búsqueda a través del código revela sino una instancia de esa frase. Así que me gustaría establecer un punto de interrupción en la línea. A ver a qué me refiero?
    • Por CIERTO, que tengo que hacer poner puntos de interrupción en Caso de declaraciones muy a menudo a la hora de mantener el legado de código VBA, por lo que este un punto de vista práctico nace de la experiencia de trabajar con otros desarrolladores, algunos de los que gustan de instrucciones de una sola línea.
    • Sus objeciones son extremadamente agotador para un punto menor. Pero hacer lo que te gusta.
    • Sé que esto es viejo, pero si me necesitan para depurar esa línea, como se sugiere, que acababa de ajustar el código con un par de pulsaciones, por lo que la asignación fue en otra línea y, a continuación, coloque el punto de interrupción no existe. O el uso de un punto de interrupción condicional. Esto no parece una gran cosa y el endurecimiento de los argumentos, sobre todo cuando hay un montón de ellos es muy valioso para el lector de flujo.

  9. 3

    Nunca he visto mencionado en una capacidad oficial en ninguna de las empresas que he trabajado. Pero yo creo que el uso de puntos y comas en exceso puede comenzar a hacer que el código sea más legible y más de un dolor de mantener.

    Tiendo a usar estos mí mismo, a veces, por ejemplo cuando la comprobación de cancelar en uno de mis últimos proyectos:

    If _bCancel Then Status = CancelProcess() : Return Status

    Poner esto en mantuve mi código legible que la alternativa SI el bloque.

    Pero puede ser tomado demasiado lejos, recientemente he heredado un proyecto que está repleta de ejemplos de la toma de colon uso demasiado lejos :

        Select Case GetStringValue(Index).Trim.ToLower
            Case "yes", "y" : GetBooleanValue = True
            Case "no", "n" : GetBooleanValue = False
            Case Else : GetBooleanValue = Nothing
        End Select

    Personalmente creo que el de arriba para ser un poco más.

  10. 0

    He visto que se usa en la clase de declaraciones, cuando el uso de la herencia o la implementación de una interfaz:

    Public Class DerivedClass : Inherits BaseClass
       ...
    End Class

    Pero como los demás, yo también desaconsejan su uso.

    Chris

    • que vb.net por supuesto. Y creo que tiene C# envidia, que es la razón por la que Hereda está en la misma línea que la de la Clase
  11. -1

    La respuesta a la pregunta es No. Cualquier cosa más allá de que No es puramente subjetivo y el derroche, independientemente de la respuesta fuera de un simple No. A continuación es mi desechos de escribir.

    Son algunos una especie de esclavo? Hacer lo que quiera. Usted es el centro de su universo, no un desconocido de StackOverflow. Si usted trabaja para una empresa, la pregunta es mudo porque el estilo de codificación ya estaría definido y completamente fuera de su control. Como para uno mismo, que en este universo se va para siempre en la eternidad mira le importa acerca de su código.

    Yo elegiría a sobre B. Como es evidente esto muestra que el propósito de un colon sin el uso de los dos puntos. Es para ahorrar espacio. A continuación se ahorra espacio y hace que el código mucho más legible. Mantiene Simple Estúpido. Mismo para ternario ? : de uso. Cuando el código es inherentemente complejo, a continuación, un signo de dos puntos, de una sola línea if then else, o ternario ya no debe ser considerado.

    '================================================================
    'A
    If somevalue1 = 0 Then AddLogTry("True") Else AddLogFalse("False")
    If somevalue2 = 0 Then AddLogTry("True") Else AddLogFalse("False")
    If somevalue3 = 0 Then AddLogTry("True") Else AddLogFalse("False")
    '================================================================
    
    '================================================================
    'B
    If somevlaue1 = 0 Then
      AddLogTrue("True")
    Else
      AddLogFalse("False")
    EndIf
    
    If somevlaue2 = 0 Then
      AddLogTrue("True")
    Else
      AddLogFalse("False")
    EndIf
    
    If somevlaue3 = 0 Then
      AddLogTrue("True")
    Else
      AddLogFalse("False")
    EndIf
    '================================================================

Dejar respuesta

Please enter your comment!
Please enter your name here