Benshark se dedicó al desarrollo del programa en enero de 2003 y ha estado trabajando durante 19 meses. Entre ellos, el trabajo de manera intermitente se debe a las cosas de mala calidad desarrolladas por la propia falta de experiencia, lo que lleva a dificultades de errores y empleo. Ahora Bensha ha alcanzado la capacidad de un programador calificado.
En términos generales, la tarea de desarrollo para los programadores recién graduados es solo un módulo en un subproyecto en un proyecto. Un módulo tiene casi 5-6 formularios con un volumen de código de aproximadamente 2,000 líneas. De hecho, esta cantidad de tareas no es tan buena como el diseño de graduación, por lo que debería poder completarse, pero el tiempo de desarrollo es relativamente pequeño, aproximadamente 6-12 días hábiles, en lugar de 1-2 meses en la escuela, y También hay compañeros de clase para ayudar. Por lo tanto, es competente en las herramientas de desarrollo de los desarrolladores, la sintaxis, los marcos y las bibliotecas. Además, puede comprender el mecanismo de operación de la plataforma del sistema y los requisitos de algoritmo y saber qué está sucediendo. Se requiere que los programadores puedan trabajar activamente en lugar de pasivamente. Puede tomar la iniciativa de encontrar información, solicitar a sus colegas y solicitar a los colegas que brinden asistencia con tareas desconocidas.
Este tiburón se dedica principalmente a las tareas de desarrollo de la recepción del sistema de bases de datos, por lo que utiliza principalmente componentes de la base de datos comunes para ilustrar que las tareas de la recepción del sistema de datos son más pesadas y siempre son criticadas por los usuarios.
En general, los pasos de desarrollo de este tiburón son:
0 Comprender los requisitos de la tarea
1. Implementar la función primero
2. Resolver el manejo de excepciones de la función
3. Lograr la facilidad de uso
4 Resolver la facilidad de uso
¡El problema de rendimiento se dejará al usuario para resolverlo si el volumen de datos es grande en el futuro! En la actualidad, es importante ponerse al día con la tarea. Los siguientes componentes se usan comúnmente
Tedit tcomboBoBox tlistview ttreeview tchecklistbox tlabel tdbgrid Timage tmemo tbutton tdbchart tpanel tmaskedit tdateTiMepicker tpageControl
1. Estilo de código. .
Configuración de atributos de 2 componentes
1 tlabel: autosize = flase;
2 TEDIT Establecer el valor del método de entrada de valor predeterminado del valor MaxLength
3 TCOMBOBOX Si solo se permite la selección, estilo: = csdropdownList;
Al agregar datos a sus elementos
FontCombo-> elementos-> beginupdate ();
Fontcombo-> elementos-> add ("xxx");
Fontcombo-> elementos-> endupdate ();
No importa cuántos datos TLISTVIEW TTREEVIEW TDBGIRD tenga funciones de bloqueo de visualización de datos similares.
4 ttreeview Si no modifica el texto del nodo, debe readonly showselect = true;
5 tlistView ViewStyle vsReportReadonly showselect = verdadero;
6 tpageControl pageControl1.activePageIndex: = 0;
7 tdateTiMepicker dateFormat: = dflong si el tiempo se copia para editar
Edit.text: = dateTimeFormate ("yyyy-mm-dd", DateTiMepicker1.Date)
8 Tbutton para establecer Cancelar ModalResult Sugerencia
3 componentes con el mismo diseño de interfaz deben colocarse juntos y alinearse con los alrededores, arriba, abajo, izquierda y derecha. contenedor de padres, y finalmente dárselo a la gente.
Detalles del diseño de la interfaz
1): Use el marco para marcar los botones que completen las mismas funciones o similares, y los botones de uso común deben admitir accesos directos.
2): Los elementos que completan la misma función o tarea se colocan en una posición centralizada para reducir la distancia del movimiento del ratón.
3): Divida los bloques locales de la interfaz de acuerdo con la función, encerrarlos con un cuadro de cuadro y tener una descripción o título de la función.
4): La interfaz debe admitir la función del botón de navegación automática del teclado, es decir, la función de conmutación automática de presionar la tecla Tab.
5): Los controles que primero deben ingresar y la información importante en la interfaz debe estar frente al orden de pestaña, y también deben colocarse en una posición más conspicua en la ventana.
6): Es mejor no exceder los 10 controles en la misma interfaz.
7): La interfaz de paginación debe admitir un cambio rápido entre páginas, y las teclas de acceso directo de combinación de combinación de uso común CTRL+pestaña
8): El botón predeterminado debe admitir las operaciones Enter y seleccionar, es decir, después de presionar ENTER, las operaciones correspondientes del botón predeterminado se ejecutan automáticamente.
9): Después de que el control de escritura detecta la entrada ilegal, la descripción se debe administrar y el enfoque se puede obtener automáticamente.
10): El orden de las teclas de pestaña y el orden de los controles deben ser consistentes.
11): Las casillas de verificación y las casillas de opción se organizan una tras otra de acuerdo con el fondo alto de la probabilidad de selección.
12): Las casillas de verificación y las casillas de opción deben tener opciones predeterminadas y la selección de pestañas de soporte.
13): Cuando el número de opciones es el mismo, use el cuadro de opción en lugar del cuadro de lista desplegable.
14): Use el cuadro desplegable en lugar de la caja de opción cuando el espacio de la interfaz es pequeño.
15): Cuando el número de opciones se llama pequeño, use el cuadro de opción, en su lugar, use el cuadro de lista desplegable.
16): El software con un fuerte profesionalismo debe usar términos profesionales relevantes, mientras que la interfaz universal aboga por el uso de palabras universales.
4 códigos
1 Inspección funcional: verifique si todas las funciones y restricciones requeridas por los requisitos están implementadas
2 Verificación de límite: Realice las verificaciones de límites en funciones como la entrada de diferentes tipos de datos o datos de diferentes rangos
3 Verificación de acceso ilegal: Pruebe si existe un error de acceso de memoria ilegal. El mensaje de error de referencia para determinar si pertenece a este tipo de error es similar:
"... no encontrado", "Índice de lista fuera de los límites ...", "Violación de acceso en la dirección ..."
4: Compruebe de orientación de información rápida: Ingrese cualquier caracteres a voluntad, incluidos los cuadros de edición, los cuadros de mesa y los cuadros de selección, incluidos los caracteres ingleses y chinos, pruebe si se causarán errores de acceso ilegal y se utilizarán los caracteres inaceptables. y consejos para ser guiados.
5 Inspección basada en la unidad: verifique si la descripción del encabezado de la unidad en esta unidad, la descripción de cada función y la descripción de la anotación son correctas. Instrucciones de citas: ¿hay citas adicionales?
// Especialmente, si el archivo de encabezado C ++ contiene innecesario incluir, se producirán problemas innecesarios para otras unidades.
De hecho, estas se llaman pruebas de cuello blanco y contenido de prueba unitaria. Si desea escribir el código de prueba de acuerdo con el libro de pruebas, ¡creo que todos los desarrolladores no lo quieren! Pero no funcionará, es fácil cometer errores y dificultar la entrega. Por lo tanto, es muy necesario comprender los métodos de prueba, estos métodos
Hay presentaciones de ingeniería de software en universidades, y también se deben tomar diseñadores de software. Siempre que escriba un programa, ¡tendrá cuidado de considerar qué errores pueden ocurrir en diferentes situaciones! Aunque las variables se utilizarán al implementar la función estarán vacías? ¿Es válido el valor? ¿Está desbordante? ¿Borra el espacio de la variable? ¿Es un requisito de caso? ¿Hay espacios al frente y después?
¡Estos juicios deben escribirse primero en la función y el comienzo del proceso!
if (treeView-> selected == null) // ¿La variable estará vacía?
luego regresa;
std :: vecotr <int> intarray; // ¿está desbordado?
if (intarray <= 0)
Luego regresa;
if (i <listView.Items-> Count) // ¿Se desborda y cruza el límite?
Editar-> text = listView-> elementos-Ítem [i] .caption;
Editar-> text.trim (); // ¿Hay algún espacio antes y después?
char a [10];
Memcpy (a, "/0", 10); // ¿Borra el espacio de la variable?
a [9] = 'i';
// La persona que usa su función escribe un bucle para llamar a la variable de su función traerá el último valor. ¡Las condiciones de juicio de la persona que llaman perderán su efecto!
if (name.trim () == "Delphi") entonces name = "BCB";
switch () {caso para romper;
5 Datos predeterminados, indicaciones, posicionamiento y amistad
Cuando se muestra la interfaz, los datos se mostrarán de forma predeterminada.
ComboBox1.Itemindex: = 0;
En términos generales, se editarán nuevas adiciones y modificaciones en un solo par usando una interfaz.当新增完后回到浏览界面时所有组件都要定位到刚刚新增的记录上,修改也如此。 Al eliminar, ubique el siguiente registro.
ListView y DBGird para que la función de clasificar haga clic en el título para subir/bajar por fecha de letra numérica
ListView y DBGird Cuando el enfoque de datos seleccionado se mueve en el botón, ¿qué fila está seleccionada actualmente? !
void __fastcall tFrmgather760 :: lvdatacustomDrawItem (tcustomListView *remitente, tlistitem *item, tcustomDrawState State, bool & defaultDraw) // Este código dibujará un fondo amarillo en la línea seleccionada
{
if (remitente-> seleccionado! = NULL)
if (item-> index == remitente-> seleccionado-> índice)
{
Remitente-> lienzo-> pincel-> color = clyellow;
Remitente-> Canvas-> font-> color = clblue;
}
}
Para las operaciones que generalmente superan los 2 segundos, debe estar en la función.
Tcursor Oldcursor;
OldCursor = pantalla-> cursor;
Pantalla-> cursor = CRSQLWAIT;
intentar{ . . . . . . } __ Finalmente {Screen-> cursor = OldCursor;}
procedimiento tForm1.FormKeydown (remitente: tobject; var key: word; shift: tshiftState);
Comenzar
if (shift = []) y (key = vk_return) luego // reemplazar la tecla de tabulación con Enter
Realizar (wm_nextdlgctl, 0, 0);
if key = vk_next entonces // presione Pageup Paggown para hacer la página de conmutación TPAGECONTROL
Comenzar
si pagecontrol.activePageIndex = pageControl.pageCount - 1 entonces
Pagecontrol.activePageIndex: = 0
demás
Pagecontrol.activePageIndex: = pageControl.activePageIndex + 1;
fin
de lo contrario si la tecla = VK_PRIR entonces
Comenzar
if PageControl.ActivePageIndex = 0 then
PageControl.ActivePageIndex := PageControl.PageCount - 1
demás
PageControl.ActivePageIndex := PageControl.ActivePageIndex - 1;
fin;
fin;
fin.
Intercambio de 6 botones
Cada vez que se complete una operación, algunos botones se volverán inválidos, y ¿en qué circunstancias se restaurarán a la validez? Aunque solo hay un párrafo, si no se establece ineficaz, ¡a menudo causará varios errores fatales! Debido a que no puede predecir cómo los usuarios operarán su software, ¡puede usar Rose para dibujar un diagrama de estado o usar Word para representarlo!
7 rendimiento
Cuando hay más de 100 datos, los componentes de visualización de datos, como ComboBox ListBox TreeView ListView DBGRID, se ingresan y consultan al ingresar.
Apoyar consultas difusas no es más que '%xxx%'.
void __fastcall tfrmgather760 :: edt_nameKeyPress (tobject *remitente, char & key)
{
if (key! = vk_return)
devolver;
Cadena ssql;
ssql = "Seleccione el nombre como nombre, ventas como ventas, del empleado";
ssql + = "donde nombre como '%" + minúscula (edt_name-> text.trim ()) + "%'";
TFRMPUBDLG *PUBDLG = new TFRMPUBDLG (this);
PUBDLG-> EXECUTEQuery (SSQL);
pubdlg-> showModal ();
.....
}
Otros 8
Al desarrollar un módulo, las unidades individuales y DFM se usan como unidades comunes. Hará una estructura de transmisión de caracteres en la unidad
Struct tableName
{
Nombre de cadena;
Cadena FILEDNAME;
......
} ;/ lo principal es mantener la consistencia en más unidades, especialmente cuando cambia el nombre de la tabla
std :: vector <tring> serrorarry // indicador de error unificado
Y el segmento de Delphi REOUCString puede ser recursos y más fácil de localizar
Al agregar y modificar, todas las verificaciones de datos se concentran bajo el botón Guardar
void __fastcall tform3 :: btn_saveclick (remitente)
{
if (edt_name-> text.isempty ())
{
ShowMessage ("");
Edit_name-> setFocus ();
devolver;
}
ModalResult = mROK;
}
La mayoría de los diseños de graduación de estudiantes en la escuela son bases de datos, como dos o tres capas. Debe hacer en serio el programa de diseño de graduación y gastar dinero para pedirle a sus compañeros de clase que lo ayuden a hacer la prueba y proponer más conveniencia operativa. Solo al pasar las pruebas de otras personas puede mejorarse, y la mayor parte del código es un manejo de excepciones y fácil de usar. Será muy fácil encontrar una buena compañía cuando busque trabajo con sus trabajos.
De hecho, cuando se dedica al desarrollo de la recepción de la base de datos, ¡lo importante es escribir un código fácil de usar!