Me gustaría que las aserciones menos intensivas en cómputo permanezcan encendidas en todo momento y deshabilite las aserciones de mayor uso de cómputo. Un caso de uso práctico podría ser cuando movemos el código a producción (según el programador pragmático, esta es la forma sugerida para manejar las afirmaciones).Controlando las Afirmaciones de Java - Mejores Prácticas
¿Cuál es la mejor manera de controlar las afirmaciones? (Tenga en cuenta que ya he habilitado las aserciones en las variables de máquina virtual utilizando "-ea").
Un ejemplo sencillo:
/**
*
* @precondition sizeOfList >= 2
*/
private ArrayList<Integer> createSortedList(int sizeOfList){
ArrayList<Integer> results = new ArrayList<Integer>();
for(int i = 0; i<sizeOfList; i++){
<algorithm to add sorted numbers to array>
}
if(<some_flag>)
assert results.get(0) < results.get(1) : "Results are not sorted.";
assert results.size() == sizeOfList : "Results-list size does not equal requested size.";
return results;
}
Es lo mejor es utilizar las propiedades del sistema para controlar la variable? Si ese es el caso, ¿se pueden establecer las Propiedades del sistema para un proyecto completo y no solo para una clase particular (en Eclipse)?
¿Es una mejor idea usar una variable constante definida en una clase "Constantes"?
¿Hay otras formas en las que no estoy pensando?
Gracias de antemano.
¿Puede profundizar en la diferencia entre las "aserciones de menor intensidad computacional" y "las que requieren un mayor uso de cómputo"? Tal vez dar un ejemplo o dos? – allingeek
Un ejemplo de una compilación menos intensiva sería comparar con una variable, por ejemplo: 'assert i <7:" i no es menos de 7 ";' Un compilador más alto-intensivo sería algo que requiere más procesamiento, como comprobar el promedio de cada valor en una lista: 'assert avg (listOfIntesgers) <7:" Average is not less than 7. ";' Lo ideal sería que desactives el high-comp -afirmaciones intensivas y deja en los más pequeños en producción. – mtical