Existe-t-il des principes de conception connus, des meilleures pratiques et des modèles de conception que l'on peut suivre lors de la conception d'un projet C? Ou des principes de conception utiles pour la programmation procédurale (impérative) en général?
(Je suis enfant de la 'génération orientée objet' et je dois concevoir un grand projet C pour la première fois)
Réponses:
Cachette d'informations - comme le soutient Parnas ( Software Fundamentals ).
Gestion soignée des en-têtes et de la visibilité:
L'en-tête est auto-protégé - donc peu importe s'il est inclus plusieurs fois.
Concevez des ensembles de fonctions pour travailler sur des «objets» (généralement des structures) - et utilisez ces fonctions plutôt que de fouiller dans les entrailles de la structure dans le code qui l'utilise. Pensez-y comme une encapsulation auto-imposée.
la source
Mes trois conseils:
Voici un exemple:
la source
malloc
.Il existe un bon livre en ligne gratuit, intitulé Programmation orientée objet avec ANSI-C , qui couvre le sujet de l'écriture de code orienté objet en C. Une recherche Google sur «C orienté objet» donne également un certain nombre d'autres bons. exemples et ressources.
Si votre projet est critique pour la sécurité, MISRA-C est un bon ensemble de règles. Il est principalement destiné au c intégré, mais il peut également être utile dans d'autres domaines.
Je me considère comme un codeur OO et je travaille beaucoup avec le C intégré. Le meilleur conseil que je puisse donner, surtout pour les grands projets, est de ne pas en faire trop. Créer un framework OO complet au-dessus de ANSI C peut être très tentant, mais il faut beaucoup de temps et d'efforts pour bien faire les choses. Plus vous obtenez de fantaisie, plus vous passerez de temps à déboguer votre framework au lieu de travailler sur le vrai projet. Abordez la tâche avec une tête claire et une bonne et solide compréhension de YAGNI . Bonne chance!
la source
{ }
bloc). Celui-là me mord toujours une ou deux fois:)
La POO est une méthodologie et non une technologie. Donc, mon premier conseil est d'arrêter de penser à cela comme de la programmation procédurale.
Au point de e.James, vous ne voulez pas essayer de recréer un langage orienté objet ou prétendre que vous en avez les capacités. Vous pouvez toujours faire toutes les bonnes choses en vous accrochant à quelques principes simples:
la source