问题标签 [design-decisions]
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.
python - numpy.split 返回列表而不是数组的基本原理?
我很惊讶会numpy.split
产生 alist
而不是array
. 我会认为返回一个 会更好array
,因为numpy
已经投入了大量工作来使数组比列表更有用。任何人都可以证明numpy
返回 alist
而不是 a 是合理的array
吗?为什么这对 numpy 开发人员来说是一个更好的编程决策?
java - 设计决策 - Math.java 中单独的 RandomNumberGeneratorHolder 类的用途/优势是什么?
所以我浏览了Math.java
源代码,我发现创建了一个持有者类来保存randomNumberGenerator
静态变量。这是相关的代码。
IMO,我们可以简单地在类本身中声明randomNumberGenerator
as 。private static final
Math
我的问题是,为此创建一个单独的持有者类有什么好处吗?或者这只是个人喜好。
java - 为什么选择ConcurrentModificationException的设计标准只是结构修改
我确实明白,只要在创建迭代器后对基础集合进行结构修改,就会引发 ConcurrentModificationExcpetion。这似乎是一个设计决定。
我想知道为什么 CME 不考虑通过 set() 方法进行更新?最终,集合正在更新,如果创建了迭代器,遍历仍然可能导致结果不一致。
c++ - 为什么 x86-64 使用 IA-64 C++ ABI?
9.1 C++
对于 C++ ABI,我们将使用 IA-64 C++ ABI 并适当地实例化它。该 ABI 的当前草案可在以下位置获得:
为什么不设计自己的 ABI?
java - java - 除了switch case和if/else之外,如何在java中实现许多条件?
需要实现一个要求,如果使用 switch case 或很多 if/else 实现,代码流将根据很多情况来决定!
要实现的示例代码:
除了 if/else 语句或 switch 案例之外,还有更好的方法来编写此类案例吗?
类似于工作流引擎的内部实现的东西,jBPM
但我实际上不能包含工作流引擎,因为它使应用程序变得繁重!
任何建议表示赞赏!
c++ - 如果堆栈在数字较低的地址处增长,为什么指针比较会反转呢?
由于堆栈向下增长,即朝着数字较小的内存地址增长,为什么这样做&i < &j
是正确的。如果我错了,请纠正我,但我想这是 C 创建者的设计决定(C++ 维护)。但我想知道为什么。
同样奇怪的是,堆分配的对象pin
位于数值上比堆栈变量更高的内存地址,这也与堆位于数值上小于堆栈的内存地址(并且向上增加)的事实相矛盾。
到目前为止我是对的吗?如果是这样,为什么 C 设计人员会扭转这种情况,即数字较小的内存地址看起来更高(至少在您比较指针或通过 addressof 运算符时&
)。这样做只是为了“让事情顺利进行”吗?
python - 在基于文本的冒险中尝试选择种族时,为什么我的角色表不能与 input() 一起使用?python3.x
所以这只是我知道我将会遇到的一长串问题的开始。在这个基于文本的冒险中,我希望最终有谜题和多个分支路径,你最终可以加入的派系,影响情况道德的选择对话(如质量效应或科托尔,但是..基于文本的)等等,等等.,但我觉得早期设置对于这次学习之旅非常重要。我还希望最终将其转换为 PYQT5,并可能最终在我为我的投资组合构建的网站上使用 UI 托管它。我只是想把它排除在外,以防你经常在这里看到我。如果您愿意,请私信我(因为我绝对可以使用守护神的帮助!)。
好的,所以手头的问题是:
我有一个种族列表可供选择:
我希望它要求玩家“选择比赛”。在玩家输入他们想玩的内容后,它会询问“你确定吗?” |这就是我卡住的地方| 如果玩家说“是”,它会结束程序,我可以尝试继续构建这个应用程序。如果玩家输入“否”,它不会返回到原始问题并允许他们再次回答。
所以,我尝试过的东西被定义为不同的方法:
我认为我糟糕的代码尝试就我一直在尝试的东西而言不言自明。
期望的结果示例:
我尝试了几种不同的方法来获得所需的结果,但它们似乎不起作用。我应该建立一个有限状态机吗?我该怎么做?长寿和使代码模块化以供将来更新的最佳方法是什么?
c++ - 如何避免在数据结构中包含作为字段存储的类?
假设我有一个Squad
带有Unit
s 动态数组的类。我正在寻找一种方法来避免将#include
“Unit.h”插入“Squad.h”和后者的用户。全球的想法是避免#include
s 导致其他人 - 这是一件非常烦人的事情。
我找到了一个像这样的简单解决方案:
(将前向声明Unit
的 s 放在std::vector
里面Squad
会失败,因为它需要自己Squad
的用户#include
Unit
,否则vector
无法分配。)
问题一:这种做法可以接受吗?当然,我不会std::vector
每次都重写(和其他人)的胆量,但是使用.cpp 中的template<typename T> T* reallocate(T*, size_t current, size_t needed)
for later s 之类的算法制作标题似乎是可以忍受的。#include
问题二:有更好的解决方案吗?我知道 pimpl 习惯用法,但不喜欢频繁的小堆分配。
顺便说一句,当我需要像 std::unordered_map 这样更复杂的数据结构时,我该怎么办?更换一个数组并不难,但也有像这样的“更糟糕”的情况。
c++ - 我应该使用 std::optional 还是继承添加可选的类成员?
我有class Item
,本身没有兴趣。但是,我需要一些Item
像衣服或武器这样的装备,它们需要额外存储一个enum class Limb
代表身体部位的物体,可以装备它们。此外,普通Item
的 s 必须与 "gear" 一起放置Item
在单个 STL 容器中,并且可能稍后取出,可能作为 "gear" Item
。我在这里看到两个选项:继承
或者std::optional
我喜欢第一个用于可扩展性和编译时类型检查的函数,当一个函数需要Gear
(不仅仅是一个Item
)而不是assert(item.is_gear())
它内部的运行时。
第二个在速度方面似乎更好(即使没有预期的性能问题,我也喜欢关心它)和设计自然性:我不需要了解任何其他class
es 和工程时的特殊用例Item
(例如,像在第一个变体中那样制作它的析构函数virtual
会破坏它)这看起来像是干净和无辜的设计。
哪个决定会更好,为什么?还是有更好的解决方案?
c++ - 函数如何要求其调用者类调用其方法之一?
我处于这样的情况:
我想Callee::request()
请求调用其中一个Caller::invoke()
成员函数,具体取决于上下文,可以在 inCallee::request()
或 in 中计算Caller::call()
:
哪些解决方案会很优雅?我不想要(从最重要到最不重要):
Callee
了解 的定义Caller
;- 使用模板;
Callee
了解声明Caller
;Caller
invoke()
自行选择;
如果Callee::request()
从Caller
.