小编cha*_*aos的帖子

如何在C#中重写一个非常大的复合if语句?

在我的C#代码中,我有一个非常开始的if语句:

if((something == -1) && (somethingelse == -1) && (etc == -1)) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

它正在增长.我认为现在必须有20个条款.

应该怎么处理这个?

c# refactoring if-statement structure guard-clause

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

在表单发布时,是否会提交禁用的文本字段?

如果我通过POST提交禁用的文本字段,结果值将在操作页面上显示什么?

例如,我有:

<table border=0 cellpadding=4 cellspacing=0>
<tr><td>
   <input type="checkbox" id="chk_$item" 
    onClick="javascript:handleClick('$item')">
</td><td>
   <input type="text" id="txt_$item" name="addresses[]" value="$item">
</td></tr>
<tr><td>
   ...etc...
</td></tr>
</table>
Run Code Online (Sandbox Code Playgroud)

handleClick()JavaScript函数检查,如果chk_$item被选中,如果没有,它会禁用txt_$item文本字段.

当我提交它时,所有文本字段都转到addresses[]PHP脚本中的数组.

但是,如果它被禁用,我可以阻止该字段提交任何内容吗?它会默认执行此操作吗?如果没有,我应该如何改变行为?(我真的不想在他们被禁用时清除这些字段).

html javascript forms form-submit

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

您知道哪些技术可以避免条件分支?

有时CPU占用大部分时间的循环经常会有一些分支预测错误(错误预测)(接近0.5概率).我在非常孤立的线程上看到了一些技术但从未列出过.我所知道的那些已经解决了条件可以变为bool并且以某种方式使用0/1来改变的情况.是否有其他可以避免的条件分支?

例如(伪代码)

loop () {
  if (in[i] < C )
    out[o++] = in[i++]
  ...
}
Run Code Online (Sandbox Code Playgroud)

可以用这样的东西重写,可能会失去一些可读性:

loop() {
  out[o] = in[i]  // copy anyway, just don't increment
  inc = in[i] < C  // increment counters? (0 or 1)
  o += inc
  i += inc
}
Run Code Online (Sandbox Code Playgroud)

此外,我已经看到在野外的技术在某些情况下在有条件的情况下改变&&,&现在正在逃避我的思想.我是这个优化级别的新手,但确实感觉还有更多.

c optimization assembly

22
推荐指数
5
解决办法
1万
查看次数

PHP中是否存在短路OR,它返回最左边的值?

在某些语言中,你可以做到

$a = $b OR $c OR die("no value");

也就是说,OR将短路,仅从左到右评估值,直到找到真值.但另外,它返回已评估实际值,而不是公正值true.

在上述例子中,在PHP,$a将值1如果任一$a$b是非假值,否则会die.

所以写了一个函数first,用作

$a = first($a, $b, die("no value"));

返回任一或的.但是,它不会短路 - 它会永远.$a$bdie

ORPHP中是否有短路返回实际值?

编辑: 我给出的例子有一些很好的答案,但我想我的例子并不完全是我的意思.让我澄清一下.

$a = func1() OR func2() OR func3();

其中每个函数都执行非常强大的计算,所以我只想最多一次评估每个表达式.并且对于第一个返回真值,我希望存储实际值$a.

我认为我们可以排除编写函数,因为它不会短路.条件运算符答案将对每个表达式进行两次计算.

php logic

21
推荐指数
2
解决办法
4337
查看次数

如何跳过$ .each()的第一次迭代?

我有一个我想要迭代的JSON列表,但跳过第一个条目,如下所示:

$.each(
    data.collection,
    function() { DoStuffButOnlyIfNotTheFirstOne(); }
);
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

jquery

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

获取Perl数组的最后N个元素的最佳方法是什么?

获取Perl数组的最后N个元素的最佳方法是什么?

如果数组小于N,我不希望undefs在返回值中有一堆.

arrays perl slice

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

区分音乐文件中的乐器

给定音乐文件,是否可以分割出正在播放的每个乐器?也就是说我有一些Song.mp3,那首歌中有人声,吉他,贝司和鼓.我想要获得4个"轨道" - 每个不同的乐器一个.

考虑到乐器可以重叠,我猜这几乎是不可能的,而且很难区分重叠的声音,更不用说乐器了.

然而,有一个库,或算法,或一些这样做的方式,我很想知道如何.

language-agnostic

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

如何在MySQL的左连接中获取关联行的计数?

我有两个表,一个vehicle带列的表:

  • id
  • stock
  • year
  • make
  • model

和一个images包含列的表:

  • id
  • vehicle_id
  • name
  • caption
  • default tinyint(1)

我正在尝试列出车辆的信息,默认图像以及车辆的图像总数.目前我使用以下SELECT声明:

SELECT vehicle.id, vehicle.stock, vehicle.year,
    vehicle.make, vehicle.model, images.name,
    COUNT(images.id)
FROM vehicle
LEFT JOIN images
ON vehicle.id = images.vehicle_id
Run Code Online (Sandbox Code Playgroud)

我最初使用的是:

ON vehicle.id = images.vehicle_id AND images.default = 1
Run Code Online (Sandbox Code Playgroud)

但是,如果数据库中存在默认图像,则图像计数将仅为1或0.我尝试过使用UNION和其他SELECT语句,但我仍然无法得到正确的结果.我需要用两个SELECT语句或有另一种方式与处理呢JOIN还是UNION

mysql sql select join subquery

14
推荐指数
3
解决办法
1万
查看次数

DRY与"喜欢遏制继承"

OO设计的一般规则是,您应该建模 - 使用继承的关系,并使用包含/聚合和转发/委派来建立关系.通过GoF的警告,你应该通常倾向于遏制继承,这可能会进一步缩小,或许可以说,如果你能在某一特定情况下对任何一个人提出强有力的理由,那么由于维护,这种遏制通常应得到点头.问题继承有时会导致.

我理解这种想法背后的原因,我并不一定反对.但是,当我看到一个包含大量方法的类时,每个方法只转发到一些实例变量,我看到了一种代码重复的形式.在我看来,代码重复是最终的代码味道.重新实现一个庞大的方法协议只是因为两个类之间的关系并不严格 - 似乎有点矫枉过正.这是添加到系统中的额外的,不必要的代码,现在需要像系统的任何其他部分一样进行测试和记录的代码 - 如果您刚刚继承,则可能不需要编写的代码.

坚持这种遏制继承原则的成本是否超过其收益?

oop design-patterns

14
推荐指数
1
解决办法
4237
查看次数

为什么我的jQuery点击处理程序似乎为某些目标运行多次?

我申请:

$(".newContentLink").click(function() {
    $("#test").append("1");
});
Run Code Online (Sandbox Code Playgroud)

在这:

<span id="contents">
<input class="newContentLink" type="submit" style="width: 100%;" value="CREATE A NEW CONTENT"/>
<span id="content1" class="content study">
</span>
<input class="newContentLink" type="submit" style="width: 100%;" value="CREATE A NEW CONTENT"/>
<span id="content3" class="content study">
</span>
<input class="newContentLink" type="submit" style="width: 100%;" value="CREATE A NEW CONTENT"/>
<span id="content4" class="content category">
</span>
<input class="newContentLink" type="submit" style="width: 100%;" value="CREATE A NEW CONTENT"/>
</span>
Run Code Online (Sandbox Code Playgroud)

为什么当我点击它添加111的前2个按钮时,下一个按钮增加11,最后一个按钮增加1?

jquery onclick

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