问题标签 [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 投票
10 回答
23570 浏览

python - 替代 `match = re.match(); 如果匹配:...`成语?

如果您想检查某些内容是否与正则表达式匹配,如果是,请打印第一组,您可以这样做..

这完全是迂腐的,但是中间match变量有点烦人..

像 Perl 这样的语言通过为匹配组创建新的$1..变量来做到这一点,比如 ..$9

这个 reddit 评论中,

..我认为这是一个有趣的想法,所以我写了一个简单的实现:

(这个功能理论上可以修补到_sre.SRE_Match对象中)

with如果您可以跳过语句代码块的执行,如果没有匹配项,那就太好了,这将简化为..

..但根据我从PEP 343中推断出的内容,这似乎是不可能的

有任何想法吗?正如我所说,这真的是微不足道的烦恼,几乎到了代码高尔夫的地步。

0 投票
2 回答
4402 浏览

python - 是否有用于变量检查和赋值的 Python 快捷方式?

我发现自己经常输入以下内容(为 Django 开发,如果相关的话):

或者,更常见的是(即建立一个参数列表)

有没有我不知道的捷径可以简化这一点?有那种逻辑的东西myVariable = assign_if_exists(testVariable)

0 投票
5 回答
303 浏览

c++ - 关于返回 void 的文体问题

考虑以下人为设计的示例:

这段代码工作得很好,我很确定它是规范有效的,但我(也许我自己)认为这种不寻常的风格,因为调用似乎返回了函数的结果,尽管这两个函数都是原型的无效。

通常,我希望看到:

我觉得,这对正在发生的事情没有任何歧义。

SO社区,我可以就返回无效的编码风格是否令人困惑或有问题获得您的意见?它有成语的感觉;我应该使用它还是避免它?

一般来说,我会争取清晰并使用第二种风格。另一方面,第一种形式的简洁性在某种程度上吸引了我。

0 投票
8 回答
12340 浏览

ruby-on-rails - Rails 成语避免在 has_many 中重复:通过

我的 Rails 应用程序中的用户和角色之间存在标准的多对多关系:

我想确保一个用户只能被分配一次任何角色。任何插入重复项的尝试都应忽略该请求,而不是引发错误或导致验证失败。我真正想要表示的是一个“集合”,其中插入集合中已经存在的元素没有任何效果。{1,2,3} U {1} = {1,2,3},而不是 {1,1,2,3}。

我意识到我可以这样做:

或者通过创建一个包装方法(例如add_to_roles(role)),但我希望有一些惯用的方式通过关联使其自动化,这样我就可以写:

它只是为我工作。这样,我就不必记住检查重复或使用自定义方法。我缺少的框架中有什么东西吗?我首先认为 has_many 的 :uniq 选项可以做到这一点,但它基本上只是“选择不同的”。

有没有办法以声明方式做到这一点?如果没有,也许通过使用关联扩展?

以下是默认行为如何失败的示例:

0 投票
10 回答
967 浏览

c++ - 对临时对象的常量引用

假设有一个类似的功能

我需要Foo在发送之前预处理对象

用法

所以X PreprocessFoo()函数应该能够返回原始对象或复制/修改而不是返回新对象。我不能返回const Foo&,因为它可能引用一个临时对象。我也不喜欢Foo在堆上创建。

完美,X应该是 和 的某种联合const Foo&Foo可以被视为const Foo&. 知道如何以更优雅的方式做到这一点吗?

我目前的解决方案:

用法:

0 投票
6 回答
1343 浏览

ruby - 什么是更惯用的 Ruby 编写方式?

Ruby 人会因为我这样写而嘲笑我吗?它似乎不像我见过的一些 Ruby 代码那样特别简洁。

0 投票
3 回答
525 浏览

cross-platform - Mac、Windows 和 Linux 的惯用应用程序数据

我是 Mac 用户,所以我知道对于 Mac OS X,我希望我的游戏打包在一个不错的 .app 包中(例如 Aquaria 所做的)。但是 Windows 的标准是什么?Linux 的标准是什么?

我对两者都比较陌生,但据我了解,两者都没有相当于 Mac 应用程序包。那么用户是否更喜欢包含可执行文件和“数据”文件夹的文件夹?或者数据是否应该直接位于可执行文件的文件夹中,几乎总是(例如)通过快捷方式或通过(类似于)“开始”菜单访问?

哪种方式会让用户觉得这是一个专门为他们的操作系统构建的普通应用程序?

编辑澄清:我不是在询问安装程序,而是在询问实际的应用程序本身。

0 投票
6 回答
6774 浏览

c++ - 如何在 C++ 中实现生成器?

我想知道如何在 C++ 中实现生成器,比如 Python?Python 可以使用关键字“yield”来做到这一点。但是如何在 C++ 中做到这一点?

0 投票
8 回答
8872 浏览

for-loop - 对于循环构造和代码复杂度

我的小组正在对 for 循环构造进行一些讨论和强烈的感受。

我喜欢这样的循环:

但其他人似乎更喜欢布尔标志,如:

(并且,在语言允许的情况下,使用“for (int x = 0; ...”。)

第一种样式有一个更少的变量来跟踪和一个更简单的循环头。尽管以“重载”循环控制变量和(有些人会抱怨)使用 break 为代价。

第二种风格明确定义了变量的角色,但更复杂的循环条件和循环体(设置了 else 或 continue after found ,或循环平衡中的“if (!found)”)。

我认为第一种风格在代码复杂性上胜出。我正在寻找更广泛受众的意见。指向更容易阅读和维护的实际研究的指针会更好。“没关系,把它排除在你的标准之外”也是一个很好的答案。

OTOH,这可能是错误的问题。我开始认为正确的规则是“如果你必须打破一个 for,那真的是一段时间。”

执行前两个示例的操作,但行数更少。不过,它确实将 x 的初始化、测试和增量分成了三行。

0 投票
2 回答
406 浏览

python - 命名作为 python 保留名称的 django 模型字段的正确习惯用法是什么?

我有一个模型需要有一个名为的字段complex和另一个名为type. 这些都是python保留名称。根据 PEP 8,我应该分别命名它们complex_type_但是 django 不允许我使用尾随下划线命名的字段。处理这个问题的正确方法是什么?