A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Refactorizar a escuela engine

25/32
Recursos

Es importante refactorizar nuestro c贸digo para mantenerlo ordenado.

El constructor de una clase tiene que ser tan r谩pido como sea posible, tiene que estar desconectado de cualquier cosa que implique entrada y salida.

Aportes 29

Preguntas 8

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Considero que la refactorizacion que se define como una t茅cnica de la ingenier铆a de software para reestructurar un c贸digo fuente, alterando su estructura interna sin cambiar su comportamiento externo, va a la mano con los principios solid que son
S-Responsabilidad simple Este principio trata de destinar cada clase a una finalidad sencilla y concreta.
O-Abierto/Cerrado Principio atribuido a Bertrand Meyer que habla de crear clases extensibles sin necesidad de entrar al c贸digo fuente a modificarlo. Es decir, el dise帽o debe ser abierto para poderse extender pero cerrado para poderse modificar.
L-Sustitucion Liskov Este principio fue creado por Barbara Liskov y habla de la importancia de crear todas las clases derivadas para que tambi茅n puedan ser tratadas como la propia clase base. Cuando creamos clases derivadas debemos asegurarnos de no reimplementar m茅todos que hagan que los m茅todos de la clase base no funcionases si se tratasen como un objeto de esa clase base.
I-Segregacion del interface Este principio fue formulado por Robert C. Martin y trata de algo parecido al primer principio. Cuando se definen interfaces estos deben ser espec铆ficos a una finalidad concreta. Por ello, si tenemos que definir una serie de m茅todos abstractos que debe utilizar una clase a trav茅s de interfaces, es preferible tener muchos interfaces que definan pocos m茅todos que tener un interface con muchos m茅todos.
El objetivo de este principio es principalmente poder reaprovechar los interfaces en otras clases. Si tenemos un interface que compara y clona en el mismo interface, de manera m谩s complicada se podr谩 utilizar en una clase que solo debe comparar o en otra que solo debe clonar.
D-Inversi贸n de dependencias Tambi茅n fue definido por Robert C. Martin. El objetivo de este principio conseguir desacoplar las clases. En todo dise帽o siempre debe existir un acoplamiento pero hay que evitarlo en la medida de lo posible. Un sistema no acoplado no hace nada pero un sistema altamente acoplado es muy dif铆cil de mantener

Se esta poniendo hardcore

Nota: Seria bueno colocar como nombre de espacio CoreEscuela.App a muestra clase EscuelaEngine por si queremos agregar mas motores a nuestro proyecto.

Realmente se esta volviendo confuso. No entiendo la t茅cnica haberlo hecho 鈥渕al鈥 para despu茅s refactorizar. Deber铆a primero explicarse en base a la 鈥渂uena practica鈥 y despu茅s comparar con un c贸digo mal hecho. Otra cosa: los nombre del namespace las clases confunde, deber铆a tener nombres mas representativos. Ademas, para ser 鈥渇undamentos鈥 va un poco r谩pido, sin explicar ciertas cosas鈥 bueno, igual seguimos.

Estaba teniendo problemas con el Namespace hasta que vi este post https://platzi.com/blog/namespace-en-c-sharp/

Para esta clase la premisa principal es la de Refactorizar el c贸digo
Para: tenerlo ordenado, que a medida que vaya creciendo podamos tener un orden en nuestro c贸digo y sea m谩s f谩cil de manejar

Lo primero que se har谩 es al ver la explicaci贸n en la carpeta donde est谩 el proyecto crear otra m谩s que se llamar谩 Etapa 4

Dentro de esta carpeta de la misma manera que se hizo para Etapa 1 se digitar谩 en la ventana de consola dotnet new console
Una vez realizado esto se crear谩 los archivos que ten铆a hasta el instante la Etapa1. Se copiar谩 el contenido.

Posterior a esto se ir谩 borrando el c贸digo que no queramos entre ellos los comentarios.

  • A continuaci贸n se crear谩 una carpeta que se llamar谩 app, aqu铆 ir谩 la l贸gica de la aplicaci贸n.
  • En esta carpeta crearemos el motor de la aplicaci贸n con un archivo que se llamar谩 EscuelaEngine.cs
  • Siguiendo con los cambios a implementar se cambia el namespace en Program.cs se llamar谩 CoreEscuela. Posterior a este cambio se deber谩 verificar si est谩 cambiado autom谩ticamente el namespace para los otros archivos.

Se crea la clase EscuelaEngine.cs con una propiedad p煤blica que pueda encapsular . Adem谩s en el constructor no se manipular谩 entrada y salida de datos debe ser tan r谩pido como sea posible, para ello se crear谩 un m茅todo en donde contendr谩 la informaci贸n de la escuela con sus cursos.

public void Inicializar()
    {
          Escuela= new Escuela("Elvis academy",2012,TiposEscuela.Primaria,
                            pais:"Ecuador", ciudad:"Portoviejo"
            );
          Escuela.Cursos=new List<Curso>(){
                         new Curso(){Nombre="101", Jornada=TiposJornada.Ma帽ana},
                         new Curso(){ Nombre="201", Jornada=TiposJornada.Ma帽ana},
                         new Curso {Nombre="301",Jornada=TiposJornada.Ma帽ana },
                         new Curso(){ Nombre="401", Jornada=TiposJornada.Tarde},
                        new Curso(){ Nombre="501", Jornada=TiposJornada.Tarde},
            };
          

         
    }

Para finalizar en el programa principal se inicializa este m茅todo y se imprime los cursos con la funci贸n que ten铆amos ya realizada

var engine= new EscuelaEngine();
engine.Inicializar();
imprimirCursosEscuela(engine.Escuela)

Un poco confuso pero estoy tratando hay vamos

Es importante refactorizar nuestro c贸digo para mantenerlo ordenado.

El constructor de una clase tiene que ser tan r谩pido como sea posible, tiene que estar desconectado de cualquier cosa que implique entrada y salida.

El m茅todo ImprimirCursosEscuela no deber铆a ir en la clase EngineEscuela tambi茅n? ya que forma parte de la l贸gica de negocio.

por que los m茅todos la clases est谩ticas deben ser est谩ticos no lo explico dijo que lo iba hacer y no lo hizo alguien sabe

Muy bien

Hola, unas dudas.

Por lo que puedo notar, refactorizar es como re-organizar el c贸digo o mejor dicho, el proyecto. Esto me refiero porque bueno, hemos creado una nueva carpeta, un nuevo archivo donde haremos una especie de n煤cleo (engine) y ah铆 empezamos la l贸gica como tal del proyecto. Mientras que claro, los dem谩s m贸dulos cumplen funcionalidades m谩s espec铆ficas.

Me imagino, que trabajando con un Framework (en este caso .NET o ASP.NET) no har铆a falta esto no? ya que vendr铆a todo organizado?

Excelente!

Muy bien

Genial, muchas gracias. la refactorizaci贸n es clave.

como se le hac铆a para importar o usar una clase, cuando se posiciona el cursor en la clase Cursos ?

Buenas clases

muy bueno

Refatorizar es importante para ordenar el c贸digo a medida que va creciendo un proyecto

Muy bueno lo de refactorizar, 驴Hay alguna convencion para la organizaci贸n de las carpetas?

Muy buena refactorizacion del c贸digo excelente

Atajo para crear un constructor en C#

Genial, esta mejorando todo cada clase :0

El proceso de refactorizaci贸n es muy importante sobre todo se se hace trabajo colaborativo o se desarrolla profesionalmente.

me siento estancado y he buscado por todo el error, considero que todo esta bien ,ayuda
Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.
at CoreEscuela.Program.ImprimirCursosEscuela(Escuela Escuelita) in C:\Users\Juan Perdomo\platzi\c_char\etapa4\Program.cs:line 32
at CoreEscuela.Program.Main(String[] args) in C:\Users\Juan Perdomo\platzi\c_char\etapa4\Program.cs:line 17

Nunca me a funcionado lo de agregar los using con CTRL 鈥 me toca agregarlos manualmente.

Muy interesante la refactorizaci贸n del c贸digo, se entendi贸 perfecto

Le paso a alguien que renombraron el namespace de Etapa1 a CoreEscuela y les marcaba error en las l铆neas de: var engine = new EscuelaEngine(); ?

Estoy buscando en todo el c贸digo que borre de mas, que me me faltaba y nada, hasta volv铆 a ver el video desde 0 para comparar, no entend铆a porque me marcaba ese error hasta que lo intente correr as铆 y funciono por lo que as铆 lo deje (ya era bastante tarde).

Hoy me llevo la sorpresa que cuando abro mi proyecto como por arte de magia ya no me arroja el error鈥 馃が que alguien me explique!!!

El constructor debe ser lo m谩s r谩pido como sea posible. Por lo tanto debe estar desconectado de cualquier cosa que implique entrada y salida. (Conexiones de red, archivos .. etc)