WEBVTT

00:00:01.260 --> 00:00:03.390 align:middle
En este vídeo, me gustaría
mostrarle que Pharo

00:00:03.557 --> 00:00:06.040 align:middle
también dispone de un asistente

00:00:06.207 --> 00:00:08.640 align:middle
que comprueba la calidad de su 
código, al que llamamos

00:00:08.807 --> 00:00:11.450 align:middle
Quality Assistant o bien
Code Critics. Comprueba automáticamente

00:00:11.617 --> 00:00:14.770 align:middle
varias reglas de buenas
prácticas en su código.

00:00:15.710 --> 00:00:17.040 align:middle
Echemos un vistazo
de cerca.

00:00:17.300 --> 00:00:19.220 align:middle
Ha visto que cada vez que
navego por una clase,

00:00:19.387 --> 00:00:22.770 align:middle
aparece una ventana emergente que
se abre.

00:00:22.937 --> 00:00:25.300 align:middle
De hecho, lo que sucede es que
automáticamente,

00:00:25.467 --> 00:00:27.770 align:middle
mientras estoy navegando,

00:00:27.937 --> 00:00:32.010 align:middle
eligiéremos CubHelix
para verlo, tiene

00:00:32.177 --> 00:00:35.740 align:middle
esta pequeña área aquí
donde se muestran las

00:00:37.020 --> 00:00:40.390 align:middle
indicaciones. Y cuando lo realizo
en el paquete también.

00:00:43.110 --> 00:00:46.350 align:middle
Como es un poco difícil
encontrar un

00:00:46.517 --> 00:00:49.240 align:middle
ejemplo convincente, utilizaremos
nuestro propio código y

00:00:49.407 --> 00:00:52.090 align:middle
escribiremos código feo en él,
de esta manera podrá verlo.

00:00:52.280 --> 00:00:57.080 align:middle
Si voy en Counter, imaginemos
por ejemplo que

00:00:57.247 --> 00:01:00.480 align:middle
dejo el código de depuración,

00:01:02.350 --> 00:01:04.730 align:middle
aquí el sistema me dice
automáticamente dos cosas.

00:01:05.180 --> 00:01:09.310 align:middle
Me dice que hay depuración
de código que ha quedado

00:01:09.477 --> 00:01:12.200 align:middle
en el método.
¿Que puedo hacer?

00:01:12.940 --> 00:01:14.540 align:middle
Puedo comprender de donde
viene esta regla.

00:01:14.707 --> 00:01:16.680 align:middle
Entonces si hago clic en él,
me dice que utilizar breakpoints

00:01:16.847 --> 00:01:19.800 align:middle
(puntos de interrupción) no es muy
inteligente en el código de producción.

00:01:21.280 --> 00:01:25.260 align:middle
Puede decirme, voy a resolver
automáticamente este problema.

00:01:25.427 --> 00:01:26.340 align:middle
Probemos, y veamos.

00:01:27.300 --> 00:01:28.530 align:middle
Me dice, es necesario suprimir esto.

00:01:28.720 --> 00:01:30.240 align:middle
Ok, muy bien.

00:01:30.950 --> 00:01:32.710 align:middle
Y de golpe, ya no
tiene mas este problema.

00:01:34.540 --> 00:01:36.700 align:middle
Ha visto que lo hacemos
mientras programamos.

00:01:36.867 --> 00:01:40.100 align:middle
Finalmente, el sistema reaccionará.

00:01:40.460 --> 00:01:43.350 align:middle
Ahora, hay otra forma de hacerlo,
puedo

00:01:43.517 --> 00:01:48.250 align:middle
abrir el Critic browser en
mi paquete.

00:01:48.417 --> 00:01:49.460 align:middle
Aquí, es un paquete muy pequeño.

00:01:50.960 --> 00:01:55.460 align:middle
Cometeremos un error para
que podamos verlo.

00:01:55.627 --> 00:01:56.440 align:middle
Aquí, si hago "self halt"

00:02:01.020 --> 00:02:02.790 align:middle
o por ejemplo voy a hacer otro
método,

00:02:03.460 --> 00:02:06.910 align:middle
Crearé el método "increment3"
y

00:02:07.077 --> 00:02:08.790 align:middle
invoco un método que
no existe.

00:02:08.957 --> 00:02:11.740 align:middle
Lo llamaremos "foofoo".

00:02:13.110 --> 00:02:16.010 align:middle
Entonces, aquí está rojo, pero 
supongamos que 

00:02:16.177 --> 00:02:18.900 align:middle
en un estado febril
no me di cuenta.

00:02:20.590 --> 00:02:24.360 align:middle
Voy a usar el Critic browser
(navegador crítico)

00:02:27.380 --> 00:02:31.250 align:middle
en mi código y aquí
lo que me muestra el navegador

00:02:31.417 --> 00:02:32.770 align:middle
critico és un conjunto de reglas.

00:02:33.720 --> 00:02:38.620 align:middle
De hecho, hay muchas reglas
con sus explicaciones.

00:02:38.787 --> 00:02:42.790 align:middle
Si usted tiene este código,
entonces en este

00:02:42.957 --> 00:02:46.200 align:middle
momento és mejor usarlo
de esa manera, si hay

00:02:46.367 --> 00:02:47.450 align:middle
una asignación dentro.

00:02:47.617 --> 00:02:49.620 align:middle
Hay varios tipos de reglas.

00:02:50.040 --> 00:02:52.160 align:middle
Hay reglas vinculadas a la
optimización, reglas

00:02:52.327 --> 00:02:54.300 align:middle
que pueden potencialmente
identificar bugs (errores).

00:02:54.650 --> 00:02:56.600 align:middle
Reglas que identifican como verdaderas.

00:02:56.860 --> 00:02:59.200 align:middle
Si voy aquí, veo el código.

00:02:59.367 --> 00:03:03.050 align:middle
Puedo navegar por la definición
como lo hicimos antes,

00:03:03.217 --> 00:03:05.810 align:middle
o puedo transformarlo.

00:03:08.180 --> 00:03:12.160 align:middle
Y la advertencia ha desaparecido.

00:03:13.610 --> 00:03:15.400 align:middle
Ahora lo que es importante de ver,
es que 

00:03:15.567 --> 00:03:17.920 align:middle
todas estas reglas se basan
en heurística

00:03:18.087 --> 00:03:19.700 align:middle
Esto significa que a veces
hace cosas

00:03:19.867 --> 00:03:22.840 align:middle
que no son muy correctas.
Usted lo sabe y tiene

00:03:23.007 --> 00:03:24.200 align:middle
que dejarlo así en el sistema.

00:03:24.367 --> 00:03:28.840 align:middle
Lo que también puede hacer,
puede decir, esto es un falso

00:03:29.007 --> 00:03:33.660 align:middle
positivo. Imaginemos
que tengo un mensaje 

00:03:33.827 --> 00:03:36.660 align:middle
"foofoo" y sé que quiero
guardarlo, puedo decir

00:03:36.827 --> 00:03:40.240 align:middle
que esta regla es falsa para este

00:03:41.850 --> 00:03:44.850 align:middle
método, Lo escribiré.

00:03:45.017 --> 00:03:46.510 align:middle
Aquí está gris, qué
significa esto?

00:03:46.677 --> 00:03:49.690 align:middle
Significa que mas tarde podría
mirar

00:03:49.857 --> 00:03:51.310 align:middle
y preguntarme si tal vez 
esta regla era cierta y

00:03:51.477 --> 00:03:53.490 align:middle
tenía sentido

00:03:57.250 --> 00:03:57.883 align:middle
volver a visitarla.

00:03:58.410 --> 00:04:00.640 align:middle
Podemos guardar los Critics.

00:04:00.807 --> 00:04:04.910 align:middle
Significa que podemos guardar los
resultados de las reglas

00:04:05.077 --> 00:04:06.670 align:middle
así como los falsos positivos.

00:04:07.290 --> 00:04:08.850 align:middle
Cuando escribimos que algo era
falso, no queremos

00:04:09.017 --> 00:04:11.000 align:middle
que el sistema nos lo repita
constantemente

00:04:11.167 --> 00:04:12.680 align:middle
cada vez que ejecutamos las reglas.

00:04:13.400 --> 00:04:18.230 align:middle
Entonces, cuando guarda a los crítics,
los pondrá en un manifiesto.

00:04:18.470 --> 00:04:21.690 align:middle
Veamos este. Aquí, tengo
mi manifiesto que sera

00:04:21.857 --> 00:04:23.920 align:middle
versionado con el sistema.

00:04:24.087 --> 00:04:26.410 align:middle
No es necesario ver cómo está codificado
en su interior, no nos importa

00:04:26.577 --> 00:04:29.400 align:middle
El Manifiesto permite codificar
cosas, pero importa poco.

00:04:29.700 --> 00:04:32.590 align:middle
Esto, no lo tocáis, és el
critico de código quien lo utilizara

00:04:32.757 --> 00:04:34.120 align:middle
en las próximas ejecuciones.

00:04:34.287 --> 00:04:36.260 align:middle
Así pues, tiene un Manifiesto
para cada paquete.

00:04:36.700 --> 00:04:38.100 align:middle
Cuando asigna una versión a
su código, entonces también

00:04:38.267 --> 00:04:39.920 align:middle
asigna una versión a su
manifiesto y cuando ejecute de

00:04:40.087 --> 00:04:42.880 align:middle
nuevo sus críticos de código,
automáticamente tendrá

00:04:43.047 --> 00:04:44.890 align:middle
en cuenta todos los
falsos positivos y todas

00:04:45.057 --> 00:04:47.040 align:middle
las meta-observaciones
que usted a incorporado.

00:04:47.207 --> 00:04:49.510 align:middle
Así, lo qué es realmente interesante
con estas reglas de calidad

00:04:49.677 --> 00:04:53.390 align:middle
és que Pharo las integra en 
un proceso de desarrollo.

00:04:53.557 --> 00:04:56.010 align:middle
De manera que tenemos,

00:04:56.177 --> 00:04:58.570 align:middle
unos servidores Jenkins que,

00:04:58.737 --> 00:05:01.170 align:middle
cada vez que tira adelante
su proyecto, cargara y correrá

00:05:01.337 --> 00:05:04.000 align:middle
automáticamente estas reglas de
calidad para verificar que 

00:05:04.167 --> 00:05:05.920 align:middle
su programa realmente sigue
las reglas

