Red de conocimiento informático - Conocimiento informático - Cómo leer el código fuente", no hay mejor manera que leer el código. 7. Cuando busque errores, analice el código desde la manifestación del problema hasta la causa raíz. No seguir rutas irrelevantes. 8. Necesitamos hacer un uso completo del depurador | el compilador proporciona advertencias o genera código simbólico | rastreador de llamadas al sistema | mecanismo de registro de lenguaje de consulta estructurado | 9. Un sistema grande bien organizado requiere sólo la comprensión más básica de su funcionalidad completa para modificarlo. 10. Al agregar nueva funcionalidad al sistema, la primera tarea es encontrar el código que implemente una funcionalidad similar y usarlo como código. Plantillas para implementar nuevas funciones. 11. Desde la descripción de la función hasta la implementación del código, el código se puede buscar mediante información de cadena o mediante palabras clave. 12. Al transferir código o modificar interfaces, el compilador se puede utilizar para localizar directamente el alcance del problema. reducir la lectura de código. 13. Al refactorizar, debe comenzar con un sistema que funcione y asegurarse de que el sistema seguirá funcionando correctamente después de completar la refactorización. 14. Al leer el código para encontrar oportunidades de refactorización, debe comenzar. con la arquitectura del sistema y mejorarla paso a paso para obtener el máximo beneficio 15. La reutilización del código es muy tentadora, pero es difícil de entender y separar. Intente encontrar paquetes más detallados o incluso otros códigos. sistema de software, es importante tener en cuenta que el sistema se compone de muchas partes, no solo declaraciones de ejecución. También es importante analizar lo siguiente: Estructura de archivos y directorios | Proceso de construcción y configuración | Interfaz de usuario y documentación del sistema 18.18. revisiones de software como una oportunidad para aprender, enseñar, dar y recibir ayuda ++++++++++++++++++ Capítulo 2: Elementos esenciales de programación +++++++. +++++++++ 19. Al analizar un programa por primera vez, puede comenzar desde el programa principal 20. La secuencia en cascada if-else if-...-else puede verse como compuesta entre sí 21. A veces, para comprender cómo se comporta un programa de una manera específica, puede ser más apropiado ejecutar el programa que leer el código fuente. 22. Al analizar un programa importante, es mejor identificar primero su importancia. componentes. Comprender las convenciones de nomenclatura locales y utilizarlas para adivinar el propósito funcional de variables y funciones. 24. Al modificar el código basándose en conjeturas, debe diseñar un proceso para verificar las suposiciones iniciales. | o ejecución. Casos de prueba apropiados. 25. Comprender una parte del código puede ayudar a comprender el resto del código. 26. Comience con las partes fáciles para resolver el código difícil. encontrarlo; mejorará su capacidad para leer y escribir código 28. Existen varias estrategias alternativas para leer código: análisis ascendente y descendente, aplicación de métodos de prueba, verificación de comentarios y documentación externa, todas las cuales deben basarse en. El problema hay que intentarlo. for (i=0; i 30. Una expresión de comparación que involucra dos pruebas de desigualdad, una de las cuales contiene una condición de igualdad, puede considerarse una prueba de pertenencia a un intervalo. 31. A menudo podemos aplicar la expresión a datos de muestra para comprender su significado. 32. Usar la ley de DeMorgan para simplificar expresiones lógicas complejas 33. Al leer una expresión de multiplicación lógica, la pregunta puede asumir que la expresión en el lado izquierdo de la expresión que se analiza es verdadera; de manera similar, cuando se lee una expresión de suma lógica, puede serlo; Se supone que la expresión en el lado izquierdo de la expresión analizada es falsa 34. Reorganice el código de control para hacerlo más legible 35. 35. Interprete expresiones usando el operador condicional: expresión como si fuera código. de legibilidad 37. Los algoritmos eficientes y las optimizaciones especiales pueden hacer que el código sea más complejo y, por lo tanto, más difícil de entender, pero esto no significa que hacer el código más compacto y menos legible mejorará la eficiencia. mejorar la legibilidad del código 39. Podemos usar espacios | variables temporales y corchetes para mejorar la legibilidad de las expresiones 40. Al leer el código que controlas, adquiere el hábito de agregar hábitos. de programas mal escritos mediante una buena sangría y una elección juiciosa de los nombres de las variables.

Cómo leer el código fuente", no hay mejor manera que leer el código. 7. Cuando busque errores, analice el código desde la manifestación del problema hasta la causa raíz. No seguir rutas irrelevantes. 8. Necesitamos hacer un uso completo del depurador | el compilador proporciona advertencias o genera código simbólico | rastreador de llamadas al sistema | mecanismo de registro de lenguaje de consulta estructurado | 9. Un sistema grande bien organizado requiere sólo la comprensión más básica de su funcionalidad completa para modificarlo. 10. Al agregar nueva funcionalidad al sistema, la primera tarea es encontrar el código que implemente una funcionalidad similar y usarlo como código. Plantillas para implementar nuevas funciones. 11. Desde la descripción de la función hasta la implementación del código, el código se puede buscar mediante información de cadena o mediante palabras clave. 12. Al transferir código o modificar interfaces, el compilador se puede utilizar para localizar directamente el alcance del problema. reducir la lectura de código. 13. Al refactorizar, debe comenzar con un sistema que funcione y asegurarse de que el sistema seguirá funcionando correctamente después de completar la refactorización. 14. Al leer el código para encontrar oportunidades de refactorización, debe comenzar. con la arquitectura del sistema y mejorarla paso a paso para obtener el máximo beneficio 15. La reutilización del código es muy tentadora, pero es difícil de entender y separar. Intente encontrar paquetes más detallados o incluso otros códigos. sistema de software, es importante tener en cuenta que el sistema se compone de muchas partes, no solo declaraciones de ejecución. También es importante analizar lo siguiente: Estructura de archivos y directorios | Proceso de construcción y configuración | Interfaz de usuario y documentación del sistema 18.18. revisiones de software como una oportunidad para aprender, enseñar, dar y recibir ayuda ++++++++++++++++++ Capítulo 2: Elementos esenciales de programación +++++++. +++++++++ 19. Al analizar un programa por primera vez, puede comenzar desde el programa principal 20. La secuencia en cascada if-else if-...-else puede verse como compuesta entre sí 21. A veces, para comprender cómo se comporta un programa de una manera específica, puede ser más apropiado ejecutar el programa que leer el código fuente. 22. Al analizar un programa importante, es mejor identificar primero su importancia. componentes. Comprender las convenciones de nomenclatura locales y utilizarlas para adivinar el propósito funcional de variables y funciones. 24. Al modificar el código basándose en conjeturas, debe diseñar un proceso para verificar las suposiciones iniciales. | o ejecución. Casos de prueba apropiados. 25. Comprender una parte del código puede ayudar a comprender el resto del código. 26. Comience con las partes fáciles para resolver el código difícil. encontrarlo; mejorará su capacidad para leer y escribir código 28. Existen varias estrategias alternativas para leer código: análisis ascendente y descendente, aplicación de métodos de prueba, verificación de comentarios y documentación externa, todas las cuales deben basarse en. El problema hay que intentarlo. for (i=0; i 30. Una expresión de comparación que involucra dos pruebas de desigualdad, una de las cuales contiene una condición de igualdad, puede considerarse una prueba de pertenencia a un intervalo. 31. A menudo podemos aplicar la expresión a datos de muestra para comprender su significado. 32. Usar la ley de DeMorgan para simplificar expresiones lógicas complejas 33. Al leer una expresión de multiplicación lógica, la pregunta puede asumir que la expresión en el lado izquierdo de la expresión que se analiza es verdadera; de manera similar, cuando se lee una expresión de suma lógica, puede serlo; Se supone que la expresión en el lado izquierdo de la expresión analizada es falsa 34. Reorganice el código de control para hacerlo más legible 35. 35. Interprete expresiones usando el operador condicional: expresión como si fuera código. de legibilidad 37. Los algoritmos eficientes y las optimizaciones especiales pueden hacer que el código sea más complejo y, por lo tanto, más difícil de entender, pero esto no significa que hacer el código más compacto y menos legible mejorará la eficiencia. mejorar la legibilidad del código 39. Podemos usar espacios | variables temporales y corchetes para mejorar la legibilidad de las expresiones 40. Al leer el código que controlas, adquiere el hábito de agregar hábitos. de programas mal escritos mediante una buena sangría y una elección juiciosa de los nombres de las variables.

42. Cuando se utiliza el programa diff para analizar el historial de revisión de un programa, si el historial abarca todo el proceso de sangría, generalmente puede especificar la opción -w para que diff pueda ignorar las diferencias de espacios en blanco y evitar el ruido causado por los cambios en la sangría. jerarquía. 43. El cuerpo del bucle do se ejecuta al menos una vez. 44. Al realizar operaciones aritméticas, cuando b=2n-1, a&b puede interpretarse como a%(b+1). 45. Interprete a<>n como a/k, k=2n. Analice una estructura de control a la vez, tratando su contenido como una caja negra. 48. Analice cada estructura de control como una caja negra. 48. Piense en la expresión de control de cada estructura de control como una afirmación del código que contiene. 49. Las declaraciones y excepciones de retorno, ir a, interrumpir y continuar pueden afectar el flujo de ejecución estructurada. Dado que estas declaraciones normalmente terminan o reinician un ciclo en curso, su comportamiento debe razonarse por separado. 50. Razonar sobre bucles utilizando sus variantes e invariantes. 51. Reorganizar el código usando transformaciones que preserven el significado para simplificar el razonamiento sobre el código. +++++++++++++++++++ Capítulo 3: Tipos de datos C avanzados++++++++++++++++++++ 52. Comprender las funciones de estructuras de lenguaje específicas para comprender mejor el código que utiliza esas estructuras. 53.53. Identificar y clasificar las razones para utilizar punteros. 54. En los programas en lenguaje C, los punteros se utilizan generalmente para construir estructuras de datos encadenadas, asignar dinámicamente estructuras de datos, implementar llamadas de referencia, acceder y recorrer elementos de datos, pasar parámetros de matriz, funciones de referencia, actuar como alias para otros valores, representar cadenas y Acceso directo a la memoria del sistema. 55. Los parámetros pasados ​​por referencia se pueden utilizar para devolver el resultado de una función o para evitar la sobrecarga de copiar parámetros. 56. Se puede utilizar un puntero a la dirección de un elemento de matriz para acceder a un elemento en una posición de índice específica. 57. Los punteros a elementos de matriz y los índices de matriz correspondientes tienen la misma semántica para ambas operaciones. 58. Las funciones que utilizan variables globales o variables locales estáticas no son reentrantes en la mayoría de los casos. 59. Los punteros de caracteres son diferentes de las matrices de caracteres. 60. Identifique y categorice cada motivo para aplicar estructura o usuario ****. 61. Las estructuras en lenguaje C combinan múltiples elementos de datos para usarse en su conjunto, devolviendo así múltiples elementos de datos de funciones | Construcción de estructuras de datos encadenadas | Mapeo de datos en dispositivos de red Organización de medios de almacenamiento | de forma orientada a objetos. 62.*** Los usuarios utilizan programas en C para optimizar el uso del espacio de almacenamiento | implementar polimorfismo | acceder a diferentes representaciones internas de datos. 63. Cuando un puntero se inicializa en N elementos de almacenamiento, se puede utilizar como una matriz que contiene N elementos. 64. Los bloques asignados dinámicamente pueden ser liberados por el soldador, al final del programa, o por el recolector de basura. Los bloques asignados en la pila se liberan cuando sale la función que los asignó; Los programas 65.C utilizan declaraciones de definición de tipos para promover la abstracción y mejorar la legibilidad del código, evitando así problemas de portabilidad e imitando el comportamiento de declaración de clases de C++ y Java. 66. La declaración de definición de tipo puede considerarse como la definición de una variable: el nombre de la variable es el nombre del tipo; el tipo de la variable es el tipo correspondiente al nombre. +++++++++++++++ Capítulo 4: Estructuras de datos C +++++++++++++++ 67. Comprender los datos explícitos en términos de tipos de datos abstractos subyacentes Operaciones estructurales . 68.68. En C, los vectores normalmente se implementan utilizando tipos de matrices integrados sin abstraer la implementación subyacente. 69. Se puede ordenar una matriz de N elementos para (i=0; i 70. La expresión sizeof(x) siempre obtendrá el número correcto de bytes necesarios para procesar la matriz x (no un puntero) usando memset o memcpy. 71.71 El intervalo generalmente está representado por el primer elemento dentro del intervalo y el primer elemento después del intervalo 72. El número de elementos en el intervalo asimétrico es igual a la diferencia entre el límite alto y el límite bajo 73. límite del intervalo asimétrico Cuando es igual al límite inferior, el intervalo está vacío.