IIC2113-2022-2 / Syllabus

4 stars 0 forks source link

[Tarea 2] Largo funciones #27

Open Mjtala opened 1 year ago

Mjtala commented 1 year ago

hola! que tan estricto es que el largo delas funciones no sean mayores a 5 líneas? y es 5 líneas considerando las líneas de las llaves? pr ejemplo, con un try y un catch ya tengo solo por eso y las llaves 6 líneas y eso es sin contar el código en sí. Creo que 5 líneas igual es muy chico y por ejemplo si tengo un código como siento que es innecesario acortarlo. Screenshot 2022-11-08 at 14 16 12

RodrigoToroIcarte commented 1 year ago

En la función que das de ejemplo hay un par de cosas que podrías hacer. Primero, creo que el nombre no es del todo bueno. Creo que la función más que chequear quién tiene más oros está computando los puntos que gana cada jugador en términos de oros (donde (1,1) significa empate).

Luego tu código podría sumar 1 si _playerA.AmounOrosCards >= _playerB.AmountOrosCards. Así te ahorras el último else:

int intPlayerA =0, intPlayerB = 0;
if (_playerA.AmounOrosCards >= _playerB.AmountOrosCards)
    intPlayerA++;
if (_playerA.AmounOrosCards <= _playerB.AmountOrosCards)
    intPlayerB++;
return (intPlayerA, intPlayerB);

... pero ahora que veo este código me pregunto si se podrá tener una función que solo chequee si un jugador ganó puntos. Algo como:

private (int, int) CheckWhoHasMoreGold()
{
    int intPlayerA = GetPointsOros(_playerA, _playerB);
    int intPlayerB = GetPointsOros(_playerB, _playerA);
    return (intPlayerA, intPlayerB);
}

private int GetPointsOros(player player1, player player2)
{
    if (player1.AmounOrosCards >= player2.AmountOrosCards)
        return 1;
    return 0;
}

Creo que los nombres de los métodos y los argumentos no son los mejores, pero así quedan métodos más chicos y fáciles de entender :)

RodrigoToroIcarte commented 1 year ago

Respecto al conteo de líneas, no se consideran las llaves.

En la rúbrica tendré dos tipos de items. Unos que son "generalmente" y otros que son "nunca". Por ejemplo, ganaras puntos porque tu código "generalmente tenga funciones cortas, de 5 líneas o menos". También ganarás puntos porque "ninguna función tenga 15 o más líneas de código".

El problema es que es súper difícil hacer una rúbrica justa de clean code porque siempre existen excepciones. Al final la última palabra la tiene el libro. Si en la recorrección me puedes convencer de que tu función con 15 líneas de código está limpia, entonces te subo la nota :+1: