我们有一些类库会弹出一个对话框,这样做是不是一个坏主意?
9 回答
类库旨在整合业务逻辑并减少代码重复。对话框应该显示在您的表示层中,在那里它可以决定更好的方法。
例如,如果您将类库用于 winform 应用程序,则该对话框将不同于显示在网站中的对话框。
是的,这是个坏主意。如果 Windows 服务要使用您的库会发生什么?
我能想到的唯一情况是,如果类库用于可视显示组件并且仅在该上下文中使用(即仅包含对话框和 UI 组件)。
在编写要在许多不同场景中使用的类库时,您不希望需要人工干预的阻塞调用。
您也许可以查明会话是否是交互式的,并选择创建弹出窗口,但这充其量只是一个技巧。
您的库应尽可能少地绑定到其他库以实现预期目的。除非您的库是某种 gui 库,否则不要使用弹出对话框。
如果它是用于显示对话框的类库,那么是的。对于任何其他类型的类库,则没有。
图书馆要做的正确的事情是接受像“getInformationFromUser”或“showError”之类的回调。然后由库调用者决定如何完成。或者为了报告错误,它应该引发异常或返回错误代码。
对于显示对话框本身的库,它必须做出大量假设——该库正在用于 GUI 程序、正在使用什么 GUI 框架、用户理解什么语言等。这是错误的,错误的,错误的.
这在很大程度上取决于。如果这个类库包含许多其他 GUI 类,那么可能。如果这个库包含域对象,那么这听起来是个坏主意。
我认为这是个坏主意。但在某些情况下,您可能希望 UI 逻辑可重用。在这种情况下,请尝试在单独的库中提取用户交互代码。
我会说坏主意。有关非可视库类的示例,请查看QFile。使用它时,它会将错误状态作为返回值报告回来(例如 if(!file.open(mode...))),然后将最后一个错误作为应用程序友好的枚举(http://doc.trolltech. com/4.6/qfile.html#error)和人类可读的错误字符串(http://doc.trolltech.com/4.6/qiodevice.html#errorString),您的应用程序可以使用它轻松弹出对话框,打印将其添加到控制台,或将其添加到日志等。
正如您所看到的,这种方法使应用程序有权决定如何处理错误消息——而不是让库做出暂时感觉好的东西。
从理论上讲,如果它只用于一个特定的应用程序,而您知道它只会与 GUI 一起使用,那么它就没有害处。
但严酷的现实是,库将趋向于变得越来越通用,您将在各种应用程序中需要它们,而不仅仅是基于 GUI 的应用程序。因此,您不妨提前计划并禁止库中的对话框,并以其他方式处理错误报告。
这就是我的想法:这取决于你的类库的主要目的,如果它是一个提供一些 UI 功能的 UI 模块,那么应该有一些对话框和表单等,但如果它是一个应该提供一些服务的库(业务或数据访问)到您的应用程序的其他部分,您的库中应该没有 UI 元素。