我正在设计一个Java中的API,用于一组数字算法,这些算法作用于双精度数组(用于实时金融统计).出于性能原因,API必须使用原始数组,因此List<Double>不是一种选择.
典型的用例可能是一个算法对象,它接受两个输入数组,并返回一个输出数组,其中包含从两个输入计算的结果.
我想就如何在API中使用数组参数建立一致的约定,特别是:
someFunction(double[] input, int inputOffset, int length)目标是实现API用户的效率,简单性以及API内部和已建立的约定之间的一致性.
显然有很多选择,那么最佳的整体API设计是什么?
这听起来确实像是三个问题,所以这是我的观点。
当然,这是非常主观的 - 所以 - 你的里程可能会有所不同:
是的。始终包括偏移量和长度。如果特定函数的大多数用例不需要这些参数,请重载该函数,以便不需要输入和长度。
为此,我将遵循以下标准arraycopy:
arraycopy(对象 src,int srcPos,对象 dest,int destPos,int 长度)
除非调用者重复调用您的实用程序函数,否则此处的性能差异可以忽略不计。如果它们只是一件事情,那么应该没有什么区别。如果它们被重复调用,那么您应该让调用者向您发送一个分配的数组。