[解決済み] C言語(または手続き型プログラミング全般)の設計原則、ベストプラクティス、デザインパターン?[クローズド]
2023-02-12 14:33:25
質問
C言語のプロジェクトを設計するときに従うことができる、既知の設計原則、ベストプラクティス、デザインパターンはありますか?あるいは、一般的な手続き型(命令型)プログラミングのための有用な設計原則はありますか?
(私は「オブジェクト指向世代」の子供で、初めて大規模な C プロジェクトを設計しなければなりません。)
どのように解決するのですか?
情報隠蔽 - パルナスによって提唱された ( ソフトウェアの基礎知識 ).
ヘッダや可視性の管理を丁寧に行う。
- ソースファイルの中で、外部から隠せるものはすべて隠すべきです。文書化された外部インタフェースのみを公開すべきです。
- 公開されるものはすべてヘッダで宣言されます。
- そのヘッダーは、機能が必要なところ(定義されているところ)で使われます。
- ヘッダは自己完結しています。必要なときに必要な分だけ使用し、「他にどんなヘッダを含めなければならないか」と悩む必要はありません。なぜならヘッダは、それを動作させるために必要なものをすべて含めることによって、確実に動作させるからです。
-
ヘッダーは自己保護されているため、複数回インクルードしても問題ありません。
#ifndef HEADER_H_INCLUDED #define HEADER_H_INCLUDED ...rest of header contents, including other #include lines if necessary #endif /* HEADER_H_INCLUDED */
-
オブジェクト」(通常は構造体)上で動作するように関数のセットを設計し、それを使用するコードで構造体の内部を詮索するのではなく、それらの関数を使用します。 それを自己のカプセル化として考えてください。
関連
-
error: '.' トークンの前にunqualified-idを指定する必要があります。
-
ポインタ定数および定数ポインタ
-
コンパイルエラー:可変長オブジェクトが初期化されていない可能性があります。
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] C言語でのブーリアン値の使用
-
[解決済み] C言語標準に準拠した構造体の初期化方法
-
[解決済み] C 言語の配列へのポインタ/ポインタの配列の曖昧さ解消
-
[解決済み] FortranはC言語よりも重い計算を最適化しやすいですか?
-
[解決済み] C言語で "unsigned long "をprintfする方法は?
-
[解決済み】関数型プログラミングはGoFデザインパターンに取って代わるか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
error: '.' トークンの前にunqualified-idを指定する必要があります。
-
C++の配列コピー
-
C 言語のポインタ配列のポインタ型、ポインタに値を割り当てるために配列名を使用、コンパイル時の警告:互換性のないポインタ型からの初期化
-
[解決済み] ⑭と⑯は何のためにあるのですか?
-
[解決済み] C言語で配列のサイズを決定するにはどうすればよいですか?
-
[解決済み] 配列のすべてのメンバーを同じ値で初期化するには?
-
[解決済み] while ( !feof (file) ) 」は、なぜいつも間違っているのですか?
-
[解決済み] C言語でランダムなint型を生成するには?
-
[解決済み] なぜsizeof(x++)はxをインクリメントしないのですか?
-
[解決済み] なぜ16進数には0xがつくのですか?