问题标签 [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.
cakephp - 为什么 CakePHP 使用不同的复数/单数命名约定?
有人可以在这里解释一下为什么 CakePHP 有一个惯例,即对数据库表和控制器使用复数名称,而对模型使用单数名称?为什么不总是使用单数,或者总是使用复数?对我来说,总是不得不思考“现在我在这里使用复数还是单数?”似乎令人困惑。(或者有没有一种简单的方法来记住??)然后你就有了结合使用两者的连接表!
我认为某处有充分的理由,但只是没有遇到过。
(我真的希望这不仅仅是因为 Ruby-on-Rails 那样工作。)
西蒙。
python - python变量范围
我正在自学python,我正在将一些示例代码翻译成这个
这几乎是我想要的类定义
稍后在 main 方法中,我创建一个实例并调用它a
这就是我发现a
声明的变量main
可用于该方法average
并使该方法工作的方法,我必须 self.a + self.b + self.c
键入
这是什么原理?
我找到了相关的问题,但我真的不知道它们是否大致相同
c++ - 为什么具有多行 constexpr 函数格式不正确?
根据广义常量表达式——修订版 5,以下内容是非法的。
这是因为所有 'constexpr' 函数都必须采用{ return expression; }
. 我看不出有任何理由需要这样做。
在我看来,唯一真正需要的是不读取/写入外部状态信息,并且传入的参数也是“constexpr”语句。这意味着对具有相同参数的函数的任何调用都将返回相同的结果,因此可以在编译时“知道”。
我的主要问题是它似乎只是迫使你做真正迂回的循环形式,并希望编译器对其进行优化,以便它对于非 constexpr 调用同样快。
constexpr
要为上面的例子写一个有效的,你可以这样做:
但这更难理解,当您使用违反const-expr
.
c++ - C++ 中不允许嵌套命名空间声明是否有特定原因?
该标准不允许这样的代码:
而是需要
理由是什么?这是当时根本没有想到的,还是没有包括在内的具体原因?
似乎第一种语法更直接地表达了应该在哪个命名空间中,因为声明模仿了以后代码中命名空间的实际使用。如果您不幸使用“哑”括号计数缩进工具,它也会减少缩进。
c++ - C++0x 智能指针比较:不一致,原因是什么?
在 C++0x (n3126) 中,可以比较智能指针,无论是关系还是相等。但是,这样做的方式对我来说似乎不一致。
例如,shared_ptr
定义operator<
等价于:
Usingstd::less
提供关于指针值的总排序,这与未指定的普通关系指针比较不同。
但是,unique_ptr
将相同的运算符定义为:
它还以类似的方式定义了其他关系运算符。
为什么要改变方法和“完整性”?也就是说,为什么shared_ptr
use std::less
whileunique_ptr
使用内置的operator<
?为什么不shared_ptr
提供其他关系运算符,例如unique_ptr
?
我可以理解这两种选择背后的理由:
- 关于方法:它表示一个指针,因此只需使用内置的指针运算符,而它需要在关联容器中可用,以便提供总排序(就像使用默认
std::less
谓词模板参数获得的普通指针一样) - 关于完整性:它表示一个指针,因此提供与指针相同的所有比较,而它是一个类类型,只需要小于可比较即可在关联容器中使用,因此只提供该要求
但我不明白为什么选择会根据智能指针类型而变化。我错过了什么?
Bonus/related:std::shared_ptr
似乎来自boost::shared_ptr
,后者“设计”省略了其他关系运算符(也是如此std::shared_ptr
)。为什么是这样?
java - 分块 XML 并将其加载到关系表中
我在一家信用合作社工作(大约 6 万个账户)。声明过程是从 70 年代开始的,它将数据与布局紧密耦合。简而言之,您运行一个作业,它会生成一个包含每个帐户的语句的文本文件。我已经修改了大型机配置,现在不是输出文本,而是像这样得到 XML:
我编写了 java 代码来从关系表中提取数据并使用 iText 即时构建 PDF。语句中显示的一些数据是根据 XML 中的数据计算得出的。例如,XML 包含共享上的所有事务。在对帐单上,我们要显示贷方数量和借方数量。一旦加载到数据库中,我可以使用视图即时计算这些值并将数据提供给我的 java 应用程序。
这个 XML 文件约为 900MB,并且只会随着我们添加更多成员而增长。
我想一次处理 xml 一个“语句”。 http://mrico.eu/entry/parsing_chunks_of_xml_documents
一旦我有一个单独的语句,我想将它的份额(检查、储蓄、签证等)加载到相应的数据库表中。
似乎完成此操作的最简单方法是将语句绑定到 POJO,然后对 POJO 中的每个复杂元素(共享或交易或贷款)进行插入。
你们会推荐什么解析器/绑定器/持久性工具的组合?
就个人而言,我更喜欢原始的 JDBC 插入,因此解析器和绑定器的问题更为重要。
注意:我可能会为 XML 创建一个模式,但由于大型机构建 XML 文件的方式,它可能很脆弱。任何使用 Fiserv 的 Spectrum 软件的人都会感到我的痛苦。
.net - DBNull 的意义何在?
在 .NET 中有null
引用,它在任何地方都用来表示对象引用是空的,然后是DBNull
,它被数据库驱动程序(以及少数其他驱动程序)用来表示......几乎相同的东西。自然,这会造成很多混乱,并且必须大量执行转换例程等。
那么,为什么最初的 .NET 作者决定这样做呢?对我来说这毫无意义。他们的文档也没有任何意义:
DBNull 类表示一个不存在的值。例如,在数据库中,表的一行中的列可能不包含任何数据。也就是说,该列被认为根本不存在,而不仅仅是没有值。DBNull 对象表示不存在的列。此外,COM 互操作使用 DBNull 类来区分指示不存在值的 VT_NULL 变体和指示未指定值的 VT_EMPTY 变体。
关于“列不存在”的废话是什么?存在一列,它只是没有特定行的值。如果它不存在,我会在尝试访问特定单元格时遇到异常,而不是DBNull
! 我可以理解区分VT_NULL
and的必要性VT_EMPTY
,但那为什么不做一个COMEmpty
类呢?这将更适合整个 .NET 框架。
我错过了什么吗?谁能阐明为什么DBNull
发明以及它有助于解决哪些问题?
c++ - Koenig 查找的基本原理
Koenig 查找的基本原理是什么?
无法避免将其视为使您的代码更难阅读且更不稳定的东西。
难道他们不能定义 Koenig 查找,使其仅适用于特定情况(即:非成员运算符)或明确需要时?
c++ - 在 C++ 中引入引用的原因究竟是什么?
从我最近的问题(为什么 c++ 引用被认为比指针更安全?)中发生的讨论,它在我的脑海中提出了另一个问题:在 c++ 中引入引用的原因到底是什么?
c++ - C++:隐藏规则背后的基本原理
C++中隐藏规则背后的基本原理是什么?
如果这是一个有意义的功能,我认为也应该可以隐藏函数而不定义具有相同名称的新函数:像这样:
但这是不可能的。
我不认为它简化了编译器的工作,因为当你明确使用指令时编译器必须能够取消隐藏函数:
/li>using
那么,怎么会有隐藏规则呢?
嗯,这三个答案似乎都很好,并且显示了隐藏规则的不同理由。我不确定我应该接受哪个答案。