Boolean & Enum Selector Arguments
Argumentos Selectores Booleanos y de Enumeración
G15: Selector arguments are flags that choose a path through a function. They're a sign that the function does more than one thing. When you call render(data, true), does true mean verbose? cached? compressed? The reader must dive into the implementation to know. The solution is to split the function: renderVerbose(data) and renderCompact(data) are each immediately understandable.
G15: Los argumentos selectores son banderas que eligen un camino a través de una función. Son una señal de que la función hace más de una cosa. Cuando llamas render(data, true), ¿true significa verbose? ¿en caché? ¿comprimido? El lector debe sumergirse en la implementación para saberlo. La solución es dividir la función: renderVerbose(data) y renderCompact(data) son inmediatamente comprensibles.
Obscured Intent
Intención Oscurecida
G16: Code should be expressive at the point it is read, not only at the point it is written. Magic numbers like 86400, cryptic algorithm names, and single-letter variables all obscure intent. A reader should understand what a line does without needing to trace its history. Name constants, break complex expressions into named steps, and choose verbs that describe the action precisely.
G16: El código debe ser expresivo en el punto donde se lee, no solo donde se escribe. Los números mágicos como 86400, los nombres de algoritmos crípticos y las variables de una letra ocultan la intención. Un lector debería entender qué hace una línea sin necesidad de rastrear su historia. Nombra las constantes, divide las expresiones complejas en pasos nombrados y elige verbos que describan la acción con precisión.
✏️
Code Challenge
Desafío de Código
Split the calculate_price function into two clearly named functions.
Divide la función calculate_price en dos funciones claramente nombradas.
💡 Key takeaway
A selector argument is a confession that a function does two things. The fix is always to split it.
Un argumento selector es una confesión de que una función hace dos cosas. La solución siempre es dividirla.