0:00:05.120,0:00:08.800 Buenos días, tardes o noches dondequiera que estén, mi nombre es Felienne. 0:00:08.800,0:00:12.880 Soy profesora asociada de la Universidad de Leiden y, efectivamente, hoy voy a hablar de cómo 0:00:12.880,0:00:18.160 mejorar la forma de nombrar las cosas. Se dice que nombrar las cosas es el progrtama más difícil 0:00:18.160,0:00:22.000 - que es el problema más difícil en la ciencia de la computación - así que permítanme ayudarte 0:00:22.000,0:00:26.000 a mejorar como nombrar cosas, porque esta es una cuestión con la que muchas personas luchan. 0:00:27.040,0:00:36.400 En primer lugar, un poco de contexto. Los nombres tienen tanto contenido como forma. Así que el contenido de un nombre es algo 0:00:36.400,0:00:43.280 como lo que...lo que el nombre representa, ¿correcto?, asi que el nombre, son los ingredientes en el nombre de la 0:00:43.280,0:00:48.720 variable. Pero los nombres de las variables también tienen una forma determinada, puedes usar, por ejemplo, Camel Case 0:00:48.720,0:00:53.680 donde una letra mayúscula indica la siguiente palabra, pero algunos lenguajes de programación prefieren snake_case 0:00:53.680,0:00:59.520 donde se utilizan guiones bajos para dividir las palabras. Esa parte de la denominación de la variable es la forma, y 0:00:59.520,0:01:04.720 daremos... daré algunos consejos para estas dos partes de la denominación de variables en la charla de hoy. 0:01:05.360,0:01:11.040 Empecemos por el contenido: ¿qué ponemos realmente en el nombre de la variable? Supongo que la mayoría 0:01:11.040,0:01:17.280 de ustedes están familiarizados con la idea de los olores del código. Es la definición de Fowler para las partes del código que no son, 0:01:17.280,0:01:21.040 ya sabes, no son necesariamente un error o una equivocación, pero no están 0:01:21.040,0:01:28.000 estructuradas lo suficientemente bien. Así que los olores de código son métodos largos, por ejemplo, tienes un 0:01:28.000,0:01:38.640 método muy, muy largo de 100 o 200 líneas, que simplemente no está estructurado de manera óptima. Sin embargo, oh, lo siento aparentemente 0:01:38.640,0:01:42.400 mi cámara no está encendida - ahí estoy. Así que el olor del código, tienes, como, 0:01:42.400,0:01:47.280 un método muy largo que es de 100 líneas, donde tienes una lista larguísima de parámetros, ¿si?, Asi que hay 0:01:48.800,0:01:54.080 10 20 30 parámetros en un método. Estos son los olores de código, y como he dicho, estas son partes de código 0:01:54.080,0:01:59.120 que no son tan felices. Los olores de código tradicionales, tal y como los conocemos, 0:01:59.120,0:02:05.280 son olores estructurales, es decir, hablan de la estructura del código. Pero los trabajos más reciente también 0:02:05.280,0:02:11.280 hablan de olores de código específicos en los nombres de las variables, llamados olores lingüísticos. Así que son como 0:02:11.280,0:02:15.680 los olores de código en el sentido de que no son perfectos, pero hablan de nombres en lugar de 0:02:15.680,0:02:21.680 la estructura. Por ejemplo, imagina que tienes una función que es - o método - que se llama 0:02:21.680,0:02:26.160 "isValid" y toma algún tipo de ID externo y el método va a comprobar, 0:02:26.160,0:02:32.000 es este un ID válido. Pregunta que traje a mi amigo, el Panda de Participación, 0:02:32.000,0:02:36.720 si tenemos el Panda de la Participación en la pantalla significa que el público tiene que hacer algo. 0:02:36.720,0:02:42.320 Así que la pregunta para ustedes, si ves un método como este isValid, ¿qué crees que el tipo que retorna 0:02:42.320,0:02:49.840 podría ser? Te voy a dar unos segundos para que pienses cuál es el tipo de retorno aquí. 0:02:51.520,0:02:57.200 Bueno, supongo que la mayoría pensó, oh, esto probablemente será un booleano, ¿verdad? Porque 0:02:57.200,0:03:02.720 isValid da la idea de que se devolverá un booleano. A menudo este es el caso, pero 0:03:02.720,0:03:07.920 a veces tratamos de ser inteligentes, ¿verdad?, si tienes un ejemplo como este donde tienes un ID externo 0:03:08.640,0:03:13.200 que va a ser validado, tal vez hacemos algún tipo de conversión, ¿no?, usted toma nuestra ID externo, 0:03:13.200,0:03:18.480 como un número de cliente o número de estudiante, tratamos de convertirlo en un ID interno, algo 0:03:18.480,0:03:24.320 que tal vez usamos en la base de datos. Si esta conversión tiene éxito, entonces tenemos este ID interno, 0:03:24.320,0:03:29.440 y tratamos de ser inteligentes, no sólo decimos aquí es Verdadero, también damos este ID interno de vuelta. Esto es 0:03:29.440,0:03:33.760 fácil porque entonces en el sitio de llamada, tenemos este ID que luego se puede usar para consultar la base de datos. 0:03:34.720,0:03:38.800 Esto es bastante común, pero, por supuesto, es engañoso si estas en la llamada y piensas, 0:03:38.800,0:03:42.960 oh esto va a ser un booleano, pero es algo ligeramente diferente de un booleano, 0:03:42.960,0:03:49.200 entonces puedes obtener un código confuso. En el documento sobre olores de código lingüístico, se definen seis 0:03:49.200,0:03:56.320 categorías diferentes de estos olores. Métodos que hacen más de lo que dicen, métodos que hacen 0:03:56.320,0:04:02.240 menos de lo que dicen y métodos que hacen lo contrario de lo que dicen. A veces tienes un 0:04:02.800,0:04:07.120 openConnection que en realidad cierra una conexión y por alguna razón histórica el código terminó 0:04:07.120,0:04:11.600 de esa manera. Así que estas son las cosas que se desea evitar porque lo hacen más confuso. 0:04:12.480,0:04:17.360 Además de los métodos, a veces los identificadores también pueden tener olores lingüísticos de código, donde tienes 0:04:17.360,0:04:23.440 algo como allCustomers donde se esperarías una lista, pero luego sólo contiene el 0:04:23.440,0:04:28.320 siguiente cliente en la línea. El código a veces también puede estar estructurado de esa manera, ya sea porque es 0:04:28.320,0:04:32.960 un error o por alguna razón histórica donde el código simplemente terminó de esa manera y todo el mundo 0:04:32.960,0:04:37.280 sabe cómo funciona. Así que los identificadores también pueden sufrir olores lingüísticos en el código. 0:04:37.920,0:04:42.560 Además del trabajo que ha definido los olores de código, también existen investigaciones que analizaron 0:04:42.560,0:04:47.760 cuál es el impacto de los olores de código. Por supuesto, tenemos la sensación de que esto es confuso, 0:04:47.760,0:04:52.240 así que podemos decir, que los olores lingüístico de código son confusos, pero esto ha sido estudiado. 0:04:52.240,0:04:59.440 Hay un artículo muy bueno por Fakhoury et al. que ha puesto un tipo de escáner cerebral 0:04:59.440,0:05:04.640 en las cabezas de las personas mientras miran códigos con olores de códigos lingüísticos. Y sus resultados muestran 0:05:04.640,0:05:10.560 que los olores lingüísticos en realidad aumentan la carga cognitiva. Esto significa que tu cerebro tiene que trabajar 0:05:10.560,0:05:15.600 más duro para procesar el código que tiene este tipo de olores de código. Así que eso no es lo que queremos. 0:05:17.600,0:05:22.400 Te prometí dos cosas, bien, hasta ahora hemos visto el contenido de los nombres - qué palabras - cuál 0:05:22.400,0:05:28.960 es el significado de las palabras que ponemos en los nombres de las variables - pero la forma, la forma del nombre de la variable 0:05:28.960,0:05:35.600 también importa. No se trata sólo de las palabras. Un Panda más para ustedes, espero que sigas 0:05:35.600,0:05:43.120 participando. Supongamos que almacenamos el máximo número de pedidos en un mes. ¿Cuál sería un buen 0:05:43.120,0:05:47.200 nombre de variable?. Te voy a dar unos segundos, escribe esto, tal vez en el chat si quieres, 0:05:47.200,0:05:51.840 o en un papel, sólo piensa en qué nombre de variable elegirías aquí. 0:05:57.840,0:06:03.280 Así que mi suposición es que hay una gran variedad de cosas diferentes que la gente escribió. Y tal vez 0:06:03.280,0:06:10.720 esto podría ser max_orders_monthly o month - mes o monthly_orders_max o maximum_monthly_orders. 0:06:11.360,0:06:16.560 Todas estas cosas son un poco sensatas, y puede que dependa también de cuál sea tu propia lengua 0:06:16.560,0:06:20.160 materna: lo que piensas que es un orden que encaja más o menos con tu forma de pensar. 0:06:20.800,0:06:26.160 No hay nada malo en ninguno de ellos, pero no es muy cómodo, por supuesto si 0:06:26.160,0:06:31.200 el cuantificador, máximo o mínimo, a veces está al principio, a veces está al final, 0:06:31.200,0:06:35.680 a veces es una abreviatura, y a veces no lo es, y lo mismo ocurre con el orden: 0:06:35.680,0:06:40.960 podría estar en cualquier lugares del nombre de la variable, pero si está en diferentes lugares 0:06:40.960,0:06:48.000 te puedes imaginar que esto hace que sea más difícil de producir, de procesar los nombres de las variables. 0:06:48.000,0:06:54.800 La idea que describimos aquí se llama "molde de nombres" en un artículo de Feitelson et al. 0:06:54.800,0:07:01.840 Describen un molde como el que se utiliza para hacer una estatua de bronce, un molde en el que caben los nombres. 0:07:03.280,0:07:10.960 Así que otra pregunta Panda para ustedes: imaginen que dos personas que desarrollan tienen que elegir un nombre de variable. 0:07:10.960,0:07:17.760 ¿Qué posibilidades crees que hay de que las dos personas elijan el mismo nombre de variable 0:07:17.760,0:07:23.040 para una pregunta como la que acabo de hacer?. ¿Qué probabilidad crees que existe? 0:07:29.120,0:07:33.520 No es muy alta, espero que no sea más baja de lo que pensabas - la probabilidad es en realidad sólo 0:07:33.520,0:07:38.080 del siete por ciento. Así que si no haces ningún otro acuerdo sobre la forma de estructurar los 0:07:38.080,0:07:43.520 nombres de las variables, sólo tienes un siete por ciento de posibilidades de elegir el mismo nombre. Eso...eso no es 0:07:43.520,0:07:49.760 muy alto. Pero este artículo también muestra, lo que es un resultado muy, muy bueno, 0:07:49.760,0:07:54.480 si te pones de acuerdo en los moldes - si como equipo dices, este es el molde que elegimos y entonces 0:07:54.480,0:08:00.880 siempre usas esa misma estructura, entonces la calidad de los nombres mejora. Y han hecho que expertos externos 0:08:00.880,0:08:09.200 verifiquen la calidad de los nombres, por lo que la calidad de los nombres aumenta si se acuerdan los moldes de los nombres. 0:08:09.200,0:08:14.960 Así que, para resumir, ¿qué puedes hacer ahora, inmediatamente, para mejorar al nombrar cosas? Y 0:08:14.960,0:08:20.880 quiero señalar, como, de forma gratuita, a la derecha, algunos de los documentos que se ven en algunas cosas en la programación 0:08:20.880,0:08:25.040 es como, oh, tienes que descargar esta herramienta o tienes que hacer esto o tienes que aprender algo 0:08:25.040,0:08:29.920 que es realmente difícil. Pero esta cosa del molde del nombre, y este olor del código lingüístico, es súper fácil, 0:08:29.920,0:08:34.400 ¿verdad?. Mañana puedes ir a tu código base y pensar, oye, ¿tienes algún olor de código lingüístico? 0:08:34.400,0:08:40.720 Puedes ver si empieza con "es" (is) y asegurarte de que es un booleano. Y como equipo puedes 0:08:40.720,0:08:44.560 hablar de los moldes de nombres, puede decir, bien, ¿qué hacemos? ¿ponemos el cuantificador siempre 0:08:44.560,0:08:49.040 al principio o siempre al final?. ¿Cuál es nuestro plan aquí? Y sólo con un poco de refactorización 0:08:49.040,0:08:54.880 puedes realmente aumentar la calidad de los nombres en su código base. Es una intervención relativamente sencilla, 0:08:54.880,0:09:00.880 que puedes hacer para mejorar tu código base. Eso es todo, estoy en twitter como "felienne" 0:09:00.880,0:09:05.760 convenientemente mi handle es solo mi nombre de pila. También puedes ir a felienne.com si quieres 0:09:05.760,0:09:10.400 saber más sobre mí - específicamente si quieres saber más de estos resultados, de programación 0:09:11.120,0:09:15.760 y de la ingeniería de software aplicada a la vida cotidiana de una persona que programa, podría interesarte 0:09:15.760,0:09:21.840 revisar mi libro, "El cerebro del programador", puedes comprarlo a través de felienne.com/book.