[Java] ¡10 habilidades de programación en Java resumidas por dioses extranjeros!

Inserte la descripción de la imagen aquí

Original: http://www.javastack.cn/article/2018/10-java-programming-skills-summary/

Esto se basa en la experiencia de un gran dios extranjero durante 20 años ...

"Todo lo que pueda salir mal saldrá mal al final".

Por eso a la gente le gusta realizar una "programación a prueba de errores". A veces, los hábitos paranoicos son significativos, a veces no son lo suficientemente claros e inteligentes, y tal vez se sienten un poco raros cuando piensas en personas que escriben así. Aquí está mi lista de 10 habilidades de programación en Java que personalmente me siento más útiles y paranoicas. Por favor mira:

  1. Ponga las constantes de cadena primero

Nunca es una mala idea evitar una NullPointerException accidental colocando constantes de cadena en el lado izquierdo de la función de comparación equals (), así:
Inserte la descripción de la imagen aquí

No hay duda de que no perderá nada al convertir una expresión en otra mejor expresión. Siempre que nuestras Opciones sean reales (el Opcional en Java 8 encapsula objetos que pueden estar vacíos), ¿verdad? Discutir...

  1. No confíe en las primeras API de JDK

Cuando apareció Java por primera vez, la programación debe haber sido algo doloroso. La API en ese momento aún era inmadura, es posible que haya encontrado un fragmento de código de este tipo:

Inserte la descripción de la imagen aquí

Se ve raro, ¿verdad? Quizás, pero mira este Javadoc:

"Si el nombre de la ruta abstracta no representa un directorio, entonces este método devuelve nulo. De lo contrario, devuelve una matriz de cadenas, donde cada cadena representa un archivo o directorio en el directorio actual".

Sí, es mejor agregar un cheque en blanco para asegurarse de que sea correcto:

Inserte la descripción de la imagen aquí

¡malo! El primero viola las reglas n. ° 5 y n. ° 6 de las 10 mejores prácticas sutiles en codificación Java. ¡Así que recuerde juzgar el cheque nulo!

  1. No crea "-1"

Sé que esto es paranoico. La descripción inicial de String.indexOf () en el Javadoc es esta:

"La posición de la primera aparición del carácter en la secuencia de caracteres será el resultado [devuelto], si el carácter no existe, se devolverá -1".

Entonces, -1 se puede usar por sentado, ¿verdad? No estoy bien, mira esto:

Inserte la descripción de la imagen aquí

Quién sabe. Tal vez necesiten otro valor de codificación en una ocasión determinada. Si no distingue entre mayúsculas y minúsculas, se incluirá otherString ... ¿Quizás se pueda devolver -2 en este momento? Quién sabe.

Después de todo, tenemos muchas discusiones sobre NULL, un error que vale miles de millones de dólares. Por qué no empezar a hablar de -1, en cierto sentido -1 es otra forma de nulo bajo el tipo int.

  1. Evite la asignación accidental

Si. Incluso los mejores programadores pueden cometer este error (por supuesto, sin incluirme a mí. Vea el n. ° 7).

(Asumiendo que esto es JavaScript, estamos paranoicos como este lenguaje por el momento)

Inserte la descripción de la imagen aquí

Dilo otra vez. Si hay una constante en tu expresión, colócala en el lado izquierdo de la ecuación. De esta manera, cuando planea agregar otro =, no es fácil cometer errores.

  1. Compruebe nulo y longitud

Siempre que tenga una colección, matriz u otra, asegúrese de que exista y no esté vacía.

Inserte la descripción de la imagen aquí

No sabe de dónde provienen estas matrices, ¿tal vez sea la primera API de JDK?

  1. Todos los métodos se declaran finales

Puede decirme los principios de apertura y cierre que desee, pero eso es una tontería. No te creo (puedo heredar mi clase correctamente), ni creo en mí mismo (no heredo mi clase accidentalmente). Por lo tanto, a excepción de la interfaz (especialmente utilizada para la herencia), debe ser estrictamente final.

Inserte la descripción de la imagen aquí

Sí, escrito como final. Si esto no tiene sentido para usted, también puede modificar o reescribir el código de bytes para cambiar la clase y el método, o enviar una solicitud de función. Como editor de la cuenta pública de la pila de tecnología Java, estoy seguro de decirte que reescribir clases / métodos no es una buena idea.

  1. Todas las variables y parámetros se declaran finales

Como dije. No creo que pueda sobrescribir un valor sin querer. Dicho esto, realmente no creo en mí mismo en absoluto. porque:

Inserte la descripción de la imagen aquí

Es por eso que todas las variables y parámetros se declaran finales.
Inserte la descripción de la imagen aquí

Bueno, lo admito, yo mismo no uso este, aunque debería usarlo. Espero que Java pueda ser como Scala. La gente usa val para expresar variables directamente en todos los lugares, incluso sin considerar la volatilidad. Solo usan var para declarar variables cuando es claramente necesario, pero tales oportunidades son particularmente raras.

  1. No confíe en los genéricos cuando se sobrecargue

Sí, esto sucederá. ¿Crees que escribiste una API súper buena? Es realmente genial e intuitiva; luego apareció un grupo de usuarios, simplemente copiaron todos los tipos en Object hasta que el maldito compilador dejó de funcionar, y luego de repente se vincularon De manera incorrecta, piensa que todo esto es tu culpa (siempre es así).

Considera esto:

Inserte la descripción de la imagen aquí

Porque, ya sabes ... tus usuarios, son así

Inserte la descripción de la imagen aquí

Créame, he visto mucho, y hay tantos

Inserte la descripción de la imagen aquí

Entonces la paranoia es buena.

  1. Siempre agregue predeterminado a la declaración de cambio

Cambiar ... Como una de las expresiones más divertidas, no sé si estar asombrado o llorar en silencio. En cualquier caso, dado que no podemos deshacernos de switch, será mejor que lo usemos correctamente cuando sea necesario, por ejemplo:

Inserte la descripción de la imagen aquí

Porque cuando se introduce valor = 3 en el software, el valor predeterminado puede jugar un papel para que se ejecute normalmente. No me menciones el tipo de enumeración, porque esto también se aplica a las enumeraciones.

  1. Use llaves para separar cada bloque de caja del interruptor

De hecho, el cambio es la afirmación más engañosa: cualquiera que esté borracho o pierda una apuesta puede usarlo en un idioma determinado. Considere el siguiente ejemplo:

Inserte la descripción de la imagen aquí

En la declaración de cambio, solo se define un alcance para todos los casos. De hecho, estos casos no son declaraciones en el verdadero sentido, son más como etiquetas, y switch es una declaración goto que apunta a estas etiquetas. De hecho, incluso puede comparar la declaración del caso con la asombrosa declaración FORTRAN77. Para FORTRAN, su misterio ha superado su función.

Esto significa que se puede acceder a la variable final int j en cualquier caso, tengamos un descanso o no. No parece muy intuitivo. Podemos crear un nuevo ámbito anidado para cada caso agregando llaves simples. Por supuesto, no olvide agregar un salto al final del bloque de instrucciones de cada caso.

En conclusión

El trastorno obsesivo compulsivo en la programación a veces puede parecer extraño, lo que hace que el código sea más detallado de lo necesario. Puedes pensar, "¡Ah, esta situación nunca sucederá!", Pero como dije, después de 20 años de carrera como programador, no querrás arreglarlos solo por el lenguaje de programación. Los errores estúpidos e innecesarios causados ​​por defectos antiguos e inherentes se han ido. Porque tú sabes...

¡Ahora es tu turno!

Original: http://www.javacodegeeks.com/2015/08/top-10-useful-yet-paranoid-java-programming-techniques.html
Traducción: http://www.importnew.com/16805.html

Supongo que te gusta

Origin blog.csdn.net/qq_21383435/article/details/108500035
Recomendado
Clasificación