Retorno de matriz o resultado nulo para la aplicación de un comando en una lista -- java campo con null camp codereview Relacionados El problema

Return array or null result for application of a command to a list


-1
vote

problema

Español

Tengo tal método:

  @SuppressWarnings("unchecked") public static <T, K> K[] toArray(ITemplateCommand<T, K> command, List<T> templates) {     if (null == templates) {         return (K[]) Array.newInstance(command.getClassOfK(), 0);     }     K[] array = (K[]) Array.newInstance(command.getClassOfK(), templates.size());     for (int i = 0; i < templates.size(); i++) {         array[i] = command.buildTemplate(templates.get(i));     }     return array; }   

Originalmente, tuve return null3 en Bloque if (null == templates) pero Findbugs recomendó no devolver NULL, pero 9988776655544335 en su lugar.

Tengo curiosidad, ¿debo dejarlo como ahora o volver a return null line?

Original en ingles

I have such method:

@SuppressWarnings("unchecked") public static <T, K> K[] toArray(ITemplateCommand<T, K> command, List<T> templates) {     if (null == templates) {         return (K[]) Array.newInstance(command.getClassOfK(), 0);     }     K[] array = (K[]) Array.newInstance(command.getClassOfK(), templates.size());     for (int i = 0; i < templates.size(); i++) {         array[i] = command.buildTemplate(templates.get(i));     }     return array; } 

Originally I had return null in block if (null == templates) but FindBugs recommended not to return null but array instead.

I am curious - should I leave it as it now or return to return null line?

     

Lista de respuestas

4
 
vote
vote
La mejor respuesta
 

La respuesta real a su pregunta no está en el Código que devuelve null , pero en el código que usa ese resultado.

Si devuelto null es una señal significativa y tiene que ejecutar algún código en función de ese valor (que no sea simplemente evitar el NPE), debe devolver p_list->head++; 0 . Si el código que llama p_list->head++; 1 podría y seguiría funcionando correctamente si devuelve la instancia de la matriz vacía, se prefiere la matriz vacía.

 

Real answer to your question is not in the code that returns null, but in code that uses that result.

If returned null is significant signal and you have to execute some code based on that value (other than simply avoiding NPE) then you should return null. If code calling toArray could and would happily function properly if you return empty array instance, then returning empty array is preferred.

 
 
3
 
vote

En general, siempre creo que aunque usamos software como FindBugs para hacernos pensar y recibir sugerencias donde la mejora de nuestro código podría ser útil al final, depende de nosotros decidir. Si considera que su código es mejor entender la forma en que lo escribió, debe mantenerlo así.

 

In general I always believe that although we use software like FindBugs to make us think and receive hints where improvement of our code might be usefull in the end it is up to us to decide. If you consider your code is better to understand the way you wrote it, you should keep it that way.

 
 
3
 
vote

Es una buena práctica recomendada para devolver una colección vacía en lugar de p_list->head++; 2 . Si devuelve p_list->head++; 3 , las personas que llaman necesitan un control NULL adicional al usar la función.

p_list->head++; 4 es un valor no funcional. p_list->head++; 5 es especial. Puede iterar sobre cualquier colección, pero no una colección 998877766555443316 . Si puedo confiar en que un método que devuelva una colección nunca devolverá p_list->head++; 7 , entonces puedo iterarlo sin un control de nulo adicional. Si un método puede devolver p_list->head++; 8 , el control NULL-NULL adicionales inconvenientes a todas las personas que llaman.

Esto no se dice que un método nunca debe devolver p_list->head++; 9 para una colección. Simplemente dice que cuando elige devolver p_list->head = (p_list->head + 1) & p_list->mask; 0 , debe tener una buena justificación para eso (también sucede).

Para concluir, si tiene una razón específica para devolver p_list->head = (p_list->head + 1) & p_list->mask; 1 , Luego, por todos los medios, devuelva p_list->head = (p_list->head + 1) & p_list->mask; 2 . De lo contrario, siga los buenos consejos y devuelva una matriz vacía.

 

It's a recommended good practice to return an empty collection instead of null. If you return null, callers need an extra null-check when using the function.

null is a non-functional value. null is special. You can iterate over any collection, but not a null collection. If I can trust that a method returning a collection will never return null, then I can iterate over it without an extra null-check. If a method may return null, the extra null-check will inconvenience all callers.

This is not say that a method should never ever return null for a collection. It just says that when you choose to return null, you should have a good justification for that (it does happen too).

To conclude, if you have a specific reason to return null, then by all means, return null. Otherwise, follow the good advice and return an empty array.

 
 

Relacionados problema

5  C # enfoque para prevenir referencias nulas en cadenas  ( C approach to prevent null references in strings ) 
Mi conocimiento aquí es que generalmente no es útil distinguir entre null y cadenas vacías. A veces es, pero por lo general no. Por lo general, me gusta asi...

7  Manejo de parámetros opcionales en un servlet  ( Handling optional parameters in a servlet ) 
Tengo un formulario que se envía a un servlet que tiene parámetros opcionales. Si están vacíos, simplemente se ignoran. Esta es la plantilla que estoy usando:...

3  Declaración de caso MySQL con dos tablas  ( Mysql case statement with two tables ) 
¿Cómo puedo mejorar la siguiente declaración SQL de trabajo para un mejor rendimiento y consistencia? SELECT if(roll is null,0,roll) as roll, if(cp...

10  Monad Transformers en C # para uso en validación  ( Monad transformers in c for use in validation ) 
Estoy trabajando en el uso de Transformers Mónad en C #. Me gustaría saber si el siguiente código que presento, muestra que he entendido esto. Soy bastante nu...

7  Demasiados cheques nulos en una transformación XML-TO XML  ( Too many null checks in an xml to xml transformation ) 
Estoy escribiendo un mecanismo de conversión en C #. Deserializé un gran documento XML de un tipo y devuelva un gran documento XML de otro tipo (a través de l...

5  Formateo de un valor posiblemente nulo como horas y minutos  ( Formatting a possibly nil value as hours and minutes ) 
Esto podría ser un poco tonto porque hay como mil maneras de hacer esto, pero estoy luchando por llegar a la que me gustan. Siento que esto debería caber en u...

15  Usando finalmente con declaración de retorno o no  ( Using finally with return statement or not ) 
Me preguntaba si es la forma correcta de colocar siempre la declaración de devolución de una función con una cláusula 9988776665544330 en la cláusula 99887...

6  ¿Lanzar un objeto al decimal? o int? etc, pero déjalo como nulo si es nulo  ( Cast an object to decimal or int etc but leave it as null if it is null ) 
en un caso como este: object A1 = null; Decimal? B = Convert.ToDecimal(A1); object A2 = null; int? C = Convert.ToInt32(A2); Tenga en cuenta que en caso...

50  String.isNullorEmpty en JavaScript  ( String isnullorempty in javascript ) 
Soy consciente de que se está volviendo fruncido para hacer algo como escribir C # en JavaScript. (consulte este si no sabes qué Estoy hablando de) Pero c...

10  Insertar un valor de DBNULL en una base de datos  ( Inserting a dbnull value into a database ) 
Tengo código que funciona bastante bien. Solo necesito algunas de sus opiniones sobre cómo escribirlo mejor con menos línea de código. Quiero usar un operador...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos