问题列表 - 第860页

递归的真实例子

什么是现实世界的问题,其中一个递归的方法是除了深度优先搜索(DFS)的自然的解决方案?

(我不考虑河内塔,斐波纳契数或因子现实世界的问题.在我看来,它们有点做作.)

recursion

86
推荐指数
15
解决办法
10万
查看次数

条件记录具有最小的圈复杂度

在阅读" 你的/你的圈复杂度有什么限制? "之后,我意识到我的很多同事对我们项目的新QA政策非常恼火:每个功能不再有10个圈复杂度.

含义:不超过10'if','else','try','catch'和其他代码工作流程分支语句.对.正如我在' 你测试私人方法吗?',这样的政策有很多好的副作用.

但是:在我们(200人 - 7年)项目开始时,我们很高兴地记录(不,我们不能轻易地将其委托给某种' 面向方面编程 '的日志方法).

myLogger.info("A String");
myLogger.fine("A more complicated String");
...
Run Code Online (Sandbox Code Playgroud)

当我们的系统的第一个版本上线时,我们遇到了巨大的内存问题,不是因为日志记录(在某一点被关闭),而是因为日志参数(字符串),总是被计算,然后传递给'info()'或'fine()'函数,只是发现日志记录级别为"OFF",并且没有记录日志!

所以QA回来并敦促我们的程序员进行条件记录.总是.

if(myLogger.isLoggable(Level.INFO) { myLogger.info("A String");
if(myLogger.isLoggable(Level.FINE) { myLogger.fine("A more complicated String");
...
Run Code Online (Sandbox Code Playgroud)

但是现在,由于每个功能限制的"无法移动"10个圈复杂度级别,他们认为他们在其功能中放入的各种日志被视为负担,因为每个"if(isLoggable())"是计为+1圈复杂度!

因此,如果一个函数有8'if','else'等等,在一个紧密耦合的不易共享的算法中,以及3个关键的日志操作......它们违反了限制,即使条件日志可能不是真的该功能的复杂性的一部分......

你会如何解决这种情况?
我在项目中看到过几个有趣的编码演变(由于这个'冲突'),但我只是想先了解你的想法.


谢谢你的所有答案.
我必须坚持认为问题不是"格式化"相关,而是"参数评估"相关(评估可能非常昂贵,只是在调用一个什么都不做的方法之前)
所以当写一个上面的"A String"时,我实际上意味着机能缺失(),与机能缺失()返回一个字符串,并且是一个复杂的方法收集的调用和计算所有类型的日志数据被记录器...与否(因此该问题,并显示义务,以使用条件记录,因此人为增加'圈复杂度'的实际问题......)

我现在得到你们中某些人提出的" 可变函数"点(谢谢John).
注意:java6中的快速测试表明我的varargs函数在被调用之前会对其参数进行求值,所以它不能用于函数调用,而是用于'Log Retriever object'(或'function wrapper'),其中toString( )只有在需要时才会被调用.得到它了.

我现在已经发表了关于这个主题的经验.
我会留在那里直到下周二投票,然后我会选择你的一个答案.
再次,谢谢你的所有建议:)

language-agnostic logging coding-style cyclomatic-complexity

64
推荐指数
3
解决办法
2万
查看次数

在自定义编辑器中为特定于域的语言实现类似IntelliSense的行为

我正在使用类似模板的编辑器创建DSL,就像Alice中的规则系统一样.用户将能够从列表中选择关系以及要应用关系的对象.应根据可接受的类型过滤这两个列表 - 例如,如果关系"大于",则可用对象必须是实现"大于"的类型.

类似地,如果选择的对象与大于的对象不可比,那么该关系不应该在潜在关系列表中.我认为这个问题的核心是类型检查器,但我不确定在我的应用程序中合并这种类型的逻辑的最佳方法.是否有人知道DSL的现有类型检查库?

我对开源和跨平台技术特别感兴趣.Java可能是我们最终会使用的语言,但这不是固定的.

dsl intellisense types

7
推荐指数
1
解决办法
1605
查看次数

如何在Windows窗体应用程序设置中记录窗口位置

这似乎是一个标准要求:下次用户启动应用程序时,以与以前相同的位置和状态打开窗口.这是我的愿望清单:

  • 窗口位置与原样相同
    • 除非屏幕已调整大小并且旧位置现在已关闭屏幕.
  • 分裂者应保持其立场
  • 标签容器应保留其选择
  • 一些下拉菜单应该保留他们的选择
  • 窗口状态(最大化,最小化,正常)与其相同.
    • 也许你永远不应该开始最小化,我还没有决定.

我将添加我当前的解决方案作为答案以及限制.

.net c# settings winforms

24
推荐指数
4
解决办法
2万
查看次数

如何从代码中设置Sql Server中的默认数据库?

我似乎无法弄清楚如何从代码中设置Sql Server中的默认数据库.这可以是.Net代码或T-Sql(T-Sql会很好用,因为它很容易在任何语言中使用).我搜索了Google,只能在Sql Server Management Studio中找到它.

database sql-server sql-server-2000

13
推荐指数
2
解决办法
2万
查看次数

什么是学习XNA的好资源?

我一直在考虑尝试游戏开发和XNA.我已经是专家C/C++程序员了.我读了一些C#书籍,但还没有在C#中做过任何开发.

从已经是专家程序员的人的角度来看,学习XNA的资源是什么?

xna

4
推荐指数
1
解决办法
844
查看次数

我可以将任意命令块传递给bash函数吗?

我正在使用bash脚本,如果存在特定文件,则需要有条件地执行一些操作。这是多次发生,所以我抽象了以下函数:

function conditional-do {
    if [ -f $1 ]
    then
        echo "Doing stuff"
        $2
    else
        echo "File doesn't exist!"
    end
}
Run Code Online (Sandbox Code Playgroud)

现在,当我要执行此操作时,我将执行以下操作:

function exec-stuff {
    echo "do some command"
    echo "do another command"
}
conditional-do /path/to/file exec-stuff
Run Code Online (Sandbox Code Playgroud)

问题是,我烦恼的是我要定义两件事:一组要执行的命令的功能,然后调用我的第一个功能。

我想以一种干净的方式直接将此命令块(通常是2个或更多)传递给“条件执行”,但是我不知道这是如何可行的(或者甚至是可能的)...有人吗?有任何想法吗?

请注意,我需要将其作为可读的解决方案...否则,我宁愿坚持使用现有的东西。

bash

6
推荐指数
1
解决办法
2549
查看次数

参数化SQL列?

我有一些代码利用参数化查询来防止注入,但我还需要能够动态构造查询,而不管表的结构如何.这样做的正确方法是什么?

这是一个例子,说我有一个表名列,地址,电话.我有一个网页,我在其中运行显示列并使用它们作为选项填充选择下拉列表.

接下来,我有一个名为Search的文本框.此文本框用作参数.

目前我的代码看起来像这样:

result = pquery('SELECT * FROM contacts WHERE `' + escape(column) + '`=?', search);

不过,我从中得到了一种icky的感觉.我使用参数化查询的原因是为了避免使用转义.此外,转义可能不是为逃避列名而设计的.

我怎样才能确保这个按照我的意图运作?

编辑: 我需要动态查询的原因是架构是用户可配置的,我不会修复任何硬编码的东西.

sql-injection parameterized

8
推荐指数
1
解决办法
2123
查看次数

如何从C/C++调用.NET程序集?

假设我正在用C++和C#编写应用程序.我想用C++编写低级部分并在C#中编写高级逻辑.如何从我的C++程序加载.NET程序集并开始调用方法并访问我的C#类的属性?

.net c# c++

26
推荐指数
2
解决办法
2万
查看次数

在WinForm应用程序中进行批处理时,如何让UI线程更新UI?

我有一个用.NET 3.5用C#编写的WinForms应用程序.它运行一个冗长的批处理过程.我希望应用程序更新批处理正在执行的操作的状态.更新UI的最佳方法是什么?

.net c# winforms

9
推荐指数
2
解决办法
5488
查看次数