Lab C++

Codificação Eficiente

Não basta conhecer a sintaxe, é preciso conhecer a linguagem, saber a melhor forma de fazer.

Categoria: Dicas Profissionais

Atenção à Documentação

Já trabalhei em equipes que eram extremamente detalhistas, mas também trabalhei em equipes que praticamente não tinham documentação, nem mesmo funcional, ou mesmo manuais. Mas a falta de atenção a documentação pode causar problemas de qualidade e estabilidade em um sistema.

(mais…)

Argumentos da Linha de Comando – Parte 1: main()

Na plataforma MS Windows pouco se usa a linha de comando, mas C/C++ é muito utilizado para back end, e nesse caso a linha de comando é muito mais comum. Pra começar vamos entender como a linguagem C recebe as informações do sistema operacional. Vamos também entender quais cuidados temos que ter com argumentos de linha de comando.

(mais…)

Macro ou Função com Template?

Desde o C é comum utilizar macros para funções genéricas que podem executar a mesma operação em diversos tipos. Macros como MAX, MIN, AVG (média), dentre outros. Com C++11 é possível implementar juntamente com templates e inferência de tipo com typeinfo funcionalidades bem mais complexas.

(mais…)

Índice TIOBE e o Sobe-Desce da Linguagem C/C++

Índice TIOBE é um índice mensal holandês criado em 2002 que mede a popularidade das linguagens através de pesquisas automatizadas em diversas fontes, muito respeitado no meio de desenvolvimento, apesar de estar no centro de algumas controvérsias nos seus 18 anos de existência.

No mês de Out/2020 o índice indicou algumas tendências interessantes. A começar pela linguagem C, que continua relevante e se estabelecendo como linguagem mais relevante segundo o índice. Enquanto que a linguagem C++ vem se mantendo estável, porém desde 2018 vem consistentemente perdendo espaço para a linguagem Python. Veja o gráfico:

(mais…)

Declaração de Funções Old School

Pra uma linguagem de programação que nasceu em 1973 e rapidamente ganhou popularidade, falar de Old School significa voltar 40 anos atrás. Em mais de quatro décadas até a linguagem C evoluiu bastante, mas ainda assim existe muita coisa, principalmente em códigos antigos, ou em documentação antiga, que utiliza a sintaxe antiga de declaração de funções.

(mais…)

A Importância das Estruturas de Dados

Qualquer curso de desenvolvimento, seja curso livre, técnico, ou superior, começa a ensinar desenvolvimento ensinando algoritmos. Natural, uma vez que a maioria das pessoas não conhece como funciona código estruturado.

O que raramente é ensinado é a importância das estruturas de dados para o desenvolvimento de software, isso reflete em muitos projetos, muitas vezes profissional, que sofrem pela falta de estruturação dos dados.

(mais…)

Retorno de Ponteiro para Variável Local

Tá aí uma falha que pode causar problemas intermitentes e consequentemente muitas horas de desenvolvimento para corrigi-la. Vamos aprender a identificá-la e como evitar esse problema.

Abertura de Escopo

Tem muito programador C/C++ por aí que não sabe como abrir um escopo novo. Basicamente qualquer par de chaves abre um novo escopo em C/C++, e as variáveis ali declaradas somente tem validade dentro desse escopo. Em tempo de compilação isso serve para determinar a validade de cada variável.

(mais…)

Vazamento de Memória

Já trabalhei em várias equipes, algumas tinham um cuidado extremo com a gestão da alocação de memória, outras não se preocupavam tanto assim. Independente da atitude da equipe é importante saber como evitar vazamentos, e quais as consequências.

Para quem não sabe o que é vazamento de memória: é a manutenção de memória alocada dinamicamente após seu uso de forma que não possa ser recuperada, utilizada ou desalocada. O mesmo pode-se dizer de outros recursos. O programa funciona perfeitamente, porém em algum momento a memória acaba, e aí começam os problemas.

(mais…)

70% dos Bugs são de Gerenciamento de Memória

De acordo com uma notíca no ZDNet, uma estatística feita pelo Google indica que 70% das falhas de segurança do Google Chrome estão relacionadas com problemas de gerenciamento de memória. A Microsoft publicou resultados equivalentes em seus produtos.

Em ambos os casos a base de códigos predominante é C e C++, linguagens que não tem mecanismos de gestão de memória, deixando para o desenvolvedor a responsabilidade de gerenciar os ponteiros e as memórias.

Por isso a importância de se conhecer apropriadamente C e C++, e não simplesmente achar que sabendo a sintaxe sabe-se programar. Código de qualidade reduz o retrabalho, aumenta a segurança, e principalmente a estabilidade do programa desenvolvido.