4

程序是用C编写的,GUI是用GTK+创建的。算法或什么没有问题,我只是不确定一件事。

我打算包装一些 GTK 函数,这样我可以节省很多源代码行。例如:

GtkWidget *gtkwrap_label_markup_new(const gchar *txt)
{
    GtkWidget *label;

    g_assert(txt);

    label = gtk_label_new(NULL);
    gtk_label_set_markup(GTK_LABEL(label), txt);

    return label;
}

我多次使用pango修改的文本,这个包装函数节省了很多代码行。也许这还不错,但是如果有一天其他程序员会读我的代码,那会是什么反应呢?“....gtkwrap_label_markup_new?什么?!”

我只想知道,包装这些功能是否符合标准。我不想看起来像个白痴,我也不想学习一些坏习惯。;)

4

2 回答 2

6

引入函数以避免代码重复并没有错。事实上,我想说的恰恰相反,引入抽象可以帮助您更快地开发代码,并降低修复问题或更改设计的成本。

于 2013-01-27T19:33:52.353 回答
1

如果您有疑问,请查看 GTK 代码。例如,对于gtk_label_set_markup,您会看到处理 str 变量为 NULL 的情况。因此,提出一个断言来检查它可能适合您的应用程序,但我认为这有点矫枉过正。如果您想收到警告,您可能更愿意g_return_val_if_fail(str != NULL, NULL)返回 NULL 并在txt为 NULL 时打印警告。

但是如果你真的想节省一堆代码,使用Glade来设计你的 UI,而不是用纯 C 来构建它。

于 2013-01-28T09:41:04.770 回答