问题标签 [rationale]

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 投票
2 回答
2618 浏览

cakephp - 为什么 CakePHP 使用不同的复数/单数命名约定?

有人可以在这里解释一下为什么 CakePHP 有一个惯例,即对数据库表和控制器使用复数名称,而对模型使用单数名称?为什么不总是使用单数,或者总是使用复数?对我来说,总是不得不思考“现在我在这里使用复数还是单数?”似乎令人困惑。(或者有没有一种简单的方法来记住??)然后你就有了结合使用两者的连接表!

我认为某处有充分的理由,但只是没有遇到过。
(我真的希望这不仅仅是因为 Ruby-on-Rails 那样工作。)

西蒙。

0 投票
3 回答
1184 浏览

python - python变量范围

我正在自学python,我正在将一些示例代码翻译成这个

这几乎是我想要的类定义

稍后在 main 方法中,我创建一个实例并调用它a

这就是我发现a声明的变量main可用于该方法average 并使该方法工作的方法,我必须 self.a + self.b + self.c键入

这是什么原理?

我找到了相关的问题,但我真的不知道它们是否大致相同

0 投票
5 回答
6592 浏览

c++ - 为什么具有多行 constexpr 函数格式不正确?

根据广义常量表达式——修订版 5,以下内容是非法的。

这是因为所有 'constexpr' 函数都必须采用{ return expression; }. 我看不出有任何理由需要这样做。

在我看来,唯一真正需要的是不读取/写入外部状态信息,并且传入的参数也是“constexpr”语句。这意味着对具有相同参数的函数的任何调用都将返回相同的结果,因此可以在编译时“知道”。

我的主要问题是它似乎只是迫使你做真正迂回的循环形式,并希望编译器对其进行优化,以便它对于非 constexpr 调用同样快。

constexpr要为上面的例子写一个有效的,你可以这样做:

但这更难理解,当您使用违反const-expr.

0 投票
5 回答
8627 浏览

c++ - C++ 中不允许嵌套命名空间声明是否有特定原因?

该标准不允许这样的代码:

而是需要

理由是什么?这是当时根本没有想到的,还是没有包括在内的具体原因?

似乎第一种语法更直接地表达了应该在哪个命名空间中,因为声明模仿了以后代码中命名空间的实际使用。如果您不幸使用“哑”括号计数缩进工具,它也会减少缩进。

0 投票
1 回答
1255 浏览

c++ - C++0x 智能指针比较:不一致,原因是什么?

在 C++0x (n3126) 中,可以比较智能指针,无论是关系还是相等。但是,这样做的方式对我来说似乎不一致。

例如,shared_ptr定义operator<等价于:

Usingstd::less提供关于指针值的总排序,这与未指定的普通关系指针比较不同。

但是,unique_ptr将相同的运算符定义为:

它还以类似的方式定义了其他关系运算符。


为什么要改变方法和“完整性”?也就是说,为什么shared_ptruse std::lesswhileunique_ptr使用内置的operator<?为什么不shared_ptr提供其他关系运算符,例如unique_ptr

我可以理解这两种选择背后的理由:

  • 关于方法:它表示一个指针,因此只需使用内置的指针运算符,而它需要在关联容器中可用,以便提供总排序(就像使用默认std::less谓词模板参数获得的普通指针一样)
  • 关于完整性:它表示一个指针,因此提供与指针相同的所有比较,而它是一个类类型,只需要小于可比较即可在关联容器中使用,因此只提供该要求

但我不明白为什么选择根据智能指针类型而变化。我错过了什么?


Bonus/related:std::shared_ptr似乎来自boost::shared_ptr,后者“设计”省略了其他关系运算符(也是如此std::shared_ptr)。为什么是这样?

0 投票
1 回答
358 浏览

java - 分块 XML 并将其加载到关系表中

我在一家信用合作社工作(大约 6 万个账户)。声明过程是从 70 年代开始的,它将数据与布局紧密耦合。简而言之,您运行一个作业,它会生成一个包含每个帐户的语句的文本文件。我已经修改了大型机配置,现在不是输出文本,而是像这样得到 XML:

我编写了 java 代码来从关系表中提取数据并使用 iText 即时构建 PDF。语句中显示的一些数据是根据 XML 中的数据计算得出的。例如,XML 包含共享上的所有事务。在对帐单上,我们要显示贷方数量和借方数量。一旦加载到数据库中,我可以使用视图即时计算这些值并将数据提供给我的 java 应用程序。

这个 XML 文件约为 900MB,并且只会随着我们添加更多成员而增长。

我想一次处理 xml 一个“语句”。 http://mrico.eu/entry/parsing_chunks_of_xml_documents

JAXB 可以分块解析大型 XML 文件

一旦我有一个单独的语句,我想将它的份额(检查、储蓄、签证等)加载到相应的数据库表中。

似乎完成此操作的最简单方法是将语句绑定到 POJO,然后对 POJO 中的每个复杂元素(共享或交易或贷款)进行插入。

你们会推荐什么解析器/绑定器/持久性工具的组合?

就个人而言,我更喜欢原始的 JDBC 插入,因此解析器和绑定器的问题更为重要。

注意:我可能会为 XML 创建一个模式,但由于大型机构建 XML 文件的方式,它可能很脆弱。任何使用 Fiserv 的 Spectrum 软件的人都会感到我的痛苦。

0 投票
6 回答
15978 浏览

.net - DBNull 的意义何在?

在 .NET 中有null引用,它在任何地方都用来表示对象引用是空的,然后是DBNull,它被数据库驱动程序(以及少数其他驱动程序)用来表示......几乎相同的东西。自然,这会造成很多混乱,并且必须大量执行转换例程等。

那么,为什么最初的 .NET 作者决定这样做呢?对我来说这毫无意义。他们的文档也没有任何意义:

DBNull 类表示一个不存在的值。例如,在数据库中,表的一行中的列可能不包含任何数据。也就是说,该列被认为根本不存在,而不仅仅是没有值。DBNull 对象表示不存在的列。此外,COM 互操作使用 DBNull 类来区分指示不存在值的 VT_NULL 变体和指示未指定值的 VT_EMPTY 变体。

关于“列不存在”的废话是什么?存在一列,它只是没有特定行的值。如果它不存在,我会在尝试访问特定单元格时遇到异常,而不是DBNull! 我可以理解区分VT_NULLand的必要性VT_EMPTY,但那为什么不做一个COMEmpty类呢?这将更适合整个 .NET 框架。

我错过了什么吗?谁能阐明为什么DBNull发明以及它有助于解决哪些问题?

0 投票
2 回答
1101 浏览

c++ - Koenig 查找的基本原理

Koenig 查找的基本原理是什么?

无法避免将其视为使您的代码更难阅读且更不稳定的东西。

难道他们不能定义 Koenig 查找,使其仅适用于特定情况(即:非成员运算符)或明确需要时?

0 投票
5 回答
667 浏览

c++ - 在 C++ 中引入引用的原因究竟是什么?

从我最近的问题(为什么 c++ 引用被认为比指针更安全?)中发生的讨论,它在我的脑海中提出了另一个问题:在 c++ 中引入引用的原因到底是什么?

0 投票
5 回答
2438 浏览

c++ - C++:隐藏规则背后的基本原理

C++中隐藏规则背后的基本原理是什么?

  • 如果这是一个有意义的功能,我认为也应该可以隐藏函数而不定义具有相同名称的新函数:像这样:

    但这是不可能的。

  • 我不认为它简化了编译器的工作,因为当你明确使用指令时编译器必须能够取消隐藏函数:using

    /li>

那么,怎么会有隐藏规则呢?


嗯,这三个答案似乎都很好,并且显示了隐藏规则的不同理由。我不确定我应该接受哪个答案。