问题标签 [api-design]
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.
asp.net - ASP.NET 4.0 中的 ViewStateMode - 向后兼容?
是否引入了新的 ViewStateMode 属性以避免破坏现有的 EnableViewState?
在页面级别设置 EnableViewState = false 是否会导致 ViewStateMode 设置被忽略?
PS:stackoverflow中的CW是什么?
java - 多个操作取决于传递的对象的类型
假设我创建了一个传递对象的方法,并且该方法将根据传递的对象执行操作。我应该如何识别对象?
我曾想过使用类名来识别对象,但这可能不切实际,因为我可以很容易地更改对象的类名,并且在以后的开发过程中会产生头疼的问题。我对吗?
编辑:例如,我有物体球和炸弹。如果我有另一个叫做墙的对象,并且墙有解决与墙碰撞的方法(例如碰撞球和炸弹的坐标),但根据碰撞对象(即球和炸弹)有不同的逻辑
java - 仅支持半开范围时如何进行包含范围查询(ala SortedMap.subMap)
上SortedMap.subMap
这是 API SortedMap<K,V>.subMap
:
SortedMap<K,V> subMap(K fromKey, K toKey)
:返回此地图部分的视图,其键范围从fromKey
, 包含 , 到toKey
, 不包含。
这种包容性的下限、独占的上限组合(“半开范围”)在 Java 中很普遍,虽然它确实有它的好处,但它也有它的怪癖,我们很快就会看到。
以下代码段说明了 的简单用法subMap
:
最后一行很重要:7=Seven
由于 的排他性上限而被排除在外subMap
。现在假设我们实际上需要一个包容性上限,那么我们可以尝试编写一个这样的实用方法:
然后,继续上面的代码片段,我们得到:
需要进行一些关键观察:
- 好消息是我们不关心值的类型,但是......
subMapInclusive
假定Integer
密钥to + 1
工作。- 一个通用版本也需要例如
Long
键是不可能的(请参阅相关问题) - 更不用说 for 了,
Long
我们需要对比Long.MAX_VALUE
- 数字原始盒装类型的重载
Byte
,Character
等,作为键,都必须单独编写 - 需要对 进行特殊检查
toInclusive == Integer.MAX_VALUE
,因为+1
会溢出,并且subMap
会抛出IllegalArgumentException: fromKey > toKey
- 一个通用版本也需要例如
- 一般来说,这是一个过于丑陋和过于具体的解决方案
String
钥匙呢?或者一些甚至可能不是的未知类型Comparable<?>
?
所以问题是:是否有可能编写一个通用subMapInclusive
方法,该方法采用SortedMap<K,V>
, and K fromKey, K toKey
, 并执行包含范围的subMap
查询?
相关问题
上NavigableMap
应该提到的是,有一个NavigableMap.subMap
重载需要两个额外boolean
的变量来表示边界是包含还是排除。如果这是在 中提供的SortedMap
,那么上面的任何一个都不会被问到。
因此,使用NavigableMap<K,V>
for 包含范围查询本来是理想的,但是虽然Collections
为(除其他外)提供了实用方法,但SortedMap
我们无法享受与NavigableMap
.
相关问题
在仅提供独占上限范围查询的 API 上
- 这是否突出了排他上限范围查询的问题?
- 过去,当独占上限是唯一可用的功能时,包含范围查询是如何完成的?
java - 为什么 Java 不允许在枚举中覆盖 equals(Object)?
我注意到以下代码段...
...不允许用于枚举,因为该方法equals(Object x)
定义final
为Enum
. 为什么会这样?
我想不出任何需要覆盖equals(Object)
Enum 的用例。我只是想知道这种行为背后的原因。
.net - 设计 .NET API 以供将来与 F# 一起使用的提示
我正在设计一个 .NET API 以允许开发人员为3D 模拟足球联赛创建 RoboCup 代理。
我对 API 如何与 C# 代码一起工作感到非常满意,但是我想使用这个项目来提高我的 F# 技能(目前基于阅读而不是练习)。
所以我想问一下,在设计一个供 C# 和 F# 代码使用的 API 时,我应该考虑哪些事情。
一些点。
- 我相当大量地使用矩阵和向量数学。这些是当前不可变的类/结构。
- API 目前定义了一些与消费者实现的接口(例如:)
IAgent
,使用它们的实现实例(例如:)MyAgent
来构造其他 API 类(例如:)new Client(myAgent)
。 - API 触发事件。
- API 公开了一些委托类型。
- API 包括几个枚举。
我想尽快发布 API 的一个版本,并且如果我意识到从 F# 使用它太难的话,我不想在以后对其进行重大更改。任何建议表示赞赏。
guava - 为什么 Guava 中的 Iterables.find() 会抛出 NoSuchElementException,而不是返回 null?
我喜欢 Google Guava 并且经常使用它,但我总是发现我在写一种方法。
对我来说,这似乎是一个非常有用的补充Iterables
(也Iterators
就此而言),所以我想知道为什么它会丢失。此外,虽然我可以看到有一个 throws 方法的意义NoSuchElementException
,也许是为了区分找到 null 和没有找到元素,但只有当您使用的谓词是时才会出现这种情况
这似乎不是一个常见的情况。
那么为什么 guava 设计者选择了这种行为,而不是如果找不到就返回 null 呢?
这是 [Iterables.find()][1] 的 javadoc
[1]: http: //google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/collect/Iterables.html#find (java.lang.Iterable, com.google.common.base.谓词)
java - 为什么 int num = Integer.getInteger("123") 会抛出 NullPointerException?
以下代码抛出NullPointerException
:
我的编译器是否调用getInteger
null 因为它是静态的?这没有任何意义!
发生了什么?
api - 用于创建 API 文档/提案的平台无关工具
有哪些工具可用于开发独立于平台的 API 文档?
我正在设计提议的 API,并希望以结构化且易于编辑的方式编写文档。我看到的很多答案基本上都是“使用内置语言特定的文档工具”,但由于我是从“顶级”设计 API,而不是实现它,所以这不是那么有用。我正在寻找 API 文档的 CMS
我已经看到了一些使用 PBWiki 或 Confluence 的建议,但我不相信普通的 wiki 是最好的选择,尽管版本控制方面很好。
从理论上讲,使用 CCK 构建用于 API 调用和用于读取 API 的视图的 Drupal 构建,但这对于我正在寻找的东西来说有点繁重。
是否有 API 文档管理系统?为 API 编写和管理与平台无关的文档的最佳选择是什么?
我已经看到了与此相关的问题,但还没有一个令人满意的答案。
java - 为什么 String.valueOf(null) 会抛出 NullPointerException?
根据文档,该方法String.valueOf(Object obj)
返回:
如果参数是
null
,则字符串等于"null"
; 否则,obj.toString()
返回 的值。
但是当我尝试这样做时怎么会:
它会抛出 NPE 吗?(不信你自己试试!)
怎么会这样?文件是在骗我吗?这是Java中的主要错误吗?
java - 哪种设计更好:通用构建器或几种具体方法?
我需要创建一个电子邮件通知服务(作为更大项目的一部分)。
它将用于发送基于 html 模板的几种类型的通知消息。
我可以通过两种方式设计它:
第一种方式是基于建造者模式。它是通用的(我认为)并且可以处理所有必要的情况。但是对于使用它的人来说不是很方便。典型用法如下所示:
/li>第二种方法是显式地实现所有情况。这意味着使用代码(如下所示)将尽可能简单,但每次我们需要处理任何新案例时,我们都必须修改 API(添加新方法)。
/li>
哪一个更好?为什么?(如果重要的话,语言是 Java)
谢谢!