sql >> Base de Datos >  >> RDS >> Access

Hermosos bloques de repetitivo

En mi artículo, The ArrowKeyNav Routine, presenté un Sub que puede usar para anular el manejo predeterminado de las teclas de flecha hacia arriba y hacia abajo en un formulario continuo. El problema con la rutina tal como la presenté es que debe llamarla desde todos los controles en los que desea anular la funcionalidad de la tecla de flecha.

Esto es lo que podría verse en un módulo de formulario:

Private Sub cbSupplierID_KeyDown(KeyCode As Integer, Shift As Integer)
    ArrowKeyNav KeyCode, Shift
End Sub

Private Sub chkDiscontinued_KeyDown(KeyCode As Integer, Shift As Integer)
    ArrowKeyNav KeyCode, Shift 
End Sub

Private Sub tbID_KeyDown(KeyCode As Integer, Shift As Integer)
    ArrowKeyNav KeyCode, Shift
End Sub

Private Sub tbListPrice_KeyDown(KeyCode As Integer, Shift As Integer)
    ArrowKeyNav KeyCode, Shift
End Sub

Private Sub tbProductCode_KeyDown(KeyCode As Integer, Shift As Integer)
    ArrowKeyNav vbKeyDown, Shift
End Sub

Private Sub tbProductName_KeyDown(KeyCode As Integer, Shift As Integer)
    ArrowKeyNav KeyCode, Shift
End Sub

Hay un par de formas de reducir la cantidad de código repetitivo que necesitamos en esta situación, pero lo dejaremos de lado para los fines de este artículo. Entonces, por el bien del argumento, supongamos que no hay forma de reducir la cantidad de código. Dada esa restricción, ¿cómo podemos aumentar la legibilidad del código anterior?

Unir líneas de código con el carácter de dos puntos

Podemos unir múltiples líneas de código usando el carácter de dos puntos (: ).

se utiliza como elemento terminal de la gramática sintáctica para nombrar el token que actúa como un marcador de "fin de declaración". En general, el final de la instrucción se marca con un o un carácter de dos puntos. .

Mejorar la legibilidad al unir líneas

Esta técnica es algo que debes usar con cuidado. Pero, si se usa con prudencia, puede aumentar la legibilidad de su código.

En el código de muestra anterior, cada Sub llama exactamente al mismo código:

ArrowKeyNav KeyCode, Shift

En realidad, eso no es cierto. Si observa detenidamente, verá que tbProductCode_KeyDown() la rutina pasa vbKeyDown en lugar de KeyCode como primer argumento.

Sin embargo, es fácil pasar por alto esta diferencia con el formato VBA estándar:

Hacer que el código incorrecto parezca incorrecto

Si unimos las líneas usando dos puntos y ajustamos el espacio en blanco para que todas nuestras llamadas a ArrowKeyNav están alineados a la izquierda, entonces la inconsistencia que se mezcla arriba se destaca como un pulgar dolorido en el código a continuación:

Cuando se ve en el contexto de funciones y subrutinas normales, nuestro bloque de código repetitivo claramente se destaca. Esta distinción ayuda a aumentar la relación señal/ruido de nuestro código: