包装GTK+函数

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? 什么鬼!”

我只是想知道,是否标准化地包装这些函数。我不想看起来像个白痴,也不想学习一些坏习惯。 ;)

1
我认为这个问题可能更适合在http://programmers.stackexchange.com/上讨论。 - Sylvain Defresne
2个回答

6

引入函数以避免代码重复并无不妥。事实上,我认为正好相反,引入抽象可以帮助您更快地开发代码,并降低修复问题或更改设计的成本。


1
同意。你只需要确保不要以 gtk_ 开头命名函数,否则有人可能会花费很多时间搜索其不存在的文档。但是楼主已经这样做了。 :) - rodrigo

1
如果你有疑问,可以查看GTK代码。例如,对于gtk_label_set_markup,处理str变量为空的情况。因此,在你的应用程序中放置一个断言来检查这一点可能是合适的,但我认为这有点过度了。如果你想要被警告,你可能更喜欢使用g_return_val_if_fail(str != NULL, NULL)来返回NULL并在txt为空时打印警告。
但是,如果你真的想节省大量代码行,可以使用Glade来设计你的UI,而不是在纯C中构建它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接