オブジェクト指向 (C#、Java、Scala) 出身の私は、コードの再利用と型安全性の両方の原則を非常に高く評価しています。上記の言語の型引数はその役割を果たし、型安全でコードを「無駄」にしない汎用データ構造を有効にします。
C に行き詰まるにつれて、妥協しなければならないことを認識しており、それが正しいものであってほしいと思っています。データ構造のvoid *
各ノード/要素に があり、型の安全性が失われるか、使用する型ごとに構造とコードを書き直す必要があります。
コードの複雑さは明らかな要因です。配列または連結リストを繰り返し処理することは簡単で*next
、構造体に a を追加することは余分な労力ではありません。このような場合、構造とコードを再利用しようとしないことは理にかなっています。しかし、より複雑な構造の場合、答えはそれほど明白ではありません。
モジュール性とテスト容易性もあります。構造を使用するコードから型とその操作を分離すると、テストが容易になります。逆もまた真です。他のことをしようとしている間に構造体に対するコードの反復をテストすると、面倒になります。
それで、あなたのアドバイスは何ですか?void *
再利用または型安全性と重複コードはありますか? 一般原則はありますか?適合しない場合、オブジェクト指向を手続き型に強制しようとしていますか?
編集: C++ をお勧めしないでください、私の質問は C についてです!