假设我有一个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);
...
在现实世界中是否存在一个主导的既定命名约定?
答案 0 :(得分:8)
没有普遍接受的惯例。
当然,C ++在这个问题上影响了人们的观点。就个人而言,我在函数执行内存分配时使用new(),如果不执行则使用init(),如果发生重新分配则使用delete(),否则使用cleanup()。
答案 1 :(得分:8)
GLib / GTK人员创建了使用_new
和_free
为内存分配构造函数和析构函数以及_init
和_destroy
用于非内存分配构造函数的约定。析构函数。
pthread库似乎主要遵循_init
和_destroy
的约定,用于非内存分配和_create
内存分配。
X11使用XOpenFoo
和XCloseFoo
。
C库本身使用free
用于非内存分配glob_t
和wordexp_t
等结构的清理。
所以,我猜答案是否定的,但肯定有很多人在某些项目中选择了特定的符号。
答案 2 :(得分:3)
我在一家使用init
/ deinit
作为标准的公司工作,看起来很好。我想我已经从多个来源看过init
/ fini
,据我所知,这是一个使名称长度相同的自负。
pthread_mutex_init
/ pthread_mutex_destroy
(就地初始化)
sem_create
/ sem_destroy
(返回一个新句柄,但观察Posix并不觉得需要区分释放句柄的“destroy”和一个就地销毁的“destroy” )
mpz_init
/ mpz_clear
(就地初始化)
所以你可以做你喜欢的事,没有人可以合理地抱怨你忽略了“标准”。
答案 3 :(得分:1)
我使用以下约定:
..._alloc()
..._init()
..._create()
..._discard()
..._dealloc()
或..._free()
..._destroy()
答案 4 :(得分:0)
根据它是在“对象”还是某些“活动模块”,我通常会按照
<强>对象强>:
INIT <----> TERMINATE
有效模块:
INIT ---------> START
^ ^
| |
| v
TERMINATE <----- STOP