11

がありstruct list、「コンストラクタ」と「デストラクタ」関数を提供したいとします。それぞれにどのように名前を付ける必要がありますか?

void list__init(struct list * self);
void list__construct(struct list * self);
void list__create(struct list * self);
...

void list__done(struct list * self);
void list__destruct(struct list * self);
void list__destroy(struct list * self);
...

実世界で優勢な確立された命名規則はありますか?

4

5 に答える 5

11

GLib/GTK の人々は、メモリを割り当てるコンストラクタとデストラクタ、およびメモリを割り当てないコンストラクタとデストラクタに_newandを使用するという規則を作成しました。_free_init_destroy

pthread ライブラリは、ほとんどの場合、メモリを割り当てないものとメモリを割り当てるための規則_initに従っているようです。_destroy_create

X11 はXOpenFooとを使用しXCloseFooます。

C ライブラリ自体が使用するものは、 や などfreeの構造体の非メモリ割り当てクリーンアップに使用されます。glob_twordexp_t

ですから、答えはノーだと思いますが、特定のプロジェクトで特定の表記法を選択した大勢の人々が間違いなく存在します。

于 2012-09-25T13:45:54.750 に答える
10

一般的に受け入れられている規則はありません。

もちろん、C++ はこの問題に関する人々の見方に影響を与えてきました。

個人的には、関数がメモリ割り当てを実行する場合は new() を使用し、そうでない場合は init() を使用し、解放が発生した場合は delete() を使用し、そうでない場合は cleanup() を使用します。

于 2012-09-25T13:27:48.717 に答える
4

私は次の規則を使用しています:

  • 経由のメモリ割り当て..._alloc()
  • 経由の初期化..._init()
  • 結合された割り当てと初期化..._create()
  • を介した関連リソースの解放..._discard()
  • ..._dealloc()またはによるメモリの解放..._free()
  • を介したリソースとメモリの複合解放..._destroy()
于 2012-09-25T13:51:01.203 に答える
3

init私は/deinitを標準として使用している会社で働いていましたが、それは問題ないようでした。私は複数の情報源からinit/を見たことがあると思います。fini私が知る限り、名前を同じ長さにすることはうぬぼれです。

pthread_mutex_init/ pthread_mutex_destroy(インプレースで初期化)

sem_create/ sem_destroy(新しいハンドルを返しますが、Posixは、ハンドルを解放する「破棄」とインプレースで破棄する「破棄」を区別する必要性を感じていないことに注意してください)

mpz_init/ mpz_clear(インプレースで初期化)

ですから、あなたはおそらくあなたが好きなことをすることができます、そして誰もあなたが「標準」を無視していると合理的に不平を言うことはできません。

于 2012-09-25T13:49:08.620 に答える
0

それが「オブジェクト」にあるのか「アクティブモジュール」にあるのかに応じて、私は通常フォローします

オブジェクト

INIT <----> TERMINATE

アクティブモジュール

INIT ---------> START 
 ^                ^
 |                |    
 |                v 
TERMINATE <----- STOP
于 2012-09-25T13:34:16.010 に答える