David Elias Gatica Morales
Jesús Leonardo Perea Alarcón
Miguel Teheran
ProfesorLeandro Cosme Tomassini
Juan Pablo Ruiz
edward.arroyave
Miguel Teheran
ProfesorMiguel Andres Rendon Reyes
Miguel Teheran
ProfesorJUAN ESTEBAN MORENO NORIEGA
Miguel Angel Reyes Moreno
Francisco Javier Tejada Lorenzo
Jose Roque
Jose Roque
No Comentes mal código, reescribelo
cual es la mejor practica, comentarios en ingles o en español ?
Todo deberia ser en ingles, pero depende de como lo manejen en el proyecto o empresa donde estes. Lo importante es seguir el estandar en toda parte.
1
Uso de comentarios en C#
¿Qué son?
Los comentarios son anotaciones en el código que no se ejecutan por el compilador. Se utilizan para:
Tipos de comentarios en C#:
//) y terminan al final de la línea./*) y terminan con un asterisco y una barra diagonal (*/).Beneficios de usar comentarios:
Consejos para usar comentarios:
// Este es un comentario de una sola línea. /* Este es un comentario de varias líneas. */
no hay que sobre cargar de comentarios nuestros desarrollos, ya que generan mucha ilegibilidad.
Me surgió una inquietud acerca del código comentado. En algunas situaciones, se realiza una modificación en alguna estructura del código y se comenta la estructura anterior. Al revisar proyectos en los que necesito hacer ajustes, noto que hay numerosos scripts comentados. ¿Sería recomendable eliminarlos o es preferible dejar que permanezcan?
Eliminarlos, el código comentado ensucia la lectura. a veces dejan esos código temporalmente y luego terminan quedandose.
Me preguntaba, si hay herramientas externas para documentar el código, para que se pueda explicar en profundidad.
Ahora mismo la mejor opción es usar github copilot chat para generar todo de manera automatica. LA idea es agregar el menor numero de comentarios obvios y enfocarse en mejorar el código en si para que sea fácil de entender y leer.
IMPORTANTE
En ocasiones solemos imprimir en consola información. Esto es importante a la hora de desarrollar; pero es fundamental que a la hora de desplegar nuestro proyecto eliminar los debugs que no sean necesarios, generan problemas de seguridad a la hora de algun ataque. Además, dejar comentado código que no vamos a utilizar, puede generar que desde alguna pagina web o aplicación esto pueda verse y no tener sentido alguno, generando nuevamente problemas de seguridad,
Código actualizado:
List<string> TaskList = new List<string>(); int menuOption = 0; do { menuOption = ShowMainMenu(); if ((Menu)menuOption == Menu.Add) { AddTask(); } else if ((Menu)menuOption == Menu.Remove) { RemoveTask(); } else if ((Menu)menuOption == Menu.List) { ShowTaskList(); } } while ((Menu)menuOption != Menu.Exit); /// <summary> /// Show the options for Task: /// 1. Nueva tarea /// 2. Remover tarea /// 3. Tareas pendientes /// 4. Salir /// </summary> /// <returns>Returns menuOption indicated by user</returns> 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"); string taskIndex = Console.ReadLine(); return Convert.ToInt32(taskIndex); } void RemoveTask() { try { Console.WriteLine("Ingrese el número de la tarea a remover: "); ListTasks(); string taskIndex = Console.ReadLine(); // Remove one position because the array starts with 0 int indexToRemove = Convert.ToInt32(taskIndex) - 1; if (indexToRemove <= TaskList.Count - 1 && indexToRemove >= 0) { if ((indexToRemove > -1) || (TaskList.Count > 0)) { string taskToRemove = TaskList[indexToRemove]; TaskList.RemoveAt(indexToRemove); Console.WriteLine($"Tarea {taskToRemove} eliminada"); } } else { Console.WriteLine("El número de tarea seleccionado no es válido."); } } catch (Exception) { Console.WriteLine("Ha ocurrido un error al eliminar la tarea."); } } void AddTask() { try { Console.WriteLine("Ingrese el nombre de la tarea: "); string taskToAdd = Console.ReadLine(); if (!string.IsNullOrEmpty(taskToAdd)) { TaskList.Add(taskToAdd); Console.WriteLine("Tarea registrada"); } else { Console.WriteLine("La tarea no puede estar vacía."); } } catch (Exception) { Console.WriteLine("Ha ocurrido un error al intentar ingresar la tarea."); } } void ShowTaskList() { if (TaskList?.Count > 0) { ListTasks(); } else { Console.WriteLine("No hay tareas por realizar"); } } void ListTasks() { Console.WriteLine("----------------------------------------"); var indexTask = 1; TaskList.ForEach(task => Console.WriteLine($"{indexTask++}. {task}")); Console.WriteLine("----------------------------------------"); } public enum Menu { Add = 1, Remove = 2, List = 3, Exit = 4 }
Recomendaciones para comentar:
mi Código minimalismo
List<string> TaskList = new List<string>();
optionMenu optionMenu;do{ optionMenu = (optionMenu)ShowMainMenu(); if (optionMenu == optionMenu.Add) { ShowMenuAdd(); } else if (optionMenu == optionMenu.Remove) { ShowMenuRemove(); } else if (optionMenu == optionMenu.List) { ShowMenuPrintList(); }} while (optionMenu != optionMenu.Exit);
void PrintRepeatCharacter(char caracter, int size) => Console.WriteLine(new String('-', 40));
``/// <summary>`` ``/// Show the main menu `` ``/// </summary>`` ``/// <returns>Returns option indicated by user</returns>`` int ShowMainMenu() { int line=-1; do{ try{ PrintRepeatCharacter('-',40); 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"); string input = Console.ReadLine(); ``// Read line`` if (!int.TryParse(input, out line)) { Console.WriteLine("La entrada no es un número entero válido."); line = -1; } }catch{ line = -1; } }while(line<=0 || line>4);
return line; }
void ShowMenuRemove() { try { Console.WriteLine("Ingrese el número de la tarea a remover: "); ShowMenuPrintList();
string line = Console.ReadLine(); ``// Remove one position`` int indexToRemove = Convert.ToInt32(line) - 1; if(indexToRemove<0 || indexToRemove>(TaskList?.Count-1)) Console.WriteLine("# de tarea ingresada es inválida"); else { string task = TaskList[indexToRemove]; TaskList.RemoveAt(indexToRemove); Console.WriteLine($"Tarea {task} eliminada"); } } catch (Exception) { System.Console.WriteLine("Ocurrio un Error al intentar Eliminar una Tarea"); } }
void ShowMenuAdd() { try { Console.WriteLine("Ingrese el nombre de la tarea: "); string task = Console.ReadLine(); TaskList.Add(task); Console.WriteLine("Tarea registrada"); } catch (Exception) { System.Console.WriteLine("Error al recibir nombre de la tarea"); } }
void ShowMenuPrintList() { if (TaskList?.Count == 0) { Console.WriteLine("No hay tareas por realizar"); } else { PrintRepeatCharacter('-',40); int indexItem=0; TaskList.ForEach(p=>Console.WriteLine($"{++indexItem}. {p}")); PrintRepeatCharacter('-',40); } }
internal enum optionMenu { Add = 1, Remove = 2, List = 3, Exit = 4 }
mi código mini
List<string> TaskList = new List<string>(); optionMenu optionMenu; do { optionMenu = (optionMenu)ShowMainMenu(); if (optionMenu == optionMenu.Add) { ShowMenuAdd(); } else if (optionMenu == optionMenu.Remove) { ShowMenuRemove(); } else if (optionMenu == optionMenu.List) { ShowMenuPrintList(); } } while (optionMenu != optionMenu.Exit); void PrintRepeatCharacter(char caracter, int size) => Console.WriteLine(new String('-', 40)); /// <summary> /// Show the main menu /// </summary> /// <returns>Returns option indicated by user</returns> int ShowMainMenu() { int line=-1; do{ try{ PrintRepeatCharacter('-',40); 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"); string input = Console.ReadLine(); // Read line if (!int.TryParse(input, out line)) { Console.WriteLine("La entrada no es un número entero válido."); line = -1; } }catch{ line = -1; } }while(line<=0 || line>4); return line; } void ShowMenuRemove() { try { Console.WriteLine("Ingrese el número de la tarea a remover: "); ShowMenuPrintList(); string line = Console.ReadLine(); // Remove one position int indexToRemove = Convert.ToInt32(line) - 1; if(indexToRemove<0 || indexToRemove>(TaskList?.Count-1)) Console.WriteLine("# de tarea ingresada es inválida"); else { string task = TaskList[indexToRemove]; TaskList.RemoveAt(indexToRemove); Console.WriteLine($"Tarea {task} eliminada"); } } catch (Exception) { System.Console.WriteLine("Ocurrio un Error al intentar Eliminar una Tarea"); } } void ShowMenuAdd() { try { Console.WriteLine("Ingrese el nombre de la tarea: "); string task = Console.ReadLine(); TaskList.Add(task); Console.WriteLine("Tarea registrada"); } catch (Exception) { System.Console.WriteLine("Error al recibir nombre de la tarea"); } } void ShowMenuPrintList() { if (TaskList?.Count == 0) { Console.WriteLine("No hay tareas por realizar"); } else { PrintRepeatCharacter('-',40); int indexItem=0; TaskList.ForEach(p=>Console.WriteLine($"{++indexItem}. {p}")); PrintRepeatCharacter('-',40); } } internal enum optionMenu { Add = 1, Remove = 2, List = 3, Exit = 4 } ```Archivo ToDo.csproj ```js <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>EXE</OutputType> <TargetFramework>net6.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> </PropertyGroup> </Project> ```**Gracias por el repaso.**