问题标签 [enforcement]

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 投票
1 回答
436 浏览

c# - 如何在一段时间内限制对 WCF 服务的调用?

我想编写一个每小时运行次数不能超过 X 次的 WCF 服务。如果在过去 60 分钟内调用服务超过 x 次,我希望该服务将消息挂起到队列中。

任何想法如何限制服务?我愿意在 WCF 堆栈中编写自定义组件。

0 投票
6 回答
2062 浏览

c# - 有没有办法可以强制方法遵循某些方法签名?

假设我有

我可以制作以下课程来强制执行该方法签名吗?(只是一个想到的想法):

[编辑]

目的:我已经在中间层的方法中添加了属性。我有这样的方法:

然后在运行时,我将迭代所有中间层的方法并将它们放入集合(属性在这里很有帮助),然后将它们映射到 winform 的委托函数(由接口、基于插件的系统促进)加载

我正在考虑是否可以使属性更具自描述性,以便编译器可以捕获不一致。

我在想,如果将方法放在每个类上,总是实例化一个 Remoting 对象将是一种矫枉过正的做法。并将它们放在单独的类中,可能更难促进代码重用,假设 Invoice_Save 需要一些关于 Receipt_Open 的信息。事实上我什至这里有一个报告(水晶),它从远程中间层数据集中获取数据,在调用的方法内部,它获取其他方法的一些信息并合并到自己的数据集中,它们都发生在中间层,没有几次往返,一切都在服务器端(中间层)完成

0 投票
2 回答
738 浏览

javascript - 如何在 JavaScript 中强制使用分号?

决定喜欢在 JavaScript 语句末尾使用分号的开发人员如何最好地在技术上为自己强制执行这种期望?

我正在使用 Visual Studio (ASP.NET webapps),但我很想听听任何环境的解决方案。

0 投票
3 回答
1951 浏览

objective-c - 有没有办法在 Cocoa 上的 Objective-C 中强制执行运行时类型检查?

嗨,我正在寻找一种方法来在 Cocoa 上的 Objective-C 中强制执行运行时类型检查或此类事情。

这是我的代码示例。我预计有关错误分配变量“b”的运行时错误。但事实并非如此。编译并执行,没有任何错误。

我很惊讶没有运行时类型检查。因为我使用了所有高级语言,如 VB、C#、Java、ActionScript……我不懂 C 等低级语言,所以我不确定这是正确的方法……真的很难弄清楚为什么没有编译或运行时错误。但我开始将其理解为现实 C 世界中的自然规则。但是更强大的类型检查会对我有很大帮助。即使只在调试会话中。有没有办法做到这一点?

如果没有运行时类型检查,我必须使用什么样的编码和调试策略来处理错误的类型值?运行时类型检查之间的权衡是什么?

0 投票
4 回答
197 浏览

c# - 项目管理:在VS编译过程中实现自定义错误

再次:如果您投票 -1,请发表评论解释原因。这篇文章不是关于你是否同意这种方法,而是关于如何去做。

像许多架构师一样,我通过多年的经验开发了编码标准,我希望我的开发人员能够遵守这些标准。

对于那些认为三四年经验可以让你成为高级开发人员的人群来说,这尤其是一个问题。将其作为培训和代码审查问题处理的成功有限。

因此,我认为能够在构建过程中添加自定义编译时错误以更严格地执行我们的内部最佳实践和编码标准会很棒。

例如,我们为所有数据库访问使用存储过程,它提供过程级安全性、数据库封装(表结构对应用程序隐藏)和其他好处。(注意:我没有兴趣就此展开辩论。)一些开发人员更喜欢内联 SQL 或参数化查询,这很好 - 在他们自己的时间和自己的项目中。

我想要一种添加编译检查的方法,该检查可以找到任何看起来像的东西

并生成一个错误,或者在某些情况下,一个警告,带有类似的消息

Inline SQL and parametrized queries are not permitted.

或者,如果他们使用 var 关键字

Variable definitions must be explicitly typed.

Visual Studio 和 MSBuild 是否提供了添加此功能的方法?我在想我可以使用正则表达式来查找不可接受的代码并生成正确的错误,但我不确定从性能的角度来看,将其集成到构建过程中的最佳方法是什么。

我们可以添加构建前或构建后的步骤来运行自定义 EXE,但是如何返回特定于行和文件的错误?另外,我希望它在每个文件编译后运行,而不是在链接后运行。

正则表达式是执行此类模式匹配的最佳方式,还是我应该发疯并通过 C# 解析器运行代码,这将允许通过解析树进行节点级验证?

我会很感激以前经验的建议和故事。

评论 一些受访者指出,可以通过 db 权限限制用户运行除存储过程之外的任何内容的能力。但是,我们正在将一个 350k+ 行的应用程序从 ASP 3.0 移植到 ASP.NET MVC,并且现有的代码库非常依赖连接的 SQL,而新的东西都使用 Enterprise Library。我想我可以为具有更多限制性权限的 .NET 代码添加一个单独的 Web 用户帐户。

0 投票
3 回答
292 浏览

.net - 为什么 VB.NET 不强制处理异常?

可能重复:
为什么 .NET 中未检查异常?

如果我没记错的话,Java 强制捕获和处理被调用方法可能抛出的任何异常。为什么.NET 不做同样的事情?

0 投票
3 回答
211 浏览

python - Python 2.x:如何自动执行 unicode 而不是字符串?

如何自动化测试以强制 Python 2.x 代码主体不包含字符串实例(仅 unicode 实例)?

例如。

我可以从代码中做到这一点吗?

有没有具有此功能的静态分析工具?

编辑:

我希望将它用于 Python 2.5 中的应用程序,但事实证明这是不可能的,因为:

  1. 2.5不支持unicode_literals
  2. kwargs 字典键不能是 unicode 对象,只能是字符串

因此,我接受了不可能的答案,即使出于不同的原因:)

0 投票
1 回答
448 浏览

entity-framework-4 - 实体框架 4 - 设计数据库以强制执行 1 比 1 的多重性

我在我的应用程序中遇到了一个场景,我希望实体之间具有 1:1 的多重性,但我不知道如何修改我的数据库来确保这一点。

假设我有一个 Document 表和一个 Index 表,其中 Document 总是有一个 Index,并且 Index 只会包含在一个 Document 中。在 Document 表中,我有一个 IndexID 字段,因此 Document 实体有一个指向其索引的导航属性,但 Index 实体有一个名为 Documents 的集合导航属性,这不是我想要的,因为只会有一个相关的 Document。

以某种方式编辑我的数据库架构会很好,这样当我从数据库生成模型时,文档实体有一个到索引的导航并且索引有一个导航属性返回到文档。这样的事情可能吗?

我想我可能可以在模型设计图面上编辑实体模型或其关联来实现这一点。但我担心在某个阶段如果我重新加载模型,它会重置这个和任何其他类似的。

是否有一个优雅的解决方案可以让 EF 自动实现 1:1 的多重性?

感谢您的任何建议!

0 投票
3 回答
1022 浏览

language-agnostic - 断言()与强制():选择哪个?

我很难选择是否应该在 D 中“强制”一个条件或“断言”一个条件。(不过,这与语言无关。)

从理论上讲,我知道您使用断言来查找错误,并强制执行其他条件以检查非典型条件。例如,您可能会说assert(count >= 0)为您的方法提供一个参数,因为这表明调用者存在错误,并且您会说enforce(isNetworkConnected),因为那不是错误,它只是您假设的东西,这很可能不是真的超出您控制范围的合法情况。

此外,断言可以作为优化从代码中删除,没有副作用,但不能删除强制执行,因为它们必须始终执行其条件代码。因此,如果我正在实现一个惰性填充容器,它在第一次访问它的任何方法时填充自己,我说enforce(!empty())而不是assert(!empty()),因为检查empty()必须总是发生,因为它惰性地执行内部代码。

所以我想我知道他们应该是这个意思。但是理论比实践容易,我很难实际应用这些概念。

考虑以下:

我正在制作一个迭代其他两个范围的范围(类似于迭代器),并添加结果。(对于函数式程序员:我知道我可以使用它map!("a + b"),但我暂时忽略它,因为它没有说明问题。)所以我的代码在伪代码中看起来像这样:

这应该是断言还是强制执行?(范围没有同时为空是调用者的错吗?它可能无法控制范围的来源——它可能来自用户——但话又说回来,它仍然看起来像一个错误,不是吗?)

或者这是另一个伪代码示例:

这应该是断言还是强制执行?路径可能来自用户——因此它可能不是一个错误——但它仍然是此方法的前提条件,即路径应该是有效的。我主张还是强制执行?

谢谢!

0 投票
5 回答
215 浏览

c++ - 防止滥用专为运输而设计的结构

我的产品有多个组件,其中大多数是用 C++ 编写的,但有一个是用 C 编写的。我们经常遇到这样的场景,即一条信息通过 IPC 流经每个组件。

我们使用结构定义这些消息,以便我们可以将它们打包成消息并通过消息队列发送。这些结构仅用于“传输”目的,并且以仅用于该目的的方式编写。我遇到的问题是:程序员坚持使用该结构并将其用作信息的长期容器。

在我看来,这是一个问题,因为:

1)如果我们改变传输结构,他们所有的代码都会被破坏。这里应该有封装,这样我们就不会遇到这种情况。

2) 消息结构非常笨拙,仅设计用于传输信息……这个结构似乎也不太可能碰巧成为这些其他组件访问此数据(长期)的最方便形式。

我的问题是:如何以编程方式防止这种误用?我想强制这些结构只能用于运输。

编辑:我会尽力在这里提供一个例子:

其效果是人们只是坚持“大元素”,而不是从大元素中提取他们需要的数据并将其放入满足他们需求的类中。