问题标签 [idioms]

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 投票
4 回答
1075 浏览

ruby - 如何编写 Ruby 方法来处理零个、一个或多个输入?

我有一个 Ruby 方法,如下所示:

现在,您可以这样称呼它:

等等。

如何更改方法以使其正确处理可迭代输入以及无输入和零输入?例如,我希望能够支持:

这可以惯用地做吗?如果是这样,编写方法以使它们可以接受零个、一个或多个输入的最佳方法是什么?

0 投票
4 回答
11544 浏览

ruby - 使用 Ruby 中的属性对对象列表进行排序

我有一个Fruit名为 的结构列表basket。每个Fruit结构都有一个name(字符串)和一个calories(整数)。我想这样排序basket

  1. Fruit最高的scalories最先出现。例如,500 卡路里的水果出现在 400 卡路里的水果之前。

  2. 如果两个Fruits 相等calories,则按字母顺序先出现Fruitname先出现,忽略大小写。例如,给定两种热量相同的水果,一种名为“香​​蕉”的水果将排在一种名为“柑橘”的水果之前。

的定义Fruit不是我可以控制的,所以我更喜欢不涉及将任何东西混入Fruit或更改它的解决方案。这可能吗?

0 投票
10 回答
16394 浏览

java - Java中是否存在用于满足接口的空方法的习语?

假设我有一个Foo实现接口的类,例如MouseListener. 该MouseListener接口由五种方法组成,但我只想覆盖其中一种(mouseClicked())。是否有一种标准的、惯用的方式来格式化其他方法?

我的倾向是写以下内容:

我很喜欢明确表示方法是有意留白而不是意外留白,但我并不热衷于放弃几乎没有任何东西的所有垂直空间。我还看到了以下格式:

我对此一般没问题,并且我理解作者的意图,但是当添加(推荐的)@Override注释时,它变得非常难看。

我不是一个特别有经验的 Java 编码器,所以我想我会问是否有约定。想法?

0 投票
8 回答
3698 浏览

python - Python 习语“if __name__ == '__main__'”的 clojure 等价物是什么?

我正在涉足 clojure,并且在尝试确定与这个常见的 python 习语等效的 clojure(和/或 Lisp)时遇到了一些麻烦。

习惯用法是在python模块的底部通常有一些测试代码,然后是运行代码的语句,例如:

这对于简单的临时测试很有用。人们通常会通过编写来使用这个模块from mymodule import MyClass,在这种情况下_runTests()永远不会被调用,但是在最后的代码片段中,人们也可以通过python mymodule.py直接从命令行键入来运行它。

Clojure(和/或常见的 lisp)中是否有等效的成语?我不是在追求一个成熟的单元测试库(嗯,我是,但不是在这个问题中),我只想在一个模块中包含一些代码,这些代码只会在某些情况下运行,所以我可以一种运行我一直在研究的代码的快速方法,但仍然允许我的文件像普通模块/命名空间一样被导入。

0 投票
16 回答
244186 浏览

string - Python:将 None 转换为空字符串的最惯用方法?

执行以下操作最惯用的方法是什么?

更新:我正在采纳 Trypich 的使用 str(s) 的建议,这使得该例程适用于字符串以外的其他类型。Vinay Sajip 的 lambda 建议给我留下了深刻的印象,但我想让我的代码保持相对简单。

0 投票
6 回答
26634 浏览

multithreading - 避免多线程进程中的死锁

为了避免死锁,有人应该遵循哪些最佳实践/习惯用法?

0 投票
2 回答
175 浏览

ruby-on-rails - 在rails的视图中将类属性添加到html元素的最干净的方法是什么

我正在为部分视图编写一些 Rails 代码,并且我希望它仅在有人已经登录到此处的站点时才显示评论字段。

如果页面被还不是站点成员的人查看,则shared/comment_not_logged_in应该传入片段。

但是,我完全不知道为什么我不能运行相同的检查来决定页面是否应该在此处将类属性“missing_your_voice”添加到封闭的 div 元素中:

同样的成语,"missing_your_voice" if not current_user在 irb 中返回字符串,也在控制台调试器中返回。

我在这里做错了什么?

0 投票
2 回答
1248 浏览

ruby - 形状继承示例和“Ruby 方式”

在我从 C++ 十年过渡到 Ruby 的过程中,我发现自己在猜测如何完成最简单的事情。鉴于下面的经典形状推导示例,我想知道这是否是“红宝石之路”。虽然我相信下面的代码本质上没有任何问题,但我仍然觉得我没有充分利用 Ruby 的全部力量。

这是实施的“红宝石之路”吗?如果没有,您将如何实施?

0 投票
5 回答
222 浏览

c# - 将派生值作为属性公开是一种好的形式吗?

给定 7 个潜在输入,我需要得出一个重要值Bob 叔叔敦促我避免使用具有这么多参数的函数,所以我提取了 class。现在所有参数都是属性,我只剩下一个没有参数的计算方法。

“那个”,我认为,“可能是一个属性,但我不确定这是否是惯用的 C#。”

我应该将最终结果作为属性公开,还是作为没有参数的方法公开?一般的 C# 程序员会发现属性令人困惑或令人反感吗?Alt.Net 人群呢?

如果是后者:我也应该将中间结果声明为 [private] properties吗?由于大量的方法提取,我有几个中期结果。其中许多不应该是公共 API 的一部分。不过,其中一些可能很有趣,如果我可以将它们作为属性访问,我的表达式会看起来更清晰:

快乐实验部:

在 VS2008 中调试我的代码时,我注意到我一直将鼠标悬停在计算中间结果的方法调用上,期望鼠标悬停在它们的返回值上。将所有方法转换为属性后,我发现将中间结果公开为属性极大地有助于调试。我对此很满意,但对可读性仍有挥之不去的担忧。

中间值声明看起来更混乱。然而,没有括号的表达式更容易阅读。我不再觉得必须以动词开头的方法名称。对比:

我或许应该解释一下,我用 Python 编码已经有十年了。我一直倾向于花费额外的时间让我的代码更容易调用而不是编写。我不确定 Python 社区是否会将这种面向属性的风格视为可接受的“Pythonic”,但是:

0 投票
3 回答
2246 浏览

unit-testing - 如何测试匿名类?

相信你一定对这个成语很熟悉,这算是java给闭包找的借口吧

我经常使用这种成语/模式,但最近我尝试对其进行测试,这让我很头疼......

如何独立测试 ResourceManager 和 Client 类?我发现这将它们紧密结合在一起,以至于你不能轻易做到。

想法受到赞赏。

问候