Tenho uma sólida experiência em Java / Groovy e fui designado para uma equipe que mantém uma grande base de código C para um software administrativo.
Alguns pontos problemáticos, como lidar com blob no banco de dados ou gerar relatórios em PDF e Excel, foram externalizados para o serviço web java.
No entanto, como desenvolvedor Java, estou um pouco confuso com alguns aspectos do código:
- é detalhado (especialmente quando se lida com 'exceção')
- existem muitos métodos enormes (muitos mais de 2000 linhas)
- não há estruturas de dados avançadas (sinto muita falta de Listar, Definir e Mapear)
- sem separação de preocupações (o SQL é alegremente misturado em todo o código)
Como resultado, sinto que o negócio está oculto em toneladas de código técnico e meu cérebro, moldado com Orientação a Objetos e uma pitada de programação Funcional, não fica à vontade.
O lado bom do projeto é que o código é direto: não há estrutura, nem manipulação de código de bytes em tempo de execução, nem AOP. E o servidor pode atender simultaneamente a mais de 10000 usuários com uma única máquina usando menos memória do que o java precisa cuspir "olá mundo".
Quero aprender a escrever código C de acordo com os princípios modernos comumente aceitos. Existe algum princípio comumente aceito sobre como o C moderno deve ser escrito e estruturado?
Algo parecido com o equivalente ao livro 'Effective Java', mas para C.
Edite à luz das respostas e comentários:
- Vou tentar adaptar minha mentalidade ao código C e não tentar espelhá-lo no OOP.
- Comecei a ler os guias de estilo de codificação recomendados a partir do comentário (Os padrões de codificação GNU e O estilo de codificação do kernel do Linux).
- Tentarei propor esse estilo de código aos meus colegas de trabalho. A parte mais difícil pode ser convencer os colegas de trabalho de que um método enorme pode ser dividido em partes menores e que repetir as mesmas 4 linhas de código de tratamento de erros pode ser evitado com a ajuda de um método.