私は他の人が最終的に使用することを望んでいるテクニカル分析ライブラリをまとめているので、自分のメソッドに入るデータを検証し、適切なものを返すことを確認したいと思います。現在、検証が失敗した場合、空白の値を返します。例外をスローする方が適切でしょうか?他の開発者がこのライブラリを使用する可能性がある場合、より良い方法は何ですか?現在検証している方法は次のとおりです。
/// <summary>
/// Calculates the MACD (Moving Average Convergence Divergence) over n periods, where n is the number of elements in the input prices.
/// </summary>
/// <param name="InputValues">The numbers used for the MACD calculation. Index 0 must be the oldest, with each index afterwards one unit of time forward. There must more values present than what the SlowEMA calls for.</param>
/// <param name="FastEMA">Optional: The smaller (faster) EMA line used in MACD. Default value is 12. Must be less than the SlowEMA.</param>
/// <param name="SlowEMA">Optional: The larger (slower) EMA line used in MACD. Default value is 26. Must be less than the number of elements in InputValues.</param>
/// <param name="SignalEMA">Optional: The EMA of the MACD line. Must be less than the FastEMA.</param>
/// <returns>Returns the components of a MACD, which are the MACD line itself, the signal line, and a histogram number.</returns>
public MACD CalculateMACD(decimal[] InputValues, decimal FastEMA = 12M, decimal SlowEMA = 26M, decimal SignalEMA = 9M)
{
MACD result;
// validate that we have enough data to work with
if (FastEMA >= SlowEMA) { return result; }
if (SlowEMA >= InputValues.Count()) { return result; }
if (SignalEMA >= FastEMA) { return result; }
// Do MACD calculation here
return result;
}