Send a link to your students to track their progress
106 Terms
1
New cards
Qué es la deuda técnica?
La falta de calidad en el código, la qual genera una deuda que repercutirá en costos futuros.
2
New cards
Que tipo de costos economicos conlleva la deuda técnica?
1. Tiempo en realizar mantenimientos. 2. Tiempo en refactorizar código. 3. Tiempo en comprender el código. 4. Tiempo adicional en la transferencia del código.
3
New cards
Quales son los 4 tipos de duda técnica según el esquema de Martin Fowler?
Como podemos mejorar el nombre de esta variable (const open = true;) ?
const isOpen = true;
19
New cards
Como podemos mejorar el nombre de esta variable (const write = true;) ?
const canWrite = true;
20
New cards
Como podemos mejorar el nombre de esta variable (const fruit = true;) ?
const hasFruit = true;
21
New cards
Como podemos mejorar el nombre de esta variable (const active = false;) ?
const isActive = false;
22
New cards
Como podemos mejorar el nombre de esta variable (const noValues = true;) ?
const hasValues = true;
23
New cards
Como podemos mejorar el nombre de esta variable (const notEmpty = true;) ?
const isEmpty = true;
24
New cards
Como podemos mejorar el nombre de esta variable (const fruits = 3;) ?
const totalFruits = 3;
25
New cards
Como podemos mejorar el nombre de esta variable (const cars = 10;) ?
const totalOfCars = 10;
26
New cards
Como deben construirse los nombres de las funciones?
Usando el verbo que representa la acción seguido de un substantivo.
27
New cards
Que es el principio de responsabilidad única?
Cada acción debe realizar una tarea única.
28
New cards
Como deben construirse los nombres de las clases?
Nombres formados por un sustantivo.
29
New cards
Porque se deben evitar nombres genericos en las clases?
Para evitar que las clases realizen más tareas de las que deberían.
30
New cards
Que convención de nombre deben tener las clases?
UpperCamelCase
31
New cards
Que convención de nombre deben tener las variables?
camelCase
32
New cards
Que convención de nombre deben tener las variables en python?
snake_case
33
New cards
Que preguntas nos debemos plantear antes de definir el nombre de una clase?
1. ¿Que hace exactamente la clase? 2. ¿Cómo lleva a cabo exactamente la tarea definida esta clase? 3. ¿Hay algo específico sobre su ubicación?
34
New cards
Como sabemos si una función esta siguien los principios solid?
Si hace exactamente lo que su nombre indica.
35
New cards
Que se puede hacer para simplificar la declaración de parametros en una función?
Si tiene más de tres parámetros, utilizar una interfaz.
36
New cards
Como se recomiendan ordenar los parámetros de una funcion en una interfaz?
Por orden alfabético.
37
New cards
Que directrizes se recomiendan seguir a la hora de declarar una función?
1. Mantener la simplicidad. 2. Mantener un tamaño reducido. 3. Crear funciones de una sola línea de código sin causar complejiad. 4. Mantener las funciones de menos de 20 líneas de código. 5. Priorizar el uso de la condicional ternaria.
38
New cards
Comno podemos reducir la cantidad de líneas de código en una función?
Delegando responsabilidades a otras funciones.
39
New cards
Como se podría simplificar la siguiente línea de código? if(isSeparated) { return 2500; }
let redFruits: string[] = ['manzana', 'cereza', 'ciruela']; function isRedFruit(fruit: string): boolean { return (redFruits.includes(fruit)); }
42
New cards
Como podemos simplificar la función de la imagen?
function workingSteps() {
if (!isFirstStepWorking) return ‘First step broken.’;
if (!isSecondStepWorking) return ‘Second step broken.’;
if (!isThirdStepWorking) return ‘Third step broken.’;
if (!isFourthStepWorking) return ‘Fourth step broken.’;
return ‘Working properly!’;
}
43
New cards
Que representan las siglas del principio DRY?
Don't Repeat Yourself.
44
New cards
En que consiste el principio DRY?
En evitar código redundante.
45
New cards
Que ventajas tiene la utilización del principio DRY?
1. Simplifica las pruebas. 2. Ayuda a centralizar procesos.
46
New cards
Instancia un nuevo tipo de dato en TypeScript para permitir solo género femenino o masculino.
type Gender: 'M'|'F';
47
New cards
Qual es la estructura recomendada de una clase?
1\. Lista de propiedades estáticas. 2\. Lista de propiedades privadas. 3\. Lista de propiedades públicas. 4\. Constructores estáticos. 5\. Constructores. 6\. Métodos estáticos. 7\. Métodos privados. 8\. Resto de métodos de instancia ordenados de mayor a menor importancia. 9\. Getters y setters al final.
48
New cards
Porque los comentarios en el código no deberían ser la regla general?
Porque el código debería ser auto-explicativo.
49
New cards
Qual es la frase de Brian W. Kernighan sobre el código mal escrito?
No comentes el código mal escrito, reescríbelo.
50
New cards
En que caso se suelen utilizar los comentarios en el código?
Cuando se requiere el uso de apis de terceros o librerías.
51
New cards
Cuando hacemos comentarios en el código, que se recomienda y que no se recomienda explicar?
Ni el qué ni el cómo, si no el porqué.
52
New cards
Que característica deben tener las diferentes clases de un proyecto?
Un patrón de código cuya utilización se debe evitar.
57
New cards
Que consecuencias puede tener un code smell?
Que nuestro código pierda calidad.
58
New cards
Qual es la única ventaja que proporciona el uso del patrón singleton?
Garantiza una única instancia de la clase a lo largo de toda la aplicación.
59
New cards
Porque se considera el patrón singleton un code smell?
Porque puede ser modificado por cualquiera y hace el código más difícil de testear, además no es rastreable.
60
New cards
Qué desventajas trae el alto acoplamiento (Tight Coupling)?
1\. Un cambio en un módulo provoca un efecto dominó de cambios en otros modulos.
2\. El ensamblaje de módulos puede requerir más esfuerzo debido a la mayor dependencia entre módulos.
3\. Un modulo en particular puede ser más difícil de reutilizar debido a que se deben incluir otros módulos dependientes.
61
New cards
Que representa esta imagen?
Alto acoplamiento y baja cohesión.
62
New cards
Bajo acoplamiento y alta cohesión.
63
New cards
Como deben ser los módulos de una aplicación?
Auto-contenidos, auto-suficientes e independientes, con un objetivo y un propósito bien definido.
64
New cards
A que nos referimos con baja cohesión?
A clases o funciones que realizan una gran variedad de acciones más allá de su propósito principal.
65
New cards
A que nos referimos con alta cohesión?
A clases o funciones que se encfocan únicamente en su propósito principal.
66
New cards
A que nos referimos con acoplamiento?
A la relación y dependencia entre clases o módulos.
67
New cards
A que puede llevar el alto acoplamiento en el peor de los casos?
A una renovación completa del sistema.
68
New cards
Hablando en términos de acoplamiento y cohesión, como debe ser una aplicación idealmente?
Una aplicación óptima debería tener una alta cohesión y un bajo acoplamiento.
69
New cards
A que nos referimos con Untestability?
A código no testeable.
70
New cards
Qual puede ser la causa de Untestability?
Un código con alto acoplamiento.
71
New cards
Que es la complejidad esencial?
Es la complejidad inherente a un problema.
72
New cards
Que es la complejiad accidental?
Complejidad añadida por encima de la complejiad esencial.
73
New cards
Que tipos de duplicidad de código existen?
La duplicidad real y la duplicidad accidental.
74
New cards
Que es la duplicidad real?
Un código que es idéntico y cumple la misma función.
75
New cards
Que consecuencias puede traer la duplicidad de código real?
1\. Implementar un cambio implicaría actualizar todo el código idéntico en diversos lugares. 2\. Incrementa posibilidades de error humano si se olvida una parte por actualizar. 3\. Puede llevar a una cantidad mayor de pruebas necesarias para probar el código.
76
New cards
A que conclusion nos debe llevar el hecho de que copiamos y pegamos varias veces el mismo código en una aplicación?
A que no se está aplicando correctamente el principio DRY.
77
New cards
Que es la duplicidad accidental?
Un código que parece similar pero cumple funciones distintas.
78
New cards
Como podemos identificar la duplicidad accidental?
Si hay un cambio, se aplica únicamente en un lugar de la aplicación.
79
New cards
Como se puede optimizar la duplicidad accidental?
Mediante parametros y optimizaciones.
80
New cards
Si hablamos de code smell, a que nos referimos con inflación?
A un método o clase con demasiadas líneas de código.
81
New cards
Como podemos resolver la inflación en un método?
Delegando las responsabilidades del método en submétodos más específicos.
82
New cards
Como podemos resolver la inflación en una clase?
Dividiendo la clase en subclases más específicas.
83
New cards
A que nos referimos con feature envy?
A un método que accede a los datos de otro objeto más que a sus propios datos.
84
New cards
A que nos referimos con intimidad inapropiada?
A una clase que utiliza métodos internos de otra clase.
85
New cards
Que nos indica que una clase está desarrollada de manera correcta?
Que sabe lo mínimo posible de otras clases.
86
New cards
A que nos referimos con middle man?
A una clase cuya única función es delegar una tarea a otra clase.
87
New cards
Que nos puede llevar a un code smell de tipo middle man?
Una refactorización de una cadena de mensajes.
88
New cards
A que nos ayudan los principios SOLID?
A escribir un código de mayor calidad y a evitar code smells.
89
New cards
A que consecuencia nos lleva no seguir los principios SOLID?
A acumular deuda técnica.
90
New cards
Quales són los 5 principios SOLID?
1\. S – Single Responsibility Principle (SRP) 2\. O – Open/Closed Principle (OCP) 3\. L – Liskov Substitution Principle (LSP) 4\. I – Interface Segregation Principle (ISP) 5\. D – Dependency Inversion Principle (DIP)
91
New cards
En que consiste el Principio de responsabilidad única o Single Responsibility Principle (SRP)?
Nunca debería haber más de un motivo por el cual cambiar una clase o un módulo.
92
New cards
Como podemos detectar violaciones del Single Responsibility Principle (SRP)?
1\. La clase o módulo tiene un nombre demasiado genérico. 2\. La clase o módulo tiene una gran cantidad de importaciones. 3\. La clase o módulo tiene una gran cantidad de métodos públicos. 4\. La clase o módulo tiene una gran cantidad de líneas de código. 5\. Un cambio en el código afecta a toda la clase o módulo.
93
New cards
SRP?
Single Responsibility Principle.
94
New cards
Single Responsibility Principle?
SRP.
95
New cards
OAC?
Open and Closed.
96
New cards
Open and Closed?
OAC.
97
New cards
Que establece el principio Open and CLosed?
Establece que las entidades de software deben estar abiertas para la extensión pero cerradas para la modificación
98
New cards
LSP?
Liskov Substitution Principle
99
New cards
Liskov Substitution Principle?
LSP.
100
New cards
En que consiste el principio de Liskov Substitution?
Cada clase que hereda de otra puede usarse como su padre sin necesidad de conocer las diferencias entre ellas.