TIP
Si usan Visual Studio pueden usar el comando Ctrl+R+R para renombrar variables, métodos o lo que necesiten en todos los lugares donde se use a la vez
Introducción
Presentación
Prerrequisitos
Terminología: Buenas prácticas, refactoring, código limpio, deuda técnica
Descarga y análisis del proyecto a trabajar
Principios del código limpio
Nombramiento
Code Smells
Principio DRY
Principio KISS
Usando try catch
Mejoras en C# y comentarios
Evolución de C#
Interpolación de cadenas, inicializador de propiedades y operador condicional null
Implementando minimalismo
Uso de comentarios
Cierre
Resumen y cierre del curso
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 29
Preguntas 7
TIP
Si usan Visual Studio pueden usar el comando Ctrl+R+R para renombrar variables, métodos o lo que necesiten en todos los lugares donde se use a la vez
Quiero un curso de patrones de diseño de este señor!!
por favor.
Para buscar y reemplazar al mismo tiempo una palabra en VS Code:
Windows:
Ctrl+D+D
Mac:
CMD+D+D
Nombramientos
Variables*
//Mal:
int d;
//Bien:
int daySinceModification;
Método
//Mal:
public List<Users> getUsers( )
//Bien:
public List<Users> GetActiveUsers( )
Clases
//Mal:
public class ClassUser2
//Bien:
public class User
Algo por notar en los nombramientos de esta clase, es lo importante que una buena ortografía puede aportar a nuestro código.
En Inglés el adjetivo va antes que el sujeto, como en el caso de “MainMenu”, primero va “Main” que quiere decir principal y luego va menú, que es el sujeto. Por lo tanto, si trasladamos lo mismo para los demás métodos como “ShowMenuRemove”, que en este orden de ideas, iria -> “ShowRemoveMenu” y “ShowMenuTaskList” siendo -> “ShowTaskListMenu” se puede notar una gran diferencia.
Aqui una buena guia para codificar en C#
https://github.com/dotnet/runtime/blob/main/docs/coding-guidelines/coding-style.md
Para los que usen VS Code si seleccionan la palabra --> click derecho --> RenameSymbol, cambian una sola ves el nombre y listo
En cursos pasados y recomendacion de un docente de la facultad, las variables deberian ser nombradas usando camelCase y las funciones deben ir con PascalCase
Con Ctrl + H te sale esta pequeña barra en la que puedes escribir lo que quieres camiar por el que
Así va por ahora
using System;
using System.Collections.Generic;
namespace ToDo
{
internal class Program
{
public static List<string> TaskList { get; set; }
static void Main(string[] args)
{
TaskList = new List<string>();
int menuOption = 0;
do
{
menuOption = ShowMainMenu();
if (menuOption == 1)
{
AddTask();
}
else if (menuOption == 2)
{
RemoveTask();
}
else if (menuOption == 3)
{
ShowTaskList();
}
} while (menuOption != 4);
}
/// <summary>
/// Show the main menu
/// </summary>
/// <returns>Returns menuOption indicated by user</returns>
public static int ShowMainMenu()
{
Console.WriteLine("----------------------------------------");
Console.WriteLine("Ingrese la opción a realizar: ");
Console.WriteLine("1. Nueva tarea");
Console.WriteLine("2. Remover tarea");
Console.WriteLine("3. Tareas pendientes");
Console.WriteLine("4. Salir");
// Read taskIndex
string taskIndex = Console.ReadLine();
return Convert.ToInt32(taskIndex);
}
public static void RemoveTask()
{
try
{
Console.WriteLine("Ingrese el número de la tarea a remover: ");
// Show current taks
for (int i = 0; i < TaskList.Count; i++)
{
Console.WriteLine((i + 1) + ". " + TaskList[i]);
}
Console.WriteLine("----------------------------------------");
string taskIndex = Console.ReadLine();
// Remove one position
int indexToRemove = Convert.ToInt32(taskIndex) - 1;
if (indexToRemove > -1)
{
if (TaskList.Count > 0)
{
string taskToRemove = TaskList[indexToRemove];
TaskList.RemoveAt(indexToRemove);
Console.WriteLine("Tarea " + taskToRemove + " eliminada");
}
}
}
catch (Exception)
{
}
}
public static void AddTask()
{
try
{
Console.WriteLine("Ingrese el nombre de la tarea: ");
string taskToAdd = Console.ReadLine();
TaskList.Add(taskToAdd);
Console.WriteLine("Tarea registrada");
}
catch (Exception)
{
}
}
public static void ShowTaskList()
{
if (TaskList == null || TaskList.Count == 0)
{
Console.WriteLine("No hay tareas por realizar");
}
else
{
Console.WriteLine("----------------------------------------");
for (int i = 0; i < TaskList.Count; i++)
{
Console.WriteLine((i + 1) + ". " + TaskList[i]);
}
Console.WriteLine("----------------------------------------");
}
}
}
}
Hay IDEs que te muestran que problemas tienes en tu codigo variables o metodos que no se usan, valores que innecesarios o palabras mal escritas
Reto de Nombramiento:
using System;
using System.Collections.Generic;
namespace ToDo
{
internal class Program
{
public static List<string> TaskList { get; set; }
static void Main(string[] args)
{
TaskList = new List<string>();
int menuSelected = 0;
do
{
menuSelected = ShowMainMenu();
if (menuSelected == 1)
{
ShowMenuAdd();
}
else if (menuSelected == 2)
{
ShowMenuRemove();
}
else if (menuSelected == 3)
{
ShowMenuTaskList();
}
} while (menuSelected != 4);
}
/// <summary>
/// Show the main menu
/// </summary>
/// <returns>Returns option indicated by user</returns>
public static int ShowMainMenu()
{
Console.WriteLine("----------------------------------------");
Console.WriteLine("Ingrese la opción a realizar: ");
Console.WriteLine("1. Nueva tarea");
Console.WriteLine("2. Remover tarea");
Console.WriteLine("3. Tareas pendientes");
Console.WriteLine("4. Salir");
// Read line
string inputOptionUser = Console.ReadLine();
return Convert.ToInt32(inputOptionUser);
}
public static void ShowMenuRemove()
{
try
{
Console.WriteLine("Ingrese el número de la tarea a remover: ");
// Show current taks
for (int i = 0; i < TaskList.Count; i++)
{
Console.WriteLine((i + 1) + ". " + TaskList[i]);
}
Console.WriteLine("----------------------------------------");
string inputTaskToRemove = Console.ReadLine();
// Remove one position
int indexTaskToRemove = Convert.ToInt32(inputTaskToRemove) - 1;
if (indexTaskToRemove > -1)
{
if (TaskList.Count > 0)
{
string taskSelectedToRemove = TaskList[indexTaskToRemove];
TaskList.RemoveAt(indexTaskToRemove);
Console.WriteLine("Tarea " + taskSelectedToRemove + " eliminada");
}
}
}
catch (Exception)
{
}
}
public static void ShowMenuAdd()
{
try
{
Console.WriteLine("Ingrese el nombre de la tarea: ");
string inputNewTask = Console.ReadLine();
TaskList.Add(inputNewTask);
Console.WriteLine("Tarea registrada");
}
catch (Exception)
{
}
}
public static void ShowMenuTaskList()
{
if (TaskList == null || TaskList.Count == 0)
{
Console.WriteLine("No hay tareas por realizar");
}
else
{
Console.WriteLine("----------------------------------------");
for (int i = 0; i < TaskList.Count; i++)
{
Console.WriteLine((i + 1) + ". " + TaskList[i]);
}
Console.WriteLine("----------------------------------------");
}
}
}
}
Martin Fowler recomienda en su libro refactoring para refactorizar se debe contar con un bateria de pruebas para asegurar la integridad del software
Excelente clase y excelente reto.
No utilizar numeros en metodos y clases
Notacion Hungara
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?