¿Con qué frecuencia y dónde hacer nulo cheques

cmlonder:

Estoy tratando de evitar overdo cheques nulos, pero al mismo tiempo quiero hacer la comprobación nula cada vez que necesita para hacer que el código robusto. Pero a veces me siento como que empieza a ser mucho defensiva ya que no implementan la API. Entonces evito algunos nulos controles, pero cuando comienzo a las pruebas de unidad, comienza a esperar siempre para las excepciones de tiempo de ejecución. ¿Cuál es el enfoque correcto, la forma de sentir el equilibrio. Aquí están las notas que he recogido hasta el momento:

  • evitar nulos controles innecesarios en los métodos privados de la clase ya instancia se realizan comprobaciones adecuadas antes nulos y la clase de instancia es responsable de esto, no cada función
  • hacer los cheques nulos en los métodos públicos y explicar el comportamiento en función al contrato de uso público
  • hacer cheques nulos en el constructor

Déjenme darles un ejemplo ficticio donde mis confusos aperturas:

Esta es la función predeterminada de la interfaz:

default void someFunction() {

// instantiaded foo and filters
foo = processFoo(foo, filters);

// do some operations with foo
// null check if processFoo's contract returns null (description in the implementation)

}

Implementación:

Foo processFoo(foo, filters) {
// Should I null check foo and filters?

// Operations with foo.someFields
// Operations with filters.someFields

return foo; // If I null check then I should return some exception or null to the caller function. 
// If I don't null check just return received foo.
}
BigMike:

Por regla general, nunca comprobar si hay valores nulos cuando estoy en el control de las llamadas, pero si mi código puede ser llamado por otra persona, lo hago cumplir los controles, ya que estamos hablando de una especificación API, es posible comprobar la entrada parámetros y IllegalArgumentException tiro.

Por supuesto, esto no es obligatorio, la mayoría de las veces, cuando se tiene una NPE, hay un error en alguna parte subyacente, sin embargo si no tiene el control total de llamadas, que sin duda necesita un poco de esfuerzo extra. (Especialmente si su API se llama con frecuencia, se necesita algo de ayuda a trazar / identificar patrones de llamadas malas).

En el diseño de una API, a un lado la propia arquitectura, tiene que centrarse también en el mantenimiento / solución de problemas y la seguridad, especialmente si la API se expone públicamente (que también significa desinfectar todos y cada parámetro).

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=119974&siteId=1
Recomendado
Clasificación