No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Resumen y cierre del curso

14/14
Recursos

Nombre del curso: Curso de Buenas Pr谩cticas y C贸digo Limpio en C#

Dean:聽Sebasti谩n Delmont

Faculty Manager:聽Ricardo Celis

School Owner: Juan David Castro

Profesor: Miguel Teheran

Direcci贸n: Karol Casta帽eda

Producci贸n OPS: Lizeth C谩ceres y Roc铆o Mart铆nez

Creaci贸n audiovisual: C茅sar A. Pinilla

Edici贸n de video: Juan Leon

Postproducci贸n de audio: Jorge Andres Torres Viveros

Dise帽o gr谩fico: Romina Lav铆n

Coordinaci贸n General: Andr茅s Arizmendy, Daniel Guti茅rrez, Carol Baquero, Carlos C茅spedes y Sura Cede帽o

Revisi贸n: Rodrigo Goitia y Natalia Moreno Espinoza

Aportes 39

Preguntas 3

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

Excelente curso b谩sico para adentrarse a las buenas practicas de c贸digo, en particular me agrada mucho como explica este profesor, he visto otros de sus cursos en c# y .net y siempre me ha gustado su forma tan sencilla de explicar.

El curso es corto y sencillo de entender. Felicitaciones a Miguel, explica muy bien. Por otra parte, muchos de los ajustes estan orientados a practicas muy visuales u organizacionales (que pretenden mantener un orden) pero, desde otra perspectiva, hay muchas posibles mejoras a nivel de rendimiento que seria interesante evaluar, tambien, el hecho de simplificar o reducir el cosigo no siempre representa o resulta en algo 100% bueno si, posteriormente, evaluamos el producto a nivel de ensamblado o ejecutable, puede ser que mucho de lo que refactorizamos se haya "des-refactorizado" en la media compilacion por x o y factor (punto a evaluar). Tambien, estaria muy bien revisar todo lo que se ha enriquecido c# hasta hoy y por ultimo, pero no menos importante, todo lo relacionado a acceso y manejo de memoria y tambien los temas relacionados a abstraccion. De nuevo, el curso es bueno y me parece una muy buena introduccion a un tema muy muy amplio,l. Espero, en el futuro, vengan los siguiente "capitiulos" donde se pueda profundizar un poco mas. Excelente Miguel y platzi 馃憦

Muy buen curso. Explicado de forma excelente de parte del profesor. Felicitaciones!

Uno de los mejores cursos de buenas pr谩cticas y c贸digo limpio que he tomado. Me sumo al pedido del compa帽ero Sim贸n Flores, Platzi deber铆a tener una ruta de especializaci贸n de C# con un proyecto real como la tiene JavaScript.

Mis m谩s sinceras felicitaciones al profesor Miguel Teher谩n, sus cursos son muy f谩ciles de llevar y de entender, se nota los a帽os de experiencia.

隆脡xitos Team Platzi!

Excelente curso, solamente una peque帽a cr铆tica:
Ser铆a muy bueno que haga una ruta de aprendizaje totalmente completo de C#, desde b谩sico a m谩s complejo (o simplemente desde los primeros pasos a realizar un peque帽o proyecto importante) porque explica muy bien!!!
La verdad que me ha motivado a煤n m谩s en aprender este lenguaje.
Fuerte abrazo desde Alemania, profesor! y tambi茅n muchas gracias por dedicarle tiempo a nosotros!

El tema del curso es muy bueno y el profesor tambien es muy bueno, sin embargo el curso se queda corto y no profundiza.

Desde mi punto de vista:

  • leer Clean code de robert C. martin
  • luego practicar, practicar y practicar a aplicar buenas practicas
  • igual ayuda mucho leer foros y suscribirse a posts que te ayuden a mejorar en un lenguaje ya que cada lenguaje tiene lo propio

Excelente curso, la mayor铆a de las recomendaciones aplican para otros lenguajes de programaci贸n

Gracias, ser铆a bueno un curso de pruebas unitarias en c# con .net, tambien con entity framework para simular las bases de datos, y con mocks a apis externas

Profe Miguel realmente es un vacano explicando. Hace que todo se entienda de forma clara y precisa.
Ojala sigan ampliando la ruta de C# considero que es un lenguaje muy importante.

SIN DUDAS LOS CURSOS DE ESTE DOCENTE DESTACAN SOBRE EL RESTO, MUY BUEN CURSO!!
Excelente explicaci贸n Prof. Miguel, me sirvi贸 para reestructurar mi proyecto
**Recomendaciones finales:** * Lee sobre buenas pr谩cticas * Realiza code review entre colegas, as铆 como entre compa帽eros y compa帽eras de trabajo * Realiza refactoring luego de implementar c贸digo * Utiliza herramientas que te ayuden a limpiar tu c贸digo * Implementa est谩ndares y pr谩cticas comunes en tu empresa o proyecto

Curso corto pero con un buen temario, ser铆a bueno poder profundizar en cuales son las mejores pr谩cticas en los temas de Seguridad, Rendimiento, Escalabilidad, etc.

Excelente curso

Excelente Curso Volvi a agarrarle gusto a C# hacia mucho no usaba C# como desde .net 3 antes de net core ha cambiado mucho ahora si me gust贸 Excelente Curso Mil gracias !!!
Codigo super optimizado con todo lo que vimos en el curso: ```js namespace ToDo { public class ToDoList { private readonly List<string> tasks = new List<string>(); public void Start() { MenuOption selectedOption; do { selectedOption = ShowMainMenu(); switch (selectedOption) { case MenuOption.Add: AddTask(); break; case MenuOption.Remove: RemoveTask(); break; case MenuOption.List: ListTasks(); break; case MenuOption.Exit: break; default: Console.WriteLine("Invalid option. Please select a valid option."); break; } } while (selectedOption != MenuOption.Exit); } private MenuOption ShowMainMenu() { Console.WriteLine("----------------------------------------"); Console.WriteLine("Enter your choice:"); Console.WriteLine("1. Add new task"); Console.WriteLine("2. Remove task"); Console.WriteLine("3. List pending tasks"); Console.WriteLine("4. Exit"); int input = GetValidIntInput(); return (MenuOption)input; } private void AddTask() { Console.WriteLine("Enter the new task name:"); string taskName = Console.ReadLine().Trim(); if (!string.IsNullOrEmpty(taskName)) { tasks.Add(taskName); Console.WriteLine("Task added successfully."); } else { Console.WriteLine("Please enter a valid task name."); } } private void RemoveTask() { if (tasks.Count == 0) { Console.WriteLine("No tasks to remove."); return; } Console.WriteLine("Enter the number of the task to remove:"); ListTasks(); int input = GetValidIntInput(); int indexToRemove = input - 1; if (indexToRemove >= 0 && indexToRemove < tasks.Count) { string removedTask = tasks[indexToRemove]; tasks.RemoveAt(indexToRemove); Console.WriteLine($"Task '{removedTask}' removed successfully."); } else { Console.WriteLine("Invalid task number. Please try again."); } } private void ListTasks() { if (tasks.Count == 0) { Console.WriteLine("No tasks to list."); return; } Console.WriteLine("----------------------------------------"); int index = 1; foreach (string task in tasks) { Console.WriteLine($"{index++}. {task}"); } Console.WriteLine("----------------------------------------"); } private int GetValidIntInput() { int input; while (!int.TryParse(Console.ReadLine(), out input)) { Console.WriteLine("Invalid input. Please enter a valid integer."); } return input; } public enum MenuOption { Add = 1, Remove = 2, List = 3, Exit = 4 } } class Program { static void Main(string[] args) { new ToDoList().Start(); } } } ```
Excelente curso. Conciso, directo y facil de comprender
Excelente Curso!

Estimado Miguel,

En conjunto con el profe Juan de Pildoras Inform谩ticas, un canal de Youtube, son unos cracks y le coges cari帽o a este lenguaje en especial por lo simple que se explica y las respuestas sencillas a cosas que pueden parecer complejas.

10/10

Muy buen curso...

Buen curso! y sobre todo muy claro!

creo que es el mejor profesor de platzi Miguel teheran

Excelente curso. B谩sico, pero directo.

Que buen curso 馃槂

No usen chatgpt para implementar cosas enredadas, mejor aprendanlas sino seran problemas para el futuro.

Gran curso corto, pero al grano. Ahora voy por el curso de SOLID.

Este curso hizo que me enamorara de nuevo en C#! excelente curso profe Miguel!

Muchas gracias Miguel, hace ver m谩s interesantes y envolventes las experiencias de aprendizaje C#.

Excelente Curso

Muy buen curso, justo lo que uno necesita para poder replicarlo al equipo de desarrollo, y a los iniciantes en programacion鈥

Me encanto el curso, me parece que es algo basico que todos los programadores debemos saber y aplicar

Muchas gracias Miguel, tus cursos en C# siempre son los mejores, los complemento para sre backend

Me parece que el curso es muy correcto en su duraci贸n, ejemplos y el profesor explic贸 todo de una manera muy sencilla y entendible.

Muy buen curso! Este fue finalmente mi resultado:

List<string> taskList = new List<string>();


// Main code
while (MenuMain()) ;

// -------------------------- Functions --------------------------

// -------------------------- Menus --------------------------

/// <summary>
/// Show the main menu
/// </summary>
/// <returns>Returns wether the user has not chose to exit</returns>
bool MenuMain()
{
    PrintSeparator();
    PrintMainMenuOptions();

    MenuOption? selectedOption = (MenuOption?)ReadIntSafely();
    return (selectedOption) switch
    {
        (MenuOption.Add) => RunAndReturnTrue(MenuAdd),
        (MenuOption.Remove) => RunAndReturnTrue(MenuRemove),
        (MenuOption.TaskList) => RunAndReturnTrue(MenuTaskList),
        (MenuOption.Exit) => false,
        _ => true
    };
}

void MenuRemove()
{
    Console.WriteLine("Ingrese el n煤mero de la tarea a remover: ");
    ShowTaskList();
    PrintSeparator();

    int? selectedInt = ReadIntSafely();
    if (selectedInt == null)
    {
        return;
    }
    int indexToRemove = (int)selectedInt - 1;

    RemoveItemFromTaskList(indexToRemove);
}

void MenuAdd()
{
    Console.WriteLine("Ingrese el nombre de la tarea: ");
    string task = Console.ReadLine();
    taskList.Add(task);
    Console.WriteLine("Tarea registrada");
}

void MenuTaskList()
{
    if (taskList.Count == 0)
    {
        Console.WriteLine("No hay tareas por realizar");
        return;
    }
    PrintSeparator();
    ShowTaskList();
    PrintSeparator();
}

// -------------------------- Helpers --------------------------

IEnumerable<(T item, int index)> WithIndex<T>(IEnumerable<T> source)
{
    return source.Select((item, index) => (item, index));
}

bool RunAndReturnTrue(Action func) { func(); return true; }

void RemoveItemFromTaskList(int index)
{
    if (index < 0 || taskList.Count <= index)
    {
        return;
    }
    string task = taskList[index];
    taskList.RemoveAt(index);
    Console.WriteLine($"Tarea {task} eliminada");
}

int? ReadIntSafely()
{
    return int.TryParse(Console.ReadLine(), out int selectedInt) ? selectedInt : null;
}

void ShowTaskList()
{
    foreach (var (task, i) in WithIndex(taskList))
    {
        Console.WriteLine($"{i + 1}. {task}");
    }
}

void PrintMainMenuOptions()
{
    Console.WriteLine("Ingrese la opci贸n a realizar: ");
    Console.WriteLine($"{(int)MenuOption.Add}. Nueva tarea");
    Console.WriteLine($"{(int)MenuOption.Remove}. Remover tarea");
    Console.WriteLine($"{(int)MenuOption.TaskList}. Tareas pendientes");
    Console.WriteLine($"{(int)MenuOption.Exit}. Salir");
}

void PrintSeparator() => Console.WriteLine("----------------------------------------");

// -------------------------- Enums --------------------------

enum MenuOption
{
    Add = 1,
    Remove = 2,
    TaskList = 3,
    Exit = 4
}

No se si segu铆 correctamente principio KISS.

Gran Curso, muy necesario para continuar la ruta de aprendizaje en c#

Este curso de Buenas Pr谩cticas y C贸digo Limpio en C# es una excelente oportunidad para aquellos que desean mejorar sus habilidades de programaci贸n y escribir c贸digo de alta calidad. Aprender谩s a escribir c贸digo mantenible, legible y f谩cil de depurar, lo que te permitir谩 trabajar de manera m谩s eficiente y resolver problemas con mayor facilidad. 隆Definitivamente recomendar铆a este curso a cualquier desarrollador C# interesado en mejorar sus habilidades de programaci贸n!

Que gran curso, aborda temas importantes, aunque a nivel b谩sico, da unas bases grandes para seguir aprendiendo a tener un c贸digo limpio y con buenas practicas, se aprendi贸 bastante, gracias profe, explica muy bien.

Muy buen curso, y la explicaci贸n mejor a煤n

Excelente curso, contenido muy bueno.