Existem princípios de design, práticas recomendadas e padrões de design conhecidos que alguém pode seguir ao projetar um projeto C? Ou princípios de design úteis para programação procedural (imperativa) em geral?
(Sou filho da 'geração orientada a objetos' e tenho que criar um grande projeto C pela primeira vez)
c
design-patterns
principles
Dimi
fonte
fonte
Respostas:
Esconder informações - conforme defendido por Parnas ( Fundamentos de Software ).
Gerenciamento cuidadoso de cabeçalhos e visibilidade:
O cabeçalho é autoprotegido - portanto, não importa se ele é incluído várias vezes.
Projete conjuntos de funções para trabalhar em 'objetos' (geralmente estruturas) - e use essas funções em vez de vasculhar as entranhas da estrutura do código que a está usando. Pense nisso como um encapsulamento autoimposto.
fonte
Meus três conselhos:
Aqui está um exemplo:
fonte
malloc
.Há um bom livro online gratuito, intitulado Programação Orientada a Objetos com ANSI-C , que cobre o tópico de escrever código orientado a objetos em C. Uma pesquisa no Google por "C orientado a objetos" também resulta em vários outros bons exemplos e recursos.
Se o seu projeto é crítico para a segurança, MISRA-C é um bom conjunto de regras. Ele se destina principalmente a c embutido, mas também pode ser útil em outras áreas.
Eu me considero um codificador OO e faço muitos trabalhos com C incorporado. O melhor conselho que posso dar, especialmente para grandes projetos, é não exagerar. Criar uma estrutura OO completa com base no ANSI C pode ser muito tentador, mas é preciso muito tempo e esforço para acertar. Quanto mais sofisticado você fica, mais tempo vai gastar depurando seu framework em vez de trabalhar no projeto real . Aborde a tarefa com a cabeça limpa e um bom e sólido conhecimento do YAGNI . Boa sorte!
fonte
{ }
bloco). Aquele sempre me morde uma ou duas vezes:)
OOP é uma metodologia, não uma tecnologia. Portanto, meu primeiro conselho é parar de pensar nisso como programação procedural.
Para o ponto de e.James, você não quer tentar recriar uma linguagem orientada a objetos ou fingir que tem os recursos para isso. Você ainda pode fazer todas as coisas certas se apegando a alguns princípios simples:
fonte