在我的C#代码中,我有一个非常开始的if语句:
if((something == -1) && (somethingelse == -1) && (etc == -1)) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
它正在增长.我认为现在必须有20个条款.
我应该怎么处理这个?
如果我通过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脚本中的数组.
但是,如果它被禁用,我可以阻止该字段提交任何内容吗?它会默认执行此操作吗?如果没有,我应该如何改变行为?(我真的不想在他们被禁用时清除这些字段).
有时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)
此外,我已经看到在野外的技术在某些情况下在有条件的情况下改变&&,&现在正在逃避我的思想.我是这个优化级别的新手,但确实感觉还有更多.
在某些语言中,你可以做到
$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.
我认为我们可以排除编写函数,因为它不会短路.条件运算符答案将对每个表达式进行两次计算.
我有一个我想要迭代的JSON列表,但跳过第一个条目,如下所示:
$.each(
data.collection,
function() { DoStuffButOnlyIfNotTheFirstOne(); }
);
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
获取Perl数组的最后N个元素的最佳方法是什么?
如果数组小于N,我不希望undefs在返回值中有一堆.
给定音乐文件,是否可以分割出正在播放的每个乐器?也就是说我有一些Song.mp3,那首歌中有人声,吉他,贝司和鼓.我想要获得4个"轨道" - 每个不同的乐器一个.
考虑到乐器可以重叠,我猜这几乎是不可能的,而且很难区分重叠的声音,更不用说乐器了.
然而,有一个库,或算法,或一些这样做的方式,我很想知道如何.
我有两个表,一个vehicle带列的表:
idstockyearmakemodel和一个images包含列的表:
idvehicle_idnamecaptiondefault 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?
OO设计的一般规则是,您应该建模 - 使用继承的关系,并使用包含/聚合和转发/委派来建立关系.通过GoF的警告,你应该通常倾向于遏制继承,这可能会进一步缩小,或许可以说,如果你能在某一特定情况下对任何一个人提出强有力的理由,那么由于维护,这种遏制通常应得到点头.问题继承有时会导致.
我理解这种想法背后的原因,我并不一定反对.但是,当我看到一个包含大量方法的类时,每个方法只转发到一些实例变量,我看到了一种代码重复的形式.在我看来,代码重复是最终的代码味道.重新实现一个庞大的方法协议只是因为两个类之间的关系并不严格 - 似乎有点矫枉过正.这是添加到系统中的额外的,不必要的代码,现在需要像系统的任何其他部分一样进行测试和记录的代码 - 如果您刚刚继承,则可能不需要编写的代码.
坚持这种遏制继承原则的成本是否超过其收益?
我申请:
$(".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 ×2
arrays ×1
assembly ×1
c ×1
c# ×1
form-submit ×1
forms ×1
guard-clause ×1
html ×1
if-statement ×1
javascript ×1
join ×1
logic ×1
mysql ×1
onclick ×1
oop ×1
optimization ×1
perl ×1
php ×1
refactoring ×1
select ×1
slice ×1
sql ×1
structure ×1
subquery ×1