4

プログラムはC言語で書かれており、GUIはGTK+で作成されています。アルゴリズムなどに問題はありません。1つだけ確信が持てません。

いくつかの 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 を返し、 が NULL の場合は警告を出力することをお勧めしtxtます。

しかし、どうしてもコード行を節約したい場合は、プレーンな C で UI を構築するのではなく、 Gladeを使用して UI を設計してください。

于 2013-01-28T09:41:04.770 に答える