2

我们有一些类库会弹出一个对话框,这样做是不是一个坏主意?

4

9 回答 9

11

类库旨在整合业务逻辑并减少代码重复。对话框应该显示在您的表示层中,在那里它可以决定更好的方法。

例如,如果您将类库用于 winform 应用程序,则该对话框将不同于显示在网站中的对话框。

于 2010-02-01T08:45:59.630 回答
8

是的,这是个坏主意。如果 Windows 服务要使用您的库会发生什么?

我能想到的唯一情况是,如果类库用于可视显示组件并且仅在该上下文中使用(即仅包含对话框和 UI 组件)。

在编写要在许多不同场景中使用的类库时,您不希望需要人工干预的阻塞调用。

您也许可以查明会话是否是交互式的,并选择创建弹出窗口,但这充其量只是一个技巧。

于 2010-02-01T08:45:41.293 回答
7

您的库应尽可能少地绑定到其他库以实现预期目的。除非您的库是某种 gui 库,否则不要使用弹出对话框。

于 2010-02-01T08:47:27.080 回答
3

如果它是用于显示对话框的类库,那么是的。对于任何其他类型的类库,则没有。

图书馆要做的正确的事情是接受像“getInformationFromUser”或“showError”之类的回调。然后由库调用者决定如何完成。或者为了报告错误,它应该引发异常或返回错误代码。

对于显示对话框本身的库,它必须做出大量假设——该库正在用于 GUI 程序、正在使用什么 GUI 框架、用户理解什么语言等。这是错误的,错误的,错误的.

于 2010-02-01T08:48:34.640 回答
2

这在很大程度上取决于。如果这个类库包含许多其他 GUI 类,那么可能。如果这个库包含域对象,那么这听起来是个坏主意。

于 2010-02-01T08:46:37.130 回答
2

我认为这是个坏主意。但在某些情况下,您可能希望 UI 逻辑可重用。在这种情况下,请尝试在单独的库中提取用户交互代码。

于 2010-02-01T08:47:54.190 回答
2

我会说坏主意。有关非可视库类的示例,请查看QFile。使用它时,它会将错误状态作为返回值报告回来(例如 if(!file.open(mode...))),然后将最后一个错误作为应用程序友好的枚举(http://doc.trolltech. com/4.6/qfile.html#error)和人类可读的错误字符串(http://doc.trolltech.com/4.6/qiodevice.html#errorString),您的应用程序可以使用它轻松弹出对话框,打印将其添加到控制台,或将其添加到日志等。

正如您所看到的,这种方法使应用程序有权决定如何处理错误消息——而不是让库做出暂时感觉好的东西。

于 2010-02-01T08:53:27.347 回答
2

理论上讲,如果它只用于一个特定的应用程序,而您知道它只会与 GUI 一起使用,那么它就没有害处。

但严酷的现实是,库将趋向于变得越来越通用,您将在各种应用程序中需要它们,而不仅仅是基于 GUI 的应用程序。因此,您不妨提前计划并禁止库中的对话框,并以其他方式处理错误报告。

于 2010-02-01T08:54:30.237 回答
2

这就是我的想法:这取决于你的类库的主要目的,如果它是一个提供一些 UI 功能的 UI 模块,那么应该有一些对话框和表单等,但如果它是一个应该提供一些服务的库(业务或数据访问)到您的应用程序的其他部分,您的库中应该没有 UI 元素。

于 2010-02-01T08:56:23.617 回答