Metodologias de programação - depuração
Identificar e remover erros de um programa ou software é chamado debugging. A depuração é idealmente parte do processo de teste, mas na realidade é feita em todas as etapas da programação. Os codificadores devem depurar o menor de seus módulos antes de prosseguir. Isso diminui o número de erros gerados durante a fase de teste e reduz significativamente o tempo e o esforço do teste. Vejamos os tipos de erros que podem surgir em um programa.
Erros de sintaxe
Syntax errorssão os erros gramaticais em um programa. Cada linguagem tem seu próprio conjunto de regras, como criar identificadores, escrever expressões, etc. para escrever programas. Quando essas regras são violadas, os erros são chamadossyntax errors. Muitos modernosintegrated development environmentspode identificar os erros de sintaxe conforme você digita seu programa. Caso contrário, será mostrado quando você compilar o programa. Vamos dar um exemplo -
Neste programa, a variável prod não foi declarada, o que é gerado pelo compilador.
Erros Semânticos
Semantic errors também são chamados logical errors. A instrução não tem erros de sintaxe, portanto, será compilada e executada corretamente. No entanto, ele não dará a saída desejada porque a lógica não está correta. Vamos dar um exemplo.
Observe a linha 13. Aqui o programador deseja verificar se o divisor é 0, para evitar a divisão por 0. No entanto, em vez de usar o operador de comparação ==, o operador de atribuição = foi usado. Agora, toda vez que a expressão “if” for avaliada como verdadeira e o programa dará saída como “Você não pode dividir por 0”. Definitivamente não era o que se pretendia !!
Erros lógicos não podem ser detectados por nenhum programa; eles têm que ser identificados pela própria programadora quando a saída desejada não é alcançada.
Erros de tempo de execução
Os erros de tempo de execução são erros que ocorrem durante a execução do programa. Isso significa que o programa não tem erros de sintaxe. Alguns dos erros de tempo de execução mais comuns que seu programa pode encontrar são -
- Loop infinito
- Divisão por '0'
- Valor incorreto inserido pelo usuário (digamos, string em vez de inteiro)
Otimização de Código
Qualquer método pelo qual o código é modificado para melhorar sua qualidade e eficiência é chamado code optimization. Code qualitydetermina a vida útil do código. Se o código pode ser usado e mantido por um longo período de tempo, transportado de produto para produto, sua qualidade é considerada alta e tem uma vida mais longa. Ao contrário, se um trecho de código pode ser usado e mantido apenas por curtos períodos, digamos até que uma versão seja válida, ele é considerado de baixa qualidade e tem vida curta.
A confiabilidade e a velocidade de um código determinam code efficiency. A eficiência do código é um fator importante para garantir o alto desempenho de um software.
Existem duas abordagens para otimização de código -
Intuition based optimization (IBO)- Aqui o programador tenta otimizar o programa com base em sua própria habilidade e experiência. Isso pode funcionar para programas pequenos, mas falha terrivelmente à medida que a complexidade do programa aumenta.
Evidence based optimization (EBO)- Aqui, ferramentas automatizadas são usadas para descobrir gargalos de desempenho e, em seguida, as partes relevantes são otimizadas de acordo. Cada linguagem de programação tem seu próprio conjunto de ferramentas de otimização de código. Por exemplo, PMD, FindBug e Clover são usados para otimizar o código Java.
O código é otimizado para tempo de execução e consumo de memória porque o tempo é escasso e a memória cara. Tem que haver um equilíbrio entre os dois. E setime optimization aumenta a carga na memória ou memory optimization torna o código mais lento, o propósito da otimização será perdido.
Otimização do tempo de execução
Otimizar o código para o tempo de execução é necessário para fornecer um serviço rápido aos usuários. Aqui estão algumas dicas para otimização do tempo de execução -
Use comandos que possuem otimização de tempo de execução integrada
Use switch em vez da condição if
Minimize chamadas de função dentro de estruturas de loop
Otimize as estruturas de dados usadas no programa
Otimização de Memória
Como você sabe, dados e instruções consomem memória. Quando dizemos dados, também se refere a dados provisórios que são o resultado de expressões. Também precisamos manter um registro de quantas instruções estão compondo o programa ou módulo que estamos tentando otimizar. Aqui estão algumas dicas paramemory optimization -
Use comandos com otimização de memória embutida
Manter o uso de variáveis que precisam ser armazenadas em registros no mínimo
Evite declarar variáveis globais dentro de loops que são executados muitas vezes
Evite usar funções intensivas de CPU, como sqrt ()