问题标签 [design-decisions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
172 浏览

c# - 重复属性设计模式

我有一个DownloadManager管理多个DownloadItem对象的类。每个DownloadItem都有类似ProgressChanged和的事件DownloadCompleted。通常您希望对所有下载项使用相同的事件处理程序,因此必须为每个DownloadItem.

因此,我需要决定使用哪种模式:

  1. 使用一个DownloadItem作为模板并根据需要克隆它

    /li>
  2. 相反,设置事件处理程序DownloadManager并将事件复制到每个DownloadItem被排队的事件。

    /li>
  3. 或者使用某种工厂

    /li>

你会推荐什么?

0 投票
7 回答
2473 浏览

c - 实现插件框架的最佳方式 - DLL 是唯一的方式(C/C++ 项目)吗?

介绍:

我目前正在用 C/C++ 开发一个文档分类器软件,我将使用朴素贝叶斯模型进行分类。但是我希望用户使用他们想要的任何算法(或者我将来想要的),因此我将架构中的算法部分分离为一个插件,该插件将附加到主应用程序@应用程序启动。因此,任何用户都可以将自己的算法编写为插件并将其与我的应用程序一起使用。

问题陈述:

我打算开发这个的方法是将用户想要使用的每个算法都制作成一个 DLL 文件并放入一个特定的目录中。一开始,我的应用程序将搜索该目录中的所有 DLL 并加载它们。

我的问题:

(1) 如果恶意代码被制作为 DLL(并且将具有插件框架要求的相同功能)并放入我的插件目录怎么办?在这种情况下,我的应用程序会认为它是一个插件并选择它并调用它的函数,因此恶意代码很容易让我的整个应用程序崩溃(在最坏的情况下可能使我的应用程序成为恶意代码启动器!!!) .

(2) 使用 DLL 是实现插件设计模式的唯一方法吗?(不仅是因为害怕恶意插件,而且出于好奇,这是一个普遍的问题:))

(3)我认为很多软件都是用插件模型编写的,以实现可扩展性,如果是这样,它们如何防御这种攻击?

(4) 总的来说,您如何看待我决定使用插件模型进行可扩展性的决定(您认为我应该考虑其他替代方案吗?)

谢谢

-微内核:)

0 投票
1 回答
1131 浏览

algorithm - 表示决策表的算法

如果您想在代码中存储决策表,最好使用什么算法,我查看了邻接矩阵和二叉树,有人会认为这是正确的方向吗?我还有什么其他选择?

0 投票
2 回答
349 浏览

.net - 编写多路径“故事”流的正确方法是什么?

我想知道你是否可以帮助我。

我正在编写一个游戏(2d),它允许玩家采用多条路线,其中一些分支/合并 - 甚至可能循环。游戏的每个部分将决定接下来加载哪个部分。

我将每个部分称为 IStoryElement - 我想知道如何以一种易于更改/配置且同时可图形化的方式最好地将这些元素链接起来

我将有一个引擎/工厂组件,它将StoryElement根据各种配置选项加载适当的(S)。

我最初计划给每个人StoryElement一个NextElement() As IStoryElement属性和一个Completed()事件。当通风口启动时,引擎会读取 NextElement 属性以查找下一个StoryElement.

这样做的缺点是,如果我想绘制游戏中的所有路线,我将无法 - 我无法确定每个路线的所有可能目标StoryElement

我考虑了其他几个解决方案,但它们都觉得有点笨拙——例如,我需要额外的抽象层吗?即 StoryElementPlayers 或类似的东西——每个人都负责将多个StoryElement可能的 Series 和 ChoicePlayer 串在一起,每个人负责绘制自己的图形StoryElement——但这只会将问题向上移动一层。

简而言之,我需要某种方式来模拟一个简单但动态的工作流程(但我宁愿不实际使用 WWF)。有这么简单的东西的模式吗?我设法找到的所有内容都与更高级的控制流(并行处理等)有关

0 投票
2 回答
639 浏览

django - 有条件的必填字段和禁用的输入

我的表格有一堆地址字段(街道、城市、国家、省、邮政编码)需要一遍又一遍地填写。为了让用户更容易,我添加了一个“复制自”选择器,他们可以在其中选择他们以前使用过的地址。当他们这样做时,表单域会自动填写,然后禁用。这样他们就可以清楚地看到他们将要提交的内容。

问题是,如果这些字段被禁用,W3会说不会提交输入。那很好,因为我可以从选择器中获取我需要的所有数据,除了现在表单验证失败。

我想我有两个选择:

  1. 在提交表单之前重新启用表单字段(但这有点小技巧)
  2. 将所有地址字段设为可选。但是我需要添加一堆clean_方法来确保当你不使用预设选择器时它们实际上被填充了。此外,我在整个网站上都使用地址表单,在某些地方确实需要它们,所以我不想让这些字段成为可选字段。虽然,我想我可以只是复制粘贴地址表格并为此页面制作一个特殊情况。

想法?我应该采取什么方法?

0 投票
5 回答
742 浏览

.net - 我们基于 .NET 的 IDE 使用什么脚本语言?

我们有一个用于机器自动化的 IDE,它允许其用户通过视觉连接对象和组件来开发解决方案。他们还可以使用 C++ 和 C# 编写“插件”。IDE 是使用 .NET 编写的。它的用户通常不是建立在传统的软件开发和编程领域,而是更多地从事技术/电气和自动化工程师的方向,但他们都需要了解 C# 和 C++ 编程的基础知识。

如果我们要为 IDE 本身引入一个宏/脚本语言,包括一个交互式控制台(仅限设计时),我们应该选择哪种语言?它应该是一种动态脚本语言,在 .NET 和 DLR 方面都有良好的基础,因为它是面向未来的,具有良好的支持和良好的发展势头,但对于我们的特殊开发人员来说,学习曲线不会那么陡峭。理想情况下,如果您了解 C++ 和/或 C#,则使用起来应该完全直观——即使您不是坚如磐石的软件开发人员。

更新:目前对我们最有吸引力的选项是使用动态编译的 C#。我们的用户可以继续使用 C#。正如CSI所证明的那样,甚至似乎可以构建一个交互式控制台。你觉得这个选项怎么样?是否有任何我们(由于我们缺乏一般的脚本编写经验)尚未意识到的潜在陷阱/缺点?

0 投票
4 回答
450 浏览

asp.net - ASP.NET 的 CheckBoxList 没有 SelectedItems 成员是否有原因?

每当我想获得选定的项目时,我必须遍历每个项目并查看它是否被选中。他们甚至有一个 SelectedItem(末尾没有“s”)成员,这对于 CheckBoxList 来说似乎很奇怪。这似乎是一个合乎逻辑的事情,有谁知道他们为什么没有添加它?

0 投票
0 回答
303 浏览

programming-languages - 索引从 1 开始的编程语言?

可能重复:
1-indexed 编程语言列表?

除了 AWK,还有其他编程语言的索引从 1 开始而不是 0 吗?

0 投票
7 回答
7740 浏览

user-interface - 将手形光标用于按钮等可点击项目是错误的吗?

我一直认为手形光标是向用户显示“您可以单击此处”的理想视觉指示器。我们习惯于每天在这种情况下看到它,因为它用于超链接,因此也用于所有 Web 按钮。

                 替代文字

但是,大多数桌面应用程序似乎保留了按钮的默认指针箭头。

                                 

当按钮和其他可点击项目(如复选框和单选按钮)使用手形光标时,我真的感觉好多了。不知何故,当我将鼠标悬停在可点击的项目上时,我个人觉得看到这个光标很高兴,可能是因为它与网页甚至许多游戏的做法一致。

但是作为开发人员,我们必须为孩子用户着想,有时我们做的事情不是我们喜欢他们,而是用户喜欢他们。问题是,我对按钮上的手形光标感到非常模糊,以至于我对它不合适的可能性视而不见。许多设计错误都是由这样的个人决定造成的。

                                      在此处输入图像描述

你怎么看待这件事?

编辑:最近我注意到 Photoshop 上手形光标的使用(XP 上的 CS3),但可能只是因为我更广泛地使用它。截屏:

                                         在此处输入图像描述

请注意,许多使用手的地方显然是可点击的。
EDIT2:还要注意他们甚至使用了自定义光标,老实说我永远不会这样做,特别是对于像手形光标这样无处不在的微不足道的东西。它甚至不漂亮。

0 投票
1 回答
1270 浏览

restructuredtext - 用于编写“并行文本”的 Sphinx

问题:我正在尝试使用reStructuredText编写“并行文本” 。我所说的“平行文本”是指带注释的小说作品,其中文本分为两列。左栏包含正文,右栏包含评论。我将使用sphinx从中生成 HTML 和 Latex 文档。

我有以下要求:

  1. 如上所述,我应该能够在两列中排版文本,一列用于正文,一列用于注释。
  2. 注释可以是“句子级别”,并不总是“段落级别”。即,我希望能够在一个段落或整个段落中注释不同的句子。
  3. 关闭所有注释的模式会很棒,因此输出的 HTML 和 Latex 仅包含正文。在这种情况下,我希望能够使用媒体的整个“房地产”,而不仅仅是一个专栏。
  4. 如果可能的话,拥有“注释列表”功能会非常好。

我对 reStructuredText 和 Sphinx 还很陌生,但对 Python 有相当多的经验。我正在寻找一些关于如何做我想做的事情的想法。我一直在阅读有关 reStructuredText 以及编写 Sphinx 扩展的内容,因此为 Sphinx 编写扩展并不是不可能的。

有没有人做过类似的事情?

谢谢!