Estoy creando un modelo de objeto para un dispositivo que tiene múltiples canales. Los sustantivos utilizados entre el cliente y yo son Channel
y ChannelSet
. ("Conjunto" no es semánticamente preciso, porque está ordenado y un conjunto adecuado no lo es. Pero eso es un problema para un momento diferente).
Estoy usando C #. Aquí hay un ejemplo de uso de ChannelSet
:
// load a 5-channel ChannelSet
ChannelSet channels = ChannelSetFactory.FromFile("some_5_channel_set.json");
Console.Write(channels.Count);
// -> 5
foreach (Channel channel in channels) {
Console.Write(channel.Average);
Console.Write(", ");
}
// -> 0.3, 0.3, 0.9, 0.1, 0.2
Todo es elegante. Sin embargo, los clientes no son programadores y estarán absolutamente confundidos por la indexación cero: el primer canal es el canal 1 para ellos. Pero, en aras de la coherencia con C #, quiero mantener el ChannelSet
índice desde cero .
Esto seguramente causará algunas desconexiones entre mi equipo de desarrollo y los clientes cuando interactúan. Pero peor, cualquier inconsistencia en cómo se maneja esto dentro de la base de código es un problema potencial. Por ejemplo, aquí hay una pantalla de IU donde el usuario final ( que piensa en términos de indexación 1 ) está editando el canal 13:
Ese Save
botón finalmente dará como resultado algún código. Si ChannelSet
es 1 indexado:
channels.GetChannel(13).SomeProperty = newValue; // notice: 13
o esto si es cero indexado:
channels.GetChannel(12).SomeProperty = newValue; // notice: 12
No estoy realmente seguro de cómo manejar esto. Siento que es una buena práctica mantener una lista ordenada de cosas indexadas con enteros (the ChannelSet
) consistentes con todas las otras interfaces de matriz y lista en el universo C # (por indexación cero ChannelSet
). Pero entonces cada pieza de código entre la interfaz de usuario y el backend necesitará una traducción (restar por 1), y todos sabemos lo insidiosos y comunes que ya son los errores off-by-one.
Entonces, ¿alguna vez te ha mordido una decisión como esta? ¿Debo cero índice o un índice?