wtf d hecho sí se parece a los sermones que Jesus daba a los fariseos, porque eran demasiado dogmáticos y no entendían la razón de ser de sus reglas, además d q las seguían más para sentirse o verse superiores
Me imagino al alva de hace 7 años argumentando lo mismo cuando le preguntaron por qué la primera versión de majotori tenía todo el código en 1 sólo script xd
Alva Majo eres un tremendísimo tío inteligente, cuando explico el código limpio a mis alumnos precisamente les explico que no todo es negro ni blanco, porque siempre está el típico que se toma todo al pie de la letra y por querer hacerlo bien y perfecto la caga, pero bueno, también te digo que se puede hacer código eficiente con código limpio, ya que la premisa de que se entienda a veces hace el código más simple y por lo tanto más eficiente, pero como digo, no todo es negro o blanco... bajo mi punto de vista, la gente que critica otros códigos no son gente experimentada o curtida en el código, porque la experiencia te baja el ego, aunque te de más fluidez te das cuenta precisamente de esas cosas, vas bajando de la montaña del efecto Dunning-Kruger
La gente siempre quiere seguir las cosas a rajatabla para, efectivamente, protegerse de la posible devaluación de su ego y también para simplificar el proceso. Es más fácil tener reglas absolutas que aplanen un proceso, que aplicar el criterio propio cuando ni siquiera tienes uno y no sabes lo que es
@@davidfonseca1646 Hay distintas personalidades en este mundo y un narcisista no deja de ser un narcisista, pero el ego que muchos tienen surge del efecto Dunning-Kruger, y es justamente de lo que se queja Alva, personas con poca experiencia o conocimientos se atreven a darle consejos, malos, debido al sesgo cognitivo que estos programadores padecen, lo cual la experiencia hace darte cuenta de que en realidad queda mucho por aprender y no todo es negro ni blanco, y por eso puedo concluir que el la experiencia te baja el ego en la mayoría de los casos
@@Zindokar Pues en efecto, por tema de no saber controlar los procesos de mi computadora, evitaba usar una script para muchas clases y tratar de ser "limpio". Pero básicamente era un modo de no preocuparme y no aprender como funcionaba un flujo de datos, entonces solo me concentraba en hacer mis tareas a tiempo según lo mínimo viable pensando que era "Lo que debía estar correcto"... Cuando entendí los sistemas de interfaces y la reutilización de código, junto con las cargas que implican cada proceso... pues... ese "correcto" simplemente deja de tener sentido en la mayoría de los casos.
Concuerdo contigo. A mi siempre me ha parecido muy buena la frase "Sólo se que no se nada" ya que muestra que entre más sabes en un área de conocimiento, más te das cuenta de tu ignorancia y de lo que te falta aprender. Con todo respeto para Alva, a igual manera de lo que habla de los programadores dogmaticos, es que no estoy de acuerdo con su aparente aversión marcada e inamovible por elementos "escolásticos" de la programación que ha demostrado en diferentes ocasiones como si fuera la plaga. Yo soy un programador amateur de hobby y lo que he ido aprendiendo es que aprender aspectos como diferentes patrones de diseño, paradigmas de programación y prácticas no es para nada un error y que al final son nada más que herramientas para cuando programes. Tras ampliar tus conocimientos, ya podrás optar por hacer uso o no de ellas, dependiendo de lo que mejor se adapte a lo que quieres hacer, el contexto y por supuesto lo más importante y como Alva bien menciona, hacer estas decisiones bajo el criterio que te haz formado con argumentos y no sólo por seguir ciegamente lineamientos. Como bien dices no es cuestión de blanco o negro. Yo en lo personal he pasado por un proceso de aprendizaje por el tiempo que he estado aprendiendo a programar por mi cuenta y considero que el ampliar mis conocimientos me ha ayudado a mejorar como programador y me ha dado herramientas para facilitarme la vida, además de que poco a poco ha aportado a formarme un criterio a la hora de tomar decisiones. Por supuesto respeto la opinión de quién opine diferente y siempre es interesante ver como otras personas aproximan un problema/objetivo en la programación ya que siempre habran 1000 maneras de hacerlo que de una u otra manera.
Esto tiene aún mucho más sentido si tenemos en cuenta lo que Alva ya ha expresado anteriormente que la programación no es su fin, sino un medio para alcanzar su objectivo, por lo cual la comodidad de Alva toma prioridad. Hacer un juego es un proceso largo y tedioso y no todos tienen formación profesional en arte, dirección, diseño y programación así que lo mínimo sería que si la gente realmente quiere ayudar no fuesen de prepotentes.
Creo que como en ningún otro ámbito, en programación hay mucho efecto Dunning Kruger. Gente aprendiendo un par de conceptos nuevos con la necesidad de hacérselo saber al mundo, cuando probablemente no tienen demasiada experiencia para darse cuenta si son aplicables o no en una situación. En definitiva, mucho hablar por hablar. Para mi, lo mejor es hacer tu proyecto con los skills que tengas, no importa si no son los mejores. Pero eso si, siempre estar abierto a intentar mejorar y aplicar nuevos conocimientos.
LoL amigo si alguien acostumbra a dar opiniones a lo tonto créeme que no se le va quitar con conocimiento... La inmensa mayoría de los profesionistas son así... Creen que por sacarse una licenciatura o peor el doctorado ya los hace omnisapientes.
Estoy de acuerdo, pero por experiencia, los programadores viejos con mañas también se excusan en esto, me ha tocado ver códigos gigantes, no segmentados, el resultado de quitar bugs, siempre es generar más. Las buenas prácticas son esenciales, no de manera dogmáticas, pero no existe ningún proyecto, que no sea más facil de mantener y entender que siguiendo buenas prácticas, vs un monolito con código espagueti.
Criticar no te vuelve un "Xocas de algo", el problema es que muchas personas escuchan la critica y critican al criticador para desacreditar el mensaje en una enorme falacia de autoridad. Eso los estanca.
No solo en equipo. Relee tus propios código de hace 1 o 2 años y entenderás por qué es esencial ser prolijo. Especialmente cuando crees que ahorras trabajo siendo vago y la realidad es que siguiendo buenas prácticas, trabajas menos a largo plazo.
@@oscarpow1 Claro pero es que los proyectos de Alva no son para darle mantenimiento de forma indefinida. Él necesita que salgan lo más rápido posible y luego es solo arreglar unos cuantos bugs y al siguiente juego.
@@alvarobencosme5348 Pero eso no solo plica por mantención a largo plazo, las configuraciones iniciales pueden tomar más tiempo, pero está demostrado, que donde más ahorra tiempo el código limpio es en la depuración de errores. Es invertir un tiempo inicial para disminuir un tiempo a largo plazo. El problema está en que creemos siempre que se puede arreglar después. El diseño es fundamental, para evitar tener problemas a futuro y todos los programadores no le damos el valor necesario, picamos código antes de pensar muchas veces. (Además, un proyecto de juego, puede fácilmente durar 1 o 2 años. Depurar un error del inicio, se vuelve infernal)
@@alvarobencosme5348 ua-cam.com/video/L1ZD6o3FxZk/v-deo.html&ab_channel=AlvaMajoClips En ese mismo clip él dice que ni el mismo entiende su propio código durante el desarrollo. Las buenas prácticas no son algo bonito para que otros lean tu código, es una manera de facilitarte la vida.
El problema creo que va cuando esos "dogmas" se aplican por aplicar y siendo innecesarios, o existiendo una solución aun mas simple, lo hace, terminan haciendo el código mas complejo, sobretodo con los design patterns y clean code
Soy programador y no podría estar más de acuerdo. La gente que aplica una regla random que ha leído por ahí y en realidad NO LA ENTIENDE son una pesadilla a muchos niveles. 1/7/2024 Mi comentario se ha llenado de respuestas que dicen que comprender el porqué de las reglas para saber cómo y cuándo aplicarlas es cosa de juniors y no sé si es ironía o creencia genuina.
@@binplus8517 Si eres un verdadero autodidacta, te darás cuenta de lo pobre que es la universidad... Yo primero aprendí con múltiples fuentes en internet y luego pasé por dos universidades, solo para darme cuenta de lo valioso que es ser autodidacta. De hecho, la misma universidad te obliga a ser autodidacta, ellos no pretenden enseñarte todo, ya que saben que tu mismo aprenderías más...
Son como un programa que sigue el código al pie de la letra XD
6 місяців тому+9
Cuando toca modificar código de otro que hizo pura pta mrda de código, ahí es cuando te das cuenta de que las buenas prácticas y patrones de diseño tienen un propósito.
Este vídeo debería estar fijado en UA-cam en la pantalla inicial para siempre. Que pereza los que van siempre predicando cómo hay que programar y todo lo que no sea su visión está mal.
2:14 eso es cierto, ya cuando llevas algo de ratito jalando de programacion, te das cuenta que muchas veces muchos de los "dogmas" que hay en la programacion no son funcionales para lo que uno ocupa, por que al final del dia te pagan por sacar jale, no por que este bonito tu codigo o bien estructurado
Creo que el problema se puede resumir en que nunca lo dicen desde el respeto, si no desde la altanería y la superioridad, y sin conocer el contexto completo. Los comentarios constructivos siempre están bien, he visto otros contenidos de programación y generalmente son debates más sensatos.
Lo de "==" para comparar seguramente lo dice porque en JavaScript se usa el "===" para comparar en lugar del "==" que está en desuso en el lenguaje, es decir, seguramente el que te dijo eso no sabe otra cosa que no sea JavaScript y se cree CEO de Microsoft xD
o no se como en java con .equals(), por que no hace lo mismo que == (en java tambien existe ==, pero no se debe usar si quieres comparar los valores de no primitivos)
Los buenos programadores no son los que saben programar bien sino los que saben que todavía les queda mucho por aprender. Desde que me subí al carro de Clean Code,, SOLID y patrones he conseguido que todo me vaya mejor y más rápido, pero de ahí a dar lecciones a la gente, con todo lo que tengo que aprender aun... Y siempre está el que hace cosas (aunque sea mal) y el que opina pero no hace...
Tengo la teoría de que quienes te dan la recomendación son gente que ha aprendido hace poco, te recomiendan lo que les pareció util y es una forma de repasar/fijar conceptos. Molesto, pero bien intencionado. Yo la verdad es que no daría consejos a nadie que vea programando, a no ser que me paguen por ello.
realmente los que aconsejan eso es por que ya saben que el programa estara años, pasara por varias manos y posible por terceros, un codigo limpio permite llevar orden, he hecho muchos proyectos que solo actualizaba un par de lineas o agregar algun script y me topo por que no hay notas, no esta ordenado y termino por tener que leer todo el codigo para modificar dos o 3 lineas para agregar una impresora o simplemente un script, lo que se ahorra con codigo limpio. he trabajado en equipo y si se nota la diferencia en lugar de atrasar a otros con preguntar, por eso es mejor. Ya si e algo personal o algo que no tiene mucho peso no importa como lo hagas
Pues esa teoría queda bastante descartada cuando lees comentarios que literalmente insultan. La mayoría de comentaios que he visto en su canal principal si son putadas literales y directas tipo "Cómo es que haces eso así si debería ser asa" y muchos van con su respectiva burla tipo "Se nota que no sabes programar" "Por eso le tienes miedo a las matemáticas", etc.
El límite de 10 líneas o 20, es solamente porque normalmente cuando más larga una función o método es más probable que de ese método o función haga más de una cosa, luego lo principal del código es que funcione y bien, de manera óptima sobretodo en juegos. El código limpio es como una escalera qué cuando llegas arriba debes desechar.
Es cuando aplicas la frase: "cae gente con la realidad alterada" La diferencia está en quien hace y quien no. Un motor nuevo, un juego distinto. Requiere estudio y cambio de paradigma constantemente. Claramente lo mejor es apegarse a lo básico. Ánimo. Hombre paloma
cada uno programa como le da la gana pero la diferencia entre hacelo bien o, simplemente hacerlo, es saber que patron de diseño es más óptimo para cada cosa.
Yo me he estudiado los de GoF y me parecen un puñado de soluciones de sentido común tan básicas que a cualquiera se le podrían haber ocurrido, y que tampoco pasa gran cosa por que no sean exactos. Luego vas por ahí y les atribuyen propiedades mágicas casi. Incluso los principios SOLID alguno lo veo más un meme que una realidad. Luego cosas básicas como que si haces un copia-pega uses una función o método común la gente no lo hace. He visto gente con currículo de más de diez años copiar chorizos de 60 líneas en dos sitios diferentes y dejar un método larguísimo que no entienden ni ellos y quedarse tan anchos. ¿Quieres entenderlo? Depúralo. Claro que el que le dijo que hiciese una copia y fuese cambiando cosas para "no tocar algo que funciona" era un figura también, con más currículo aún y el ego por las nubes. Luego la culpa de que esté hecho un asco es mía por el código original, y cuando lo arreglo me arriesgo a fastidiar lo que los otros han hecho encima. Así va esto, se habla con conceptos muy rimbombantes y luego se hacen cagadas y se echa la culpa a los novatos.
Para tu proyecto personal en el que trabajas tu, tu mismo y tu persona, junto a la soledad, puedes hacer lo que te de la gana como si haces el código en brainfuck en una sola linea, para los proyectos grandes de los cuales dependen directa o indirectamente puestos de trabajo es insostenible el planteamiento que tu propones mas allá de la famosa eficiencia, aplicable por ejemplo al kernel de linux así como a open source de gran calado como docker etc.
la verdad que el mundo de la programación es así, a muchos les pegaban en el colegio y en algo que destacan o ni siquiera eso pero se lo creen, tienen que devolvérselo a alguien y no van a tener piedad XD son todo frustraciones internas, estas cosas en el trabajo las he visto en gente joven, en gente de más de 35 no lo verás
Un código limpio y legible se te hace más fácil de mantener. Para proyectos grandes y serios te va a servir. No es que sean normas inútiles. Pero de todas maneras, si es algo que vas a llevar tú y sólo tú, puedes hacer lo que quieras
pero hacer lo que quieras con tu codigo tampoco es lo mejor, aveces pasa algo de tiempo regreso a ver el codigo que hice de algun proyecto y me toma tiempo entenderlo por lo mal que lo hize cuando comenze
@@hernandoooooooooooooo Igual depende del contexto, como dijo alva aveces pasa que uno hace sobre abstacción cuando no es necesario. ademas que tambien depende de que lenguaje estes utilizando, yo creo que la regla de oro a seguir es que tus nombres de variables y funciones sean lo mas auto explicativas posible y evitar a toda costa numeros magicos, par eso crea una constante y colocale el nombre a ese -1 el resto para mi es muchisimo mas opcional.
Sigue siendo mejor seguir buenas prácticas y gestionar bien tu código. Te ahorras trabajo. Parece más trabajo y engorroso, pero al largo plazo te das cuenta de que dedicar ese tiempo inicial en establecer reglas que especifiquen buenas prácticas es esencial.
@@kelvinpina3392 Dime en que parte de un desarrollo de más de 1 año en un videojuego, donde el mismo autor dice en un video que pelea con el código por entenderlo, no es válido usar ideología dry, separación de responsabilidades y uso de patrones de diseño ?.
Usar enums te sirve para evitar cagadas de tipados o erratas en cadenas. Además, puedes programar comportamientos específicos para esos elementos En general, la mayoría de consejos son para mejorar la claridad y mantenibilidad del código. Cuando tienes un proyecto propio que nadie más va a tocar, tira que tal, pero si trabajas en equipos, y no digamos ya en empresas donde puede que el autor hace años que no esté, el poder entender ese código antiguo literalmente le vale dinero a la empresa. Luego conoces a gente que ha trabajado en empresas de porting, y las historias de terror que cuentan son para darles de comer aparte.
O si quieres que una empresa te haga el port a la switch, por ejemplo (como shipped) Cuanto más claro y (bien comentado) esté el código, mejor. Por un lado, entiendo el pensamiento de Alva de "para que aprender a hacer esto de una forma más avanzada si así tal cual funciona" Pero por otro lado, creo que aprender cosas nuevas mola mucho, y si puedes hacer que tu juego tenga aunque sea un 1% más de rendimiento con un código un poco más complejo de escribir, en mi opinión merece la pena. Tampoco creo que Alva sea super cerrado ni nada, imagino que simplemente le molesta que la peña le haga backsitting lmao. Seguramente por su cuenta aprenda cosas de código para mejorar y tal. Y lo que más gracia me hace de todo: Que la mayoría de los que le dicen a Alva que es "un pringado" por hacer X cosa en el código, no tendrán ni un juego publicado, mientras Alva literalmente vive de ello
@@aeleequis Bueno, él también es bastante categórico en sus afirmaciones Luego del "Mi lenguaje de scripting para las escenas está perfecto como está" a "He tenido que cambiar el lenguaje de scripting" han ido un par de semanas, pero eso sí, sin usar JSON (Que yo tampoco le veía la gracia a priori, hasta que me tocó usarlo en el curro y se la encontré con la práctica)
@@drillerdev4624 ea, JSON no lo hicieron porque se aburrían, lo hicieron para solucionar un problema de gestión de muchos datos a la vez. Por eso se usa en tantos sitios XD, además de que pueden estar categorizados, con jerarquías y movidas. Es muy completo
Toda la razón, el dogma siempre molesta a la hora de realizar proyectos desde cero. Si vas a desarrollar un prototipo para presentarlo a alguna publisher o buscar un producto viable, es tonto organizar el código como si fuera para producción desde el inicio. El problema de algunos desarrolladores es que confunden los procesos de ing de software tradicionales con las metodologías de desarrollo nuevas que se aplican en videojuegos, ya que a diferencia de una pagina web u otro tipo de aplicación, los videojuegos requieren grandes cantidades de iteración, lo cual en el proceso se realizan factorizaciones y definiciones de arquitectura. Entonces el nivel de optimización, orden y buenas prácticas de tu código no solo depende de que tan buen programador seas sino de que lo apliques sobre un producto que esté definido, algo que en el proceso de desarrollo de videojuegos siempre es mutable ya que no es una pagina web o una app standalone para uso de oficio que tiene fines discretos. Los videojuegos forman una experiencia. ALGO QUE LOS SUBNORMALES QUE SOLO REALIZARON PROYECTOS UNIVERSITARIOS DE VIDEOJUEGOS Y NO FUERON MAS ALLÁ NO ENTENDERÁN. Imagina ser un desarrollador que sabe muchas mates, física y quiere prototipar una mecánica de forma rápida para ver si es viable, pero tienes un idiota como compañero forzando al equipo a programar "bien", el proyecto nunca saldrá a la luz. Primero se programa como te salga y se logra la mecánica o experiencia, ya luego te pones a factorizar. Por algo existe "pre producción" y "producción".
Yo soy programador junior en una empresa de producto donde somos muchos los que trabajamos sobre lo mismo así que peco mucho de ese dogma de código ultra limpio la verdad (aunque algo justificado en mi caso yo creo). Muchas otras veces me he rayado bastante pensando si a veces era mejor tirar por algo más limpio o algo más bien óptimo. Un día viendo la oportunidad pregunté esta duda al jefe de arquitectura de la empresa y me contestó que lo hay que hacer es tratar de hacer un código "modular", aunque siempre dependiendo de muchos factores que con la experiencia entenderé
Programo hace más de 10 años y te doy la razón y más cuando es código para uno o un equipo pequeño, es preferible código funcional y bien pensado que lindo e innecesario. Tengo resuelto cosas en 1000 líneas de código que a otros les lleva 300 líneas pero agregando 10 librerías distintas (las cuales no hicieron ellos y no saben cómo están hechas)
Francamente estoy sorprendido de lo de acuerdo que estoy con Alva, en esto. Hace 30 años programaba mis juegos en basic, con gotos, en vez de funciones, porque no habia mucho más. Hoy dia tengo funciones, clases, interfaces, namespaces y otros conceptos. Una función de por sí ya es un concepto que entorpece el funcionamiento del programa: ha de guardar la pila de variables para recuperarlas, el puntero a volver crear una nueva pila para las variables de la función, etc. Mucha de las tecnologías que se aplican hoy día se aplican porque los ordenadores son tan rápidos comparados con uno de hace 30 años que no es problema. Ya no hablo ni de memoria, (que podría). Hablo que una función para escribir un string hoy dia es 100 o 1000 veces más costosa que la misma variante (que obviamente hace menos cosas) de hace 30 años. La principal idea sobre código límpio no es ni cantidad de lineas, ni longitud, ni técnicas varias. Es sencillamanete legibilidad, porque la legibilidad equivale directamente a mantenible. Hay otros temas como evitar referencias cruzadas y etc. que ayudan a la mantenibilidad pero en fin. Si el código se entiende guay. Sobre lo último, un switch de enumerados... ahí no estoy tan de acuerdo porque, la verdad, desconozco que editor usa Alva, pero en la mayoría, el autocompletar ayuda a acelerar la programación. Y no hay nada como escibir el mismo string 20 veces para relantizar esta o que en la vez número 13 escibir "PEOD" en vez de "PEDO", jodiendote todo el código
Me hiciste acordar a un artículo hecho por el propio creador de godor eonde decía algo así como "deja a los programadores que hagan su trabajo como quieran y ya" debido a que el engine ya viene con todas mss optimizaciones posibles que puedaa llegar a necesitar
existen 2 tipos de programadores , el "estás haciendo todo mal, yo soy mejor que tú" y el "no me digas que tengo que hacer porque yo soy mejor que tú", es increíble la batalla de egos que existe en este rubro, lo peor es que se ve eso desde que estudias con gente que no lleva ni 1 semestre y ya se creen dioses como al pasar al mundo laboral donde puedes llegar como practicante y ya te salen con comentarios tipo "como no lo sabes si es basico" como tambien con los autodidactas que se creen lo mejor por que saben algo sin haber estudiado una carrera si que automaticamente son mejores que alguien que "estudio" xD.
La gente que de verdad sabe programación se cree mas estúpida que lista. Programar es toparse una y otra vez con una pared porque somos humanos, no somos perfectos.
Mucha verdad en lo que dices, esos tipos son insoportables y veo difícil que puedan trabajar algún día en equipo. Entiendo que ayuda a la optimización, yo estoy acostumbrada por mi experiencia en click team fusion, usaba la versión gratuita para optimizar, por lo limitada que está xD Lo que amo de la programación es como todos se ayudan entre todos, a diferencia de otros gremios en los que incluso esconden la info y no quieren ver a los demás avanzar, es muy lindo, pero en veces veo muchas personas tóxicas qué decepcionan...
Mi consejo de programador, por si te vale, haz código para que otros los entiendan, eso es una medida de calidad del software. Dentro de unos meses cuando mires el código, tu serás esa persona para la que programaste así.
Ése no sabe programar, si el mismo Ginxu le hubiera dicho que lo que dice es correcto, dudaría de las capacidades de Ginxu, pero el que está dedicado a esto entiende que esas cuestiones son importantes y por qué, en mi trabajo me han tocado ingenieros (yo soy autodidacta) queriendo violar el encapsulado de los miembros de clase y yo he tenido que ir a explicarles por qué no deben hacerlo y qué pueden hacer en esos casos, gente así siempre sale y es normal porque están aprendiendo, pero este pana quiere dar "lecciones" a programadores cuando él mismo a duras penas sabe tirar unos cuantos "if" y ya está
@@lazydude5681 A Alva no le gusta la programación y quiere autoconvencerse de que es práctico programando diciendo estas tonterías , no entiende que las chapuzas programando se pagan muy caras y la historia de informática lo ha demostrado.
@@lazydude5681Bueno lo que pasa es que Alva quiere hacer videojuegos solo, por eso tiene su código como su cuarto lleno de plumas y cositas de aves XD. Ademas hacer un videojuego no todo es programar, el juego de la pizza con piña por ejemplo tiene mas de diseño de escenarios y animaciones que de mecánicas, y jugabilidad. Si yo tuviera que programar un videojuego prefiero que sea un videojuego de cartas o sandbox tipo minecraft, que sea puro programación y pocos assets.
@@jesusje1199 Sin ir muy lejos, no organizas bien tu código en sprint 1 y en sprint 2 tienes que hacer algún que otro cambio porque "oopsy", luego en sprint 3 empiezas a pensar "mejor ya lo tiro como sea porque necesito mostrar avances" y en sprint 6 estarás lamentándote y un nuevo integrante que entró estará maldiciéndote hasta el fin de los tiempos porque le cuesta un mundo adaptarse y empezar su propio trabajo, lo cual puede darle problemas o que lo perciban como "insuficientemente bueno" a él... O sea, son muchas las cosas que pasan por acumular deuda técnica, ya única forma de que no te afecte es que no hagas absolutamente nada relevante o trascendente, algo así como el equivalente a un ejercicio de estudiante
El como programar depende de tantos factores que no tiene sentido discutir, depende de: Cuanta gente vaya a leer el código El lenguaje de programación El objetivo de tu código Y por ultimo gustos personales Pero nunca hay que ser dogmático, imagínate que pasas de estar usando C++ a usar Python, es obvio que va a cambiar el como escribes tu código, por que los lenguajes son tan diferentes que no vas a poder hacerlo de la misma manera. Pero siempre tiene que venir el listillo que usa Arch (yo btw) y solo programa en C++ con VIM (No yo, principalmente por que no soy sado-masoquista) ha decirle al resto como hacer las cosas.
Con un enumerador, un patron de observer en combinacion con uno de strategy y un poco de infraestructura, podrias simplemente ir añadiendo las palabras al enumerador y, automaticamente, generar el metodo que maneje ese "caso" (refiriendome a los cases del match), de esta forma siempre tendrias controladas todas las palabras desde el mismo sitio, es decir invertirias esa dependencia, luego puedes asignar un numero unico a cada enum del enumerador (y usar el nombre del enum para detectar la palabra por ejemplo, seria una especie de clave-valor), y de esta forma reducirias muchisimo MUCHO el consumo de memoria jaja, basicamente es una optimizacion hardcore (en este caso, ya que como dijiste, son muchisimas palabras y probablemente añadas muchisimas mas). Esto te ayudaria a reducir significativamente el codigo, evitar en toda regla la duplicacion de codigo y demás, lo que significa menos espacio ocupado asi que tambien reduciria el espacio que ocupa el script jaja, esooo
Las “buenas prácticas” son subjetivas dependiendo del objetivo final de lo que hagas. Si quieres que sea mantenible con el tiempo se sacrifica muchas veces el tiempo y tu typeo de nuevo código. Así al contrario también
Es correcto, en el ámbito de la programación hay personas con mucho ego, sin embargo, también estoy de acuerdo que en la mayoría de los casos se puede refactorizar, mejorar y aumentar el rendimiento de nuestro código, el creer lo contrario también es un problema de ego. Al final un buen desarrollador sabe cuándo priorizar la legibilidad y cuándo enfocarse en la eficiencia. También estoy de acuerdo que los estándares/metodologías/buenas prácticas no son reglas absolutas y el desarrollador o el equipo puede decidir las reglas de cómo van a programar, pero por experiencia, las buenas prácticas de cada lenguaje de programación me han servido bastante en mi trabajo. Mi único conflicto con el video, es que asegura que el código limpio por lo regular es "menos óptimo", ¿cómo lo sabe? ¿Cuánto tiempo de programación se necesita para asegurar eso? Y a claro, yo no soy un fiel seguidor de los "clean codes", de hecho, por la naturaleza de mi trabajo (Entregar para antier) es normal que mi código sea un "cochinero" pero después de entregar lo que hago es refactorizar y optimizar. Por más que busque si para esta afirmación había pruebas, no las encontré (En caso de existir, favor de proporcionarme un link en caso contrario). Llevo alrededor de 10 años en la programación de forma profesional y, aun así, creo que lo que yo hago, alguien lo podría hacer mucho mejor y más eficiente. PD: Me da la impresión que Alva tiene sus propios dogmas.
para la programacion hay reglas y para hacer software de calidad tienes que seguir unos principios para que tu codigo sea mas legible, la programacion no solo es codear, implica muchas cosas como la documentacion, los diagramas de flujo comentar codigo ahorrar memoria, etc.
Si pero los videojuegos suelen tener mucho código spaghetti, más los índies , normalmente sacan el producto y un par de actualizaciónes y a concentrarse en otro,
@@diegosantana5520 no debería ser así, cuando tú trabajas en algún proyecto tienes que asegurarte de pasar todas las pruebas de calidad para actualizaciones o demás e incluso si quieres reutilizar códigos para volver a usarlo tiene que estar bien hecho
Los programadores que comentas suelen ser trabajadores de consultorías o programadores web, con tecnologías y metodologías totalmente distintas a lo que se hace en videojuegos. Es programación igualmente? Sí, pero enfocada a un producto tan sumamente distinto que no vale la pena ni compararlo.
jajaja, no son como tal dogmas, pero luego te das cuenta de que el software hecho por malos programadores va realmente mal, y luego tienes programadoras que entendieron como hacer las cosas (como jonh con Doom) y te das cuenta que una buena abstraccion tonta, te puede ahorrar muchos problemas a futuro
Muchas de esas "normas" son para optimizar, otras son para hacer el código más fácil de mantener, otras son patrones que ayudan a evitar errores comunes, y algunas cumplen varias funciones al mismo tiempo (como el uso de enumerados, que además evita las magic strings que son tan propensas a que las escribamos mal). Dicho esto yo mismo me paso los dogmas por las pelotas. Salvo que vayas a colaborar con un equipo grande y sea como un estandar para entenderse, o sea una imposición del analista, cada uno es libre de recurrir a las que crea que necesita, en lugar de liarse en cosas que para su caso no aporten ningun valor. Que demonios pero si hasta he clavado un clavo golpeandolo con la cabeza de un alicate. Hay que divertirse un poco. Por ultimo, Alva, añadir que creo que entiendes mejor la conveniencia de usar o no ciertas cosas, que muchas personas que dicen ser "expertos programadores".
El tema de los patrones y las arquitecturas, más que normas yo diría que son sugerencias. Y las sugerencias son como las lentejas, si las quieres las tomas y si no las dejas.
Lo del codigo limpio: en pyhton existe una funcionalidad que permite compactar un for en una sola línea, por lo que te permite hacer listas rápidamente. Tener un for que te genere una baraja de poker es más legible comparado a tener la lista pre hecha, pero si esa lista cambia y necesitas una forma de devolverla a la normalidad, ejecutar ese for cada vez consume muchísimo más que simplemente tener la lista prefijada. La limpieza ayuda en lo que es debugging y legibilidad (además de que es más bonito), pero lo realmente eficiente es usar siempre la misma variable, usar la cantidad mínima de funciones, tener nombres supercortos y muchas técnicas que aumentan la complejidad del código a la par que disminuye su legibilidad.
Creo que eso pasa en todos los campos, nos educan para aceptar y no para cuestionar, y si encima le sumas la falsa "autoridad" que se le ha dado a ciertas fuentes y personas, parece que cuestionar algo que diga un libro, un experto o un profesor es un locura.
Es cierto que fuentes con 1000 líneas no es lo más adecuado para un proyecto de equipo en el que las modificaciones sobre los fuentes es recurrente y deben evitar conflictos (aunque estos pueden resolverse añadiría complejidad al problema). Sin embargo un fuente tan grande si el equipo es de 1-2 personas... Ese contexto SI permite este tipo de fuentes kilométricos. Sin embargo Alva! Intentar mantener el principio OPEN/CLOSE de SOLID para evitar romper cosas que funcionan al añadir nueva funcionalidad. No trato de decir que esta debe ser la norma. Pero sabes que en un futuro si fuera necesario realizar modificaciones, estás serán un poquito más complejas de llevar a cabo. A la hora de tomar soluciones, siempre debemos evaluar el contexto y el objetivo. No suelo coger aviones para ir a comprar, ni la bici para ir de viaje.
Los que explicamos el código limpio y los patrones de diseño, buenas practicas etc lo hacemos como una guía no como una ley, sin embargo preparamos a los alumnos para el mercado laboral, donde otras personas van a usar y modificar tu código, por lo que seguir una normas de legibilidad , limpieza, modularidad, escalabilidad hacen todo sea mas fácil de entender y cambiar. No es cierto q capas de programación hacen q sea menos optimo , puede ser más complejo pero no ira más lento ni consumirá mas memoria, para apoyar la compresión en un codgio estructurado en clases, interfaces, eventos y funciones entra la parte de documentación, entiendo q cuando programa uno solo puede hacerlo más simple para entenderlo mejor, pero si tienes una función q hace muchas cosas el nombre q tenga no abarcará todo y eso será confuso. Los ifs anidados no me parecen tan mal, es un código legible q se puede refactorizar mas adelante. Si necesitas hacer muchas comparaciones puedes usar un diccionario con el key como el factor de busqueda y el value como la llamada a la funcion a ejecutar en el caso de q encuentre el key siempre q los keys sean únicos.
Optimizar algo que ya funciona y no necesita optimización puede no ser el mejor uso del tiempo. Sin embargo, tener un código limpio es importante si tu proyecto es grande y planeas hacer cambios en el futuro. Entiendo por qué algunas personas comienzan a hablar y a intentar corregir cosas cuando trabajan en grandes proyectos que utilizan un enfoque de programación profesional, aunque no siempre es necesario. 5:25 En GDScript, "is" verifica si una variable extiende una clase específica o si es de un tipo integrado específico. "==" comprueba si los valores de dos variables son iguales. Sin embargo, para objetos y diccionarios, compara las referencias en lugar del valor. PD: En C# también existe el método "Equals".
Igual, un detalle, cuando el código se compila, el compilador "reescribe" el codigo y le aplica un huevo de optimizaciones. Por lo que el código "limpio" (o con muchas funciones pequeñas) suele ser practicamente igual de rápido. El código que uno escribe en realidad no es el que se ejecuta, en general. Normalmente, a la hora de optimizar es más importante que el compilador sea bueno y esté bien configurado.
Si vas a hacer un único juego sin versiones adicionales ni expansiones pues con cualquier espagueti basta, sin embargo si se requiere hacer una base para caer expansiones y volúmenes si es necesario tener un código limpio, y mas aun por que cuando se modifique en el futuro lo mejor sera entender rápidamente. pero si existe mucha gente que critica sin que sepa como funciona el desarrollo.
Lo más gracioso de todo es que luego ves los códigos de estos dogmáticos y es IMPOSIBLE DE LEER. Te pasas 3 horas antes de entender como personalizar el código para tus propios fines.
Estoy deacuerdo cada programador hace su codigo como considera puede ser mejor o peor, pero al final del dia cada uno resuelve el problema de la forma que mejor considera.
Bueno, depende de como hagas la limpieza, por ejemplo, invertir los if para reducir anidamiento no veo que tenga un impacto significativo, funciones más pequeñas, depende del lenguaje pero tampoco debería ser problema... El tema no es solo que facilite trabajar en equipo, dejas de trabajar por lo que sea unos meses en tu proyecto, y seguramente te va a costar un par de días o más engancharte otra vez, al margen de que esté limpio o no, pero si está limpio tardas menos en entenderlo. Es cierto que hay cosas cuestionables, y no ser tan limpio te da mucha velocidad, sobretodo si se trata de prototipar, luego ya habrá tiempo de organizar y tal, pero a veces las cosas es mejor que funcionen y luego sobre eso se estudie como mejorar que intentar sacarlo todo perfecto a la primera. Hay código spagutti, y hay código largo, para mí no es lo mismo, y lo he visto sobretodo estos días que he trabajado con gente que ni conocía por periodos de tiempo cortos y tal, se nota mucho cuando alguien entiende los requerimientos y se toma la manera de plantear una solución práctica y que puede ampliarse con facilidad a otras personas que hacen su trabajo corriendo y tomando todos los atajos posibles para que parezca que funciona, pero luego lo que han hecho no se puede consolidar con otros sistemas, y esto tanto dentro como fuera de gamedev. Estos días tuve que pegar a varias personas para sacar un proyecto, todos hicieron scripts con funciones enormes que parecía que implementaban las funcionalidades que quería, pero en uno de los casos es que el código no te servía absolutarmente de nada porque tardabas menos en escribirlo de nuevo que en organizarlo para luego consolidar los sistemas que deberían integrarse a otros más adelante. Dicho eso, yo he visto Scripts de código base de Java y C# que tiene 4000 líneas o más, y no pasa nada... Más que código limpio, la cosa es hacer las cosas con sentido común y sabiendo que luego ése código lo puede tener que trabajar otra persona o lo vas a tener que revisitar dentro de un tiempo, si no lo entiendes tú o no lo puedes integrar en los sitios dle programa donde debería ir, ¿de qué te sirve? Y bueno, yo me rio mucho de JS y bootstrap, pero al margen de eso, el dogmatismo que tiene la gente con ciertas tecnologías me parece una sobrada, te hace menos flexible, un programador viene a solucionar problemas no a venderte que uses tal versión de control o tal lenguaje, obviamente las herramientas tienen sus limitaciones y pros y contras, pero también hay que saber que de esos pros y contras quizás puedes aprender cosas que en tu zona de confort no habrías aprendido.
Esto es como la guerra de la sangría con espacios o con tabuladores... Cada uno lo hace como quiere y ninguna opcion es incorrecta. Aunque todo el mundo sabe que la sangria es con tabuladores. XD
Yo tengo un amigo que literalmente es así Estamos queriendo entrar a la carrera de programación, donde antes tenemos que ver pseudocódigo, y él está todo el tiempo corrigiendo a cualquiera que no use tipo de dato Entero en lugar de Real, porque según él, eso sirve para ahorrar más espacio. Cuando es al pedo tomarselo tan enserio. Igual en el fondo es re buena persona, pero a veces se pone medio pesadilla con los demás.
El código limpio es algo fundamental PERO para grupos de trabajo con mucha gente y donde lo más probable es que sea un proyecto que se va a seguir modificando mucho a futuros y/o códigos donde va a haber un gran flujo de gente entrando y saliendo. Y nunca deben ser dogmas, son recomendaciones el hombre que escribió el libro de Clean Code lo dice en sus primeras paginas son RECOMENDACIONES, cada uno puedo programar como quiera y optimizar a su gusto personal estas normas (siempre excluyendo normas de empresa donde sigues lo que te mandan). Y en este caso específico donde programa solo, que más da que no sea código limpio (no optimizado es otra cosa) mientras el lo entienda que es el único que mete mano ahí, no tiene necesidad de preocuparse de esos estandares.
El de == no ha salido de javascript en su vida xD EDIT: el que se burló de que usara el ==, porque en JS a diferencia de la mayoría de los lenguajes hay que comparar usando === prácticamente siempre y usar == suele ser un error de principiantes. Que todo hay que explicarlo.
@@srcapibara6932 Hombre sí, como todo, pero la inmensa mayoría de los lenguajes decentes tienen un == funcional. Los únicos lenguajes más o menos conocidos que necesitan el mal chiste que es el === para comparar son php y javascript, y tienes que admitir que con el boom de la programación web, el stack MERN y los bootcamps de tres meses el panorama está que levantas una piedra y salen ocho "programadores" de JS con aires de superioridad a reírse de código que no entienden. (y para los pesaos, que abundan por aquí, sí, sé que el == tampoco es un operador fiable en ningún lenguaje de programación cuando vas a comparar estructuras de datos complejas y casi siempre hay que recurrir a un método interno de la clase o algo por el estilo, pero eso son casos puntuales y el gracioso que se burla del == estoy 99% seguro de que es porque piensa que en todos los lenguajes son tan retrasados como JS)
los enum son buenos sin importar que sepas o no cuantos elementos vas a tener. Sin ellos, luego tienes un typo en alguna parte y pierdes mucho tiempo en encontrar el problema. Además te ayudan con el autocompletado. Te doy la razón en que hay que saber en qué situaciones se debe aplicar el código limpio, pero si no conoces las reglas si quiera, seguramente implementarás antipatrones que no parecen gran cosa, pero impactarán en tu productividad a largo plazo. Btw, agregar capas para separar el código no afecta en prácticamente nada el rendimiento, pero si puede mejorar bastante la productividad y mantenibilidad.
Ea, aunque hagas funciones que llamen a funciones y esas funciones llamen a otras, al final el compilador hace magia negra y el resultado no es que tengas que estar haciendo llamadas una detrás de otra, sino que es como si fuese un código continuo. (Me.he explicado como el culo, pero tampoco es fácil y no soy un experto). Voy a poner un ejemplo real: A mí al principio me pasaba que lo hacía todo en una sola función o en un par de funciones muy gordas. Descubrí más adelante que si separas esas funciones en funciones más pequeñas, no sólo el rendimiento es exactamente el mismo, si no que el código es más legible y además es más fácil de reutilizar partes del mismo. Es parecido al "divide y vencerás", donde un problema que parece grande, lo puedes ir resolviendo si primero resuelves los problemas chiquitos que lo componen, y finalmente la combinación de todas esas soluciones es la del problema inicial
Yo también me dedico a la programación y estoy de acuerdo. De hecho es incluso peor cuando te meten el Sonar para "arreglar" algunas cosas que acaban siendo peor, como dividir una función en dos para acabar siendo menos entendible.
como programador que soy afirmó que es imposible crear todo en funciones de 10 líneas... Aveces necesitas funciones grandes y partirlo en funciones pas pequeños que no se reutiliza acaba siendo más ilegible todo lleno funciones que solo se use una vez. Puedes tener funciones de 500 líneas si quieres, siempre y cuando tenga sentido. El extraer a funciones trozos de código tiene sentido si se repite o se puede reutilizar, sinos es innecesario.
Es cuestión de gustos y necesidad. Algunas personas tienen que aprender a que las personas tienen sus habilidades y cada uno las aplica según sus necesidades, y que las habilidades son una cosa, la inteligencia es otra. Las actividades profesiones o autodidactas no dicen si alguien es inteligente, simplemente si es más o menos hábil en una profesión u actividad. Es por eso que existen científicos, ingenieros, matemáticos, biólogos, médicos, programadores, analistas y más que son corruptos y ayudan a fabricar armas para gobiernos genocidas o políticos corruptos que lo permiten.
En programación la verdad yo como alguien que ha hecho alguna que otra cosa muuuy básica, se entiende porque está dentro de las "Ingenierías". Y es de las que más literal se toman el adjetivo, ya que para programar cosas debes usar ingenio, ya que es muy fácil obtener problemas casi que únicos debido a que todo lo que harás depende de cómo lo quieras abordar. Al menos leyendo comentarios en vídeos de Guinxu cuando está hablando de cómo hacer algo o bugs que se le presentan, veo que sale gente a dar alternativas a la solución de Guinxu (en su mayoría en buena onda) y a esos comentarios les responden OTROS a dar alternativas y entonces ves como hay como 5 maneras distintas de abordar el mismo problema lo que es asombroso. Programación realmente es todo un arte y un uso excesivo de ingenio, no por nada gracias a la programación se han logrado cosas que no se han podido hacer sólo usando ingenierías más convencionales. Al menos como alguien ajeno a este ámbito entiendo porque son necesarios a veces ciertos protocolos, que sirven principalmente para que hagas y no pienses mucho y así no pierdas tiempo o recursos. Que es lo que sucede por ejemplo en el área médica, sobre todo en los primeros auxilios que existen protocolos para que haciendo una serie de pasos definidos no debas pensar sólo actuar lo que ayuda a disminuir el riesgo de errores por la presión del momento, pero ahí estamos hablando de situaciones muy dramáticas donde hay mucha sangre, gritos y demás... todo un drama, así que claramente no puedes dudar ni asustarte, sólo debes actuar de acuerdo al protocolo ya con el temple suficiente puedes salirte del protocolo un poco si sabes que eso puede ser más útil, pero mientras que aún no tengas una mente fría, toca seguir el protocolo. En programación no es como que estén en ese tipo de situaciones de vida y muerte, claramente pueden tener mucha presión por deadlines pero no es exactamente lo mismo, así que acá los protocolos no son tan necesarios y menos para algo que ya esta avanzado y tiene sus propios problemas nuevos. Regresando a lo anterior, un humano se suele morir por las mismas causas independientemente de quien seas si no hay oxigeno te mueres, si no hay glucosa te mueres, si la sangre que transporta oxigeno y nutrientes se acaba pues no oxigenas y no hay energia te mueres. Por eso el RCP está enfocado en salvaguardar respiración y corazón, porque definitivamente sin esas 2 te mueres. También en el protocolo debes fijar la cabeza porque si se mueve puedes dañar nervios, dichos nervios pueden atentar a la capacidad motriz pero también puedes dejar de comunicar el cerebro con el corazón y los pulmones lo que lleva a lo mismo, entonces el protocolo es el mismo, tan así que el protocolo es un ABC jaja. Pero en programación a veces por alguna razón el código simplemente se salta alguna sección o entra y lo lee de forma rara por alguna variable, literalmente es muuuy absurdo pensar que la programación se debe ajustar a dogmas o protocolos cuando es tan diversa, cada lenguaje tiene sus características y sintexis. Yo estuve jugando a programador usando primero Javascript y luego Python y definitivamente el segundo era muy cómodo porque básicamente no debía preocuparme por definir la variable al escribirla o que todo se fuera al carajo porque olvide poner alguna llave o los puntos y comas. A lo que voy es que, si eres programador... siéntete orgulloso por poder crear y estar resolviendo problemas que tu mismo te inventaste. Pero no intentes imponer tus ideas sobre las de otra persona que esta resolviendo sus propios problemas.
Como diseñador gráfico, se que hay dogmáticos en todas las áreas. En mi linea siempre vas a escuchar: un diseño no debe llevar comic sans, un logo no lleva gradientes, necesitas hacer un brief siempre. Los diseñadores dogmaticos fueron adoctrinados por maestros de la universidad que nunca han trabajado como diseñadores en el mundo real y a su vez estos fueron adoctrinados por maestros iguales. Supongo que es el mismo caso para los programadores. Pd. Estoy haciendo mi propio juego en phaser, es posible recibir orientación directa? 😳
Eso es porque no han hecho un proyecto medio grande. 5:14 esta persona no sabrá que hay lenguajes que permiten modificar el operador == para que haga lo que quieras. Y recordar que tanto Clean Code como el Solid, y estas cosas son principios, no leyes de la física
Si Alva siempre te caerán dogmáticos del código, pero si les preguntan cuantos proyectos han terminado la mayoria ninguno jaja por eso que te la pelen esos tipos tu sigue haciendo tu arte
Intenta rechazar una herramienta luego de haber aprendido a usarla, entonces tendrás la seguridad de que lo hiciste porque no la necesitabas y no por miedo a aprender a usarla y salirte de tu zona de confort.
Como programador con mucha edad y experiencia hay unas pocas normas a cumplir: el programa debe hacer lo que quieres que haga, el programa no debe hacer lo que no quieres que haga y debe ser entendible para tu yo de dentro de un mes. Cuando llevas millones de líneas de código en tus dedos, acordarte de qué significa la idea feliz que escribiste el año pasado no es nada fácil. Seguro que si miro el código de Alva, encontraría bastantes cosas que se podrían mejorar, y todavía estoy más seguro que aprendería muchas cosas nuevas que no conocía. Para los que estáis empezando a programar: programad mucho aunque sean programas horribles y aprended de vuestros errores. Adaptad las metodologías a vuestro gusto, no son leyes sagradas, son herramientas. Disfrutad.
Antes que el enum yo diría que un hashmap, entonces cada vez que buscas la clave devolves lo que quieras, pero si, son como moscas jajajaja imagino es lo más difícil de codear en vivo, además de que hoy todos se creen devs y menos de la mitad lo son realmente
Tiene que haber un equilibrio. Cuando tu proyecto crece te invito a revisar estos conceptos, como digo, un termino medio. Fui parte de proyectos tan sucios que para agregar un feature simple como un Deck view de cartas tenias que hacer refactoring de como estaba todo super acoplado.
Tienes razón, no podemos usar las mismas técnicas para todo. Es sentido común el no usar lo mismo para hacer una casita para nuestra mascota que cuando se construye un rascacielos. La deuda técnica se puede pagar si el MVP es suficiente para atraer clientes, lo importante es; saber por que lo dejamos así y no dejarlo así por desconocimiento.
Aprovecho el vídeo para hablar sobre los patrones de diseño y el "dogmatismo" que a veces se puede tener con ellos. Los patrones simplemente son una forma de resolver problemas comunes en programación para hacer el código más flexible o fácil de mantener, en especial si escala demasiado. Sin embargo, se podría hacer TODO sin patrones. O sea, el punto, es que no son necesarios estrictamente, en plan: si no haces el código con patrones, no habría otra forma de hacerlo. Pues sí que la hay xD Como dices, quizás de forma más manual, más "chapu"... pero se podrían programar las cosas igualmente sin patrones. Eso sí, que no haya patrones no va reñido con poder tener un código ordenado (diría que esto es lo principal, patrones o no). Y si se deciden usar para algún caso, no hace falta tomarlos al pie de la letra. Se pueden adaptar a nuestro gusto/necesidades. Porque un patrón resuelve un problema concreto. Si el problema que tenemos nosotros no es exactamente igual, podemos adaptar el patrón a nuestro problema.
Soy programador desde hace un quintarl de años, y por fin alguien dice en alto lo que pienso. La de veces que algun compañero/superior me repite la frase de un youtuber al que yo ya sigo como si fuera un dogma, pero si le empiezas a preguntar es que ni siquiera entienden el porque de la frase. Y encima te lo dicen en plan "¿Como no sabes esta frase que le escuche ayer a coding monkey?"
Yo leyendo los scripts en binario de pokemon GBA tuve que hacer cada comando como una clase y todas heredan de una abstracta y si son muuuuchas clases y aun creo que es buena idea pero si después de todo ese trabajo se puede hacer con un JSON luego ya me da algo xD
Supongo que se refiere a los que solo dicen lo que escucharon por allá y quieren aplicar todas las "normas" sin analizar antes, supongo que podría aplicar para un proyecto grande y colaborativo, pero supongamos que al principio se hizo con código spaguetti por falta de experiencia del equipo y pero funciona, nos vamos a poner a corregir todo el código si como está funciona "bien", sabemos que no es lo adecuado pero a veces aplica la regla de que si no esta roto no lo repares. En el caso de Alva mientras él mismo tenga conciencia de como tiene estructurado su propio código y su proyecto esta perfecto, el no tiene un equipo grande detrás donde tengan que cumplir un estándar. Yo diría que esta bien seguir las normas según el caso, lo ideal seria que se haga habito, pero si es para algo personal supongo que nos podemos tomar libertades a conciencia.
Siempre lo he dicho. " Quién cree que las sabe todas, no sabe absolutamente nada y nunca aprenderá verdaderamente nada " por eso mismo me he hecho buenas amistades en este mundo del desarrollo de software
No hay código mejor escrito que el completado, llevado a producción, hecho dinero u otra acción útil. Todo lo demas no importa si no aporta a esto último, lo que te ahorre mas recursos en llegar al resultado y sobre todo a tiempo es lo que importa.
Estoy de acuerdo con tu opinión y al final siempre y cuando se apliquen las buenas practicas y el producto sea escalable, da igual si escribes 20 lineas de codigo a reducirlo a 8 lineas y el rendimiento termina siendo el mismo.
Yo digo que depende del contexto priorizar el código limpio siguiendo buenas prácticas de escalabilidad que puede que como desventaja se pierda tiempo de rendimiento. Pero en otros casos quizás es mejor escribir un código mas imperativo que declarativo por temas de rendimiento.
a veces un script tiene que ser más largo de lo normal para que otros sean más pequeños y fáciles de comprender. Es notable que los que más critican son los que menos saben, el efecto dunning kruger
Esa gente que critica tu código, generalmente son dos cosas: o súper genios de la ingeniería o gente que a las justas sabe instalar un visual studio. Y generalmente son estos últimos.
Eso se prueba con la algoritmia, pero es muchas escuadrones para encontrar el punto óptimo debuma función. Si es verdad que con las herramientas y métodos, se consume mucho tiempo y las personas suelen justificar su desición. Los maestros rígidos no ayudan.
Entonces sentó a todos sus discípulos y dijo:
😂
anda con su papi, la paloma... :V :V
wtf d hecho sí se parece a los sermones que Jesus daba a los fariseos, porque eran demasiado dogmáticos y no entendían la razón de ser de sus reglas, además d q las seguían más para sentirse o verse superiores
Jisus programador
Que bonita paloma, se nota que a ella no es una programadora dogmática
Que haces por aquí compañero.
no es la paloma dogmatica es pigeonmatica jaja, matadme.
Es su papa, la quedo embarazada a Maria... :V :V
Es una tortola
Me imagino al alva de hace 7 años argumentando lo mismo cuando le preguntaron por qué la primera versión de majotori tenía todo el código en 1 sólo script xd
really?
Alva Majo eres un tremendísimo tío inteligente, cuando explico el código limpio a mis alumnos precisamente les explico que no todo es negro ni blanco, porque siempre está el típico que se toma todo al pie de la letra y por querer hacerlo bien y perfecto la caga, pero bueno, también te digo que se puede hacer código eficiente con código limpio, ya que la premisa de que se entienda a veces hace el código más simple y por lo tanto más eficiente, pero como digo, no todo es negro o blanco... bajo mi punto de vista, la gente que critica otros códigos no son gente experimentada o curtida en el código, porque la experiencia te baja el ego, aunque te de más fluidez te das cuenta precisamente de esas cosas, vas bajando de la montaña del efecto Dunning-Kruger
La gente siempre quiere seguir las cosas a rajatabla para, efectivamente, protegerse de la posible devaluación de su ego y también para simplificar el proceso. Es más fácil tener reglas absolutas que aplanen un proceso, que aplicar el criterio propio cuando ni siquiera tienes uno y no sabes lo que es
*La experiencia te baja el ego* vaya frase, gracias.
@@davidfonseca1646 Hay distintas personalidades en este mundo y un narcisista no deja de ser un narcisista, pero el ego que muchos tienen surge del efecto Dunning-Kruger, y es justamente de lo que se queja Alva, personas con poca experiencia o conocimientos se atreven a darle consejos, malos, debido al sesgo cognitivo que estos programadores padecen, lo cual la experiencia hace darte cuenta de que en realidad queda mucho por aprender y no todo es negro ni blanco, y por eso puedo concluir que el la experiencia te baja el ego en la mayoría de los casos
@@Zindokar Pues en efecto, por tema de no saber controlar los procesos de mi computadora, evitaba usar una script para muchas clases y tratar de ser "limpio". Pero básicamente era un modo de no preocuparme y no aprender como funcionaba un flujo de datos, entonces solo me concentraba en hacer mis tareas a tiempo según lo mínimo viable pensando que era "Lo que debía estar correcto"... Cuando entendí los sistemas de interfaces y la reutilización de código, junto con las cargas que implican cada proceso... pues... ese "correcto" simplemente deja de tener sentido en la mayoría de los casos.
Concuerdo contigo. A mi siempre me ha parecido muy buena la frase "Sólo se que no se nada" ya que muestra que entre más sabes en un área de conocimiento, más te das cuenta de tu ignorancia y de lo que te falta aprender.
Con todo respeto para Alva, a igual manera de lo que habla de los programadores dogmaticos, es que no estoy de acuerdo con su aparente aversión marcada e inamovible por elementos "escolásticos" de la programación que ha demostrado en diferentes ocasiones como si fuera la plaga. Yo soy un programador amateur de hobby y lo que he ido aprendiendo es que aprender aspectos como diferentes patrones de diseño, paradigmas de programación y prácticas no es para nada un error y que al final son nada más que herramientas para cuando programes. Tras ampliar tus conocimientos, ya podrás optar por hacer uso o no de ellas, dependiendo de lo que mejor se adapte a lo que quieres hacer, el contexto y por supuesto lo más importante y como Alva bien menciona, hacer estas decisiones bajo el criterio que te haz formado con argumentos y no sólo por seguir ciegamente lineamientos. Como bien dices no es cuestión de blanco o negro. Yo en lo personal he pasado por un proceso de aprendizaje por el tiempo que he estado aprendiendo a programar por mi cuenta y considero que el ampliar mis conocimientos me ha ayudado a mejorar como programador y me ha dado herramientas para facilitarme la vida, además de que poco a poco ha aportado a formarme un criterio a la hora de tomar decisiones. Por supuesto respeto la opinión de quién opine diferente y siempre es interesante ver como otras personas aproximan un problema/objetivo en la programación ya que siempre habran 1000 maneras de hacerlo que de una u otra manera.
Esto tiene aún mucho más sentido si tenemos en cuenta lo que Alva ya ha expresado anteriormente que la programación no es su fin, sino un medio para alcanzar su objectivo, por lo cual la comodidad de Alva toma prioridad. Hacer un juego es un proceso largo y tedioso y no todos tienen formación profesional en arte, dirección, diseño y programación así que lo mínimo sería que si la gente realmente quiere ayudar no fuesen de prepotentes.
No hay mejor dogma que el: "Si funciona, no lo toques"
facts
facturas
Cierto
A los ciberdelincuentes les encanta este comentario.
@@oscarpow1Los ciberdelincuentes también la aplican, ¿O porqué crees que los descubren?
Creo que como en ningún otro ámbito, en programación hay mucho efecto Dunning Kruger. Gente aprendiendo un par de conceptos nuevos con la necesidad de hacérselo saber al mundo, cuando probablemente no tienen demasiada experiencia para darse cuenta si son aplicables o no en una situación. En definitiva, mucho hablar por hablar. Para mi, lo mejor es hacer tu proyecto con los skills que tengas, no importa si no son los mejores. Pero eso si, siempre estar abierto a intentar mejorar y aplicar nuevos conocimientos.
La mejor respuesta que he leído, al punto y con nada desbatible. Deberían pinnearlo
Grande Indierama
LoL amigo si alguien acostumbra a dar opiniones a lo tonto créeme que no se le va quitar con conocimiento...
La inmensa mayoría de los profesionistas son así... Creen que por sacarse una licenciatura o peor el doctorado ya los hace omnisapientes.
Estoy de acuerdo, pero por experiencia, los programadores viejos con mañas también se excusan en esto, me ha tocado ver códigos gigantes, no segmentados, el resultado de quitar bugs, siempre es generar más. Las buenas prácticas son esenciales, no de manera dogmáticas, pero no existe ningún proyecto, que no sea más facil de mantener y entender que siguiendo buenas prácticas, vs un monolito con código espagueti.
@@PEDROGARCIA-qj3gr "La inmensa mayoria" Y hablando de dar opiniones a lo tonto
lo bueno de la programación es que, la misma tarea se puede hacer de 20 formas diferentes y todas son validas
Mientras funcione
@@LetrixARy si xD
Depende de la empresa…. En la mía hay una guía de estilo para el código y la tienes que seguir.
No todas son igual de mantenibles
Por suerte si jaja😂
Alva Majo se está convirtiendo en el Xocas de la programación de videojuegos
Sirve para farmear vistas
jajjajaj justo pense que sonaba un poco como el xokas
Eso es bueno o malo? Yo cuando escuchó al xokas hablar, quedo hastiada, dice cada subnormalidad, pero aquí no escuché nada raro.
Criticar no te vuelve un "Xocas de algo", el problema es que muchas personas escuchan la critica y critican al criticador para desacreditar el mensaje en una enorme falacia de autoridad. Eso los estanca.
Sí @@Avioncito_ok
Estos "dogmas" son utiles cuando trabajas en equipo. Entiendo a Alva Majo porque el trabaja practicamente solo xd
No solo en equipo. Relee tus propios código de hace 1 o 2 años y entenderás por qué es esencial ser prolijo. Especialmente cuando crees que ahorras trabajo siendo vago y la realidad es que siguiendo buenas prácticas, trabajas menos a largo plazo.
@@oscarpow1 Claro pero es que los proyectos de Alva no son para darle mantenimiento de forma indefinida. Él necesita que salgan lo más rápido posible y luego es solo arreglar unos cuantos bugs y al siguiente juego.
@@alvarobencosme5348 Pero eso no solo plica por mantención a largo plazo, las configuraciones iniciales pueden tomar más tiempo, pero está demostrado, que donde más ahorra tiempo el código limpio es en la depuración de errores. Es invertir un tiempo inicial para disminuir un tiempo a largo plazo. El problema está en que creemos siempre que se puede arreglar después. El diseño es fundamental, para evitar tener problemas a futuro y todos los programadores no le damos el valor necesario, picamos código antes de pensar muchas veces. (Además, un proyecto de juego, puede fácilmente durar 1 o 2 años. Depurar un error del inicio, se vuelve infernal)
@@alvarobencosme5348 ua-cam.com/video/L1ZD6o3FxZk/v-deo.html&ab_channel=AlvaMajoClips
En ese mismo clip él dice que ni el mismo entiende su propio código durante el desarrollo. Las buenas prácticas no son algo bonito para que otros lean tu código, es una manera de facilitarte la vida.
El problema creo que va cuando esos "dogmas" se aplican por aplicar y siendo innecesarios, o existiendo una solución aun mas simple, lo hace, terminan haciendo el código mas complejo, sobretodo con los design patterns y clean code
Yo suelo ser muy de "funciona, no te comas mucho la cabeza" pero el otro día leí código de Yandere Simulator y me dió algo
Soy programador y no podría estar más de acuerdo. La gente que aplica una regla random que ha leído por ahí y en realidad NO LA ENTIENDE son una pesadilla a muchos niveles.
1/7/2024 Mi comentario se ha llenado de respuestas que dicen que comprender el porqué de las reglas para saber cómo y cuándo aplicarlas es cosa de juniors y no sé si es ironía o creencia genuina.
La diferencia entre alguien autodidacta o que fue a la universidad
@@binplus8517 yo diría diferencia entre alguien capaz y alguien que no, independientemente de dónde haya salido
@@binplus8517 Si eres un verdadero autodidacta, te darás cuenta de lo pobre que es la universidad... Yo primero aprendí con múltiples fuentes en internet y luego pasé por dos universidades, solo para darme cuenta de lo valioso que es ser autodidacta. De hecho, la misma universidad te obliga a ser autodidacta, ellos no pretenden enseñarte todo, ya que saben que tu mismo aprenderías más...
Son como un programa que sigue el código al pie de la letra XD
Cuando toca modificar código de otro que hizo pura pta mrda de código, ahí es cuando te das cuenta de que las buenas prácticas y patrones de diseño tienen un propósito.
Este vídeo debería estar fijado en UA-cam en la pantalla inicial para siempre. Que pereza los que van siempre predicando cómo hay que programar y todo lo que no sea su visión está mal.
2:14 eso es cierto, ya cuando llevas algo de ratito jalando de programacion, te das cuenta que muchas veces muchos de los "dogmas" que hay en la programacion no son funcionales para lo que uno ocupa, por que al final del dia te pagan por sacar jale, no por que este bonito tu codigo o bien estructurado
Creo que el problema se puede resumir en que nunca lo dicen desde el respeto, si no desde la altanería y la superioridad, y sin conocer el contexto completo.
Los comentarios constructivos siempre están bien, he visto otros contenidos de programación y generalmente son debates más sensatos.
Lo de "==" para comparar seguramente lo dice porque en JavaScript se usa el "===" para comparar en lugar del "==" que está en desuso en el lenguaje, es decir, seguramente el que te dijo eso no sabe otra cosa que no sea JavaScript y se cree CEO de Microsoft xD
o no se como en java con .equals(), por que no hace lo mismo que == (en java tambien existe ==, pero no se debe usar si quieres comparar los valores de no primitivos)
Gracias por el contexto. En c++ se usa el == y no pillé el motivo.
@@ArbitraryCodeExecution uhh que recuerdos javaaa, me acuerdo que usaba el .equals, que buen lenguaje ese, me desbloqueaste un recuerdo
El wey que recien aprendio HTML y aprende usar el if en JavaScript:
Gente no usen == 👻
En que se diferencia uno del otro?
Todo sea dicho, si tengo que elegir entre espaguetis limpios o sucios, escojo los limpios, por lo que sea
También puedes simplemente limpiar los espaguetis sucios
@@faunaflora7¿sigues escogiendo espaguetis limpios no?
@@faunaflora7 le haz dado la razon...
Pff, prefiero el arroz.
@@MissiFull ve a bellas artes entonces xD
Los buenos programadores no son los que saben programar bien sino los que saben que todavía les queda mucho por aprender.
Desde que me subí al carro de Clean Code,, SOLID y patrones he conseguido que todo me vaya mejor y más rápido, pero de ahí a dar lecciones a la gente, con todo lo que tengo que aprender aun...
Y siempre está el que hace cosas (aunque sea mal) y el que opina pero no hace...
1:15 Concuerdo, si la optimización da más valor a tu trabajo, pues que sea legible es el precio a pagar.
Tengo la teoría de que quienes te dan la recomendación son gente que ha aprendido hace poco, te recomiendan lo que les pareció util y es una forma de repasar/fijar conceptos.
Molesto, pero bien intencionado.
Yo la verdad es que no daría consejos a nadie que vea programando, a no ser que me paguen por ello.
Cerra el ocico, por amor de Dios
realmente los que aconsejan eso es por que ya saben que el programa estara años, pasara por varias manos y posible por terceros, un codigo limpio permite llevar orden, he hecho muchos proyectos que solo actualizaba un par de lineas o agregar algun script y me topo por que no hay notas, no esta ordenado y termino por tener que leer todo el codigo para modificar dos o 3 lineas para agregar una impresora o simplemente un script, lo que se ahorra con codigo limpio. he trabajado en equipo y si se nota la diferencia en lugar de atrasar a otros con preguntar, por eso es mejor. Ya si e algo personal o algo que no tiene mucho peso no importa como lo hagas
Pues esa teoría queda bastante descartada cuando lees comentarios que literalmente insultan.
La mayoría de comentaios que he visto en su canal principal si son putadas literales y directas tipo "Cómo es que haces eso así si debería ser asa" y muchos van con su respectiva burla tipo "Se nota que no sabes programar" "Por eso le tienes miedo a las matemáticas", etc.
algunos si, otros lo hacen por pretensión
6:16 le salió del alma
El límite de 10 líneas o 20, es solamente porque normalmente cuando más larga una función o método es más probable que de ese método o función haga más de una cosa, luego lo principal del código es que funcione y bien, de manera óptima sobretodo en juegos. El código limpio es como una escalera qué cuando llegas arriba debes desechar.
Es cuando aplicas la frase: "cae gente con la realidad alterada"
La diferencia está en quien hace y quien no.
Un motor nuevo, un juego distinto. Requiere estudio y cambio de paradigma constantemente. Claramente lo mejor es apegarse a lo básico.
Ánimo. Hombre paloma
cada uno programa como le da la gana pero la diferencia entre hacelo bien o, simplemente hacerlo, es saber que patron de diseño es más óptimo para cada cosa.
Yo me he estudiado los de GoF y me parecen un puñado de soluciones de sentido común tan básicas que a cualquiera se le podrían haber ocurrido, y que tampoco pasa gran cosa por que no sean exactos. Luego vas por ahí y les atribuyen propiedades mágicas casi. Incluso los principios SOLID alguno lo veo más un meme que una realidad. Luego cosas básicas como que si haces un copia-pega uses una función o método común la gente no lo hace. He visto gente con currículo de más de diez años copiar chorizos de 60 líneas en dos sitios diferentes y dejar un método larguísimo que no entienden ni ellos y quedarse tan anchos. ¿Quieres entenderlo? Depúralo. Claro que el que le dijo que hiciese una copia y fuese cambiando cosas para "no tocar algo que funciona" era un figura también, con más currículo aún y el ego por las nubes. Luego la culpa de que esté hecho un asco es mía por el código original, y cuando lo arreglo me arriesgo a fastidiar lo que los otros han hecho encima. Así va esto, se habla con conceptos muy rimbombantes y luego se hacen cagadas y se echa la culpa a los novatos.
Para tu proyecto personal en el que trabajas tu, tu mismo y tu persona, junto a la soledad, puedes hacer lo que te de la gana como si haces el código en brainfuck en una sola linea, para los proyectos grandes de los cuales dependen directa o indirectamente puestos de trabajo es insostenible el planteamiento que tu propones mas allá de la famosa eficiencia, aplicable por ejemplo al kernel de linux así como a open source de gran calado como docker etc.
la verdad que el mundo de la programación es así, a muchos les pegaban en el colegio y en algo que destacan o ni siquiera eso pero se lo creen, tienen que devolvérselo a alguien y no van a tener piedad XD son todo frustraciones internas, estas cosas en el trabajo las he visto en gente joven, en gente de más de 35 no lo verás
Jesus bajó y dijo:
No uses el nombre de Jesús en vano 😒
@@faunaflora7 eso otro Jesús
xD
Tu peor enemigo, el de tu mismo oficio.
Alva Majo y Guinxu hacen linda pareja, su primer beso fue muy tierno 😍
Un código limpio y legible se te hace más fácil de mantener. Para proyectos grandes y serios te va a servir. No es que sean normas inútiles. Pero de todas maneras, si es algo que vas a llevar tú y sólo tú, puedes hacer lo que quieras
pero hacer lo que quieras con tu codigo tampoco es lo mejor, aveces pasa algo de tiempo regreso a ver el codigo que hice de algun proyecto y me toma tiempo entenderlo por lo mal que lo hize cuando comenze
@@hernandoooooooooooooo Igual depende del contexto, como dijo alva aveces pasa que uno hace sobre abstacción cuando no es necesario. ademas que tambien depende de que lenguaje estes utilizando, yo creo que la regla de oro a seguir es que tus nombres de variables y funciones sean lo mas auto explicativas posible y evitar a toda costa numeros magicos, par eso crea una constante y colocale el nombre a ese -1 el resto para mi es muchisimo mas opcional.
Sigue siendo mejor seguir buenas prácticas y gestionar bien tu código. Te ahorras trabajo. Parece más trabajo y engorroso, pero al largo plazo te das cuenta de que dedicar ese tiempo inicial en establecer reglas que especifiquen buenas prácticas es esencial.
igual no, seguir el dogma de codigo limpio a raja tabla, sin considerar requerimientos, no te va a servir
@@kelvinpina3392 Dime en que parte de un desarrollo de más de 1 año en un videojuego, donde el mismo autor dice en un video que pelea con el código por entenderlo, no es válido usar ideología dry, separación de responsabilidades y uso de patrones de diseño ?.
Usar enums te sirve para evitar cagadas de tipados o erratas en cadenas. Además, puedes programar comportamientos específicos para esos elementos
En general, la mayoría de consejos son para mejorar la claridad y mantenibilidad del código. Cuando tienes un proyecto propio que nadie más va a tocar, tira que tal, pero si trabajas en equipos, y no digamos ya en empresas donde puede que el autor hace años que no esté, el poder entender ese código antiguo literalmente le vale dinero a la empresa.
Luego conoces a gente que ha trabajado en empresas de porting, y las historias de terror que cuentan son para darles de comer aparte.
O si quieres que una empresa te haga el port a la switch, por ejemplo (como shipped)
Cuanto más claro y (bien comentado) esté el código, mejor.
Por un lado, entiendo el pensamiento de Alva de "para que aprender a hacer esto de una forma más avanzada si así tal cual funciona"
Pero por otro lado, creo que aprender cosas nuevas mola mucho, y si puedes hacer que tu juego tenga aunque sea un 1% más de rendimiento con un código un poco más complejo de escribir, en mi opinión merece la pena.
Tampoco creo que Alva sea super cerrado ni nada, imagino que simplemente le molesta que la peña le haga backsitting lmao. Seguramente por su cuenta aprenda cosas de código para mejorar y tal.
Y lo que más gracia me hace de todo:
Que la mayoría de los que le dicen a Alva que es "un pringado" por hacer X cosa en el código, no tendrán ni un juego publicado, mientras Alva literalmente vive de ello
@@aeleequis Bueno, él también es bastante categórico en sus afirmaciones
Luego del "Mi lenguaje de scripting para las escenas está perfecto como está" a "He tenido que cambiar el lenguaje de scripting" han ido un par de semanas, pero eso sí, sin usar JSON (Que yo tampoco le veía la gracia a priori, hasta que me tocó usarlo en el curro y se la encontré con la práctica)
@@drillerdev4624 ea, JSON no lo hicieron porque se aburrían, lo hicieron para solucionar un problema de gestión de muchos datos a la vez. Por eso se usa en tantos sitios XD, además de que pueden estar categorizados, con jerarquías y movidas. Es muy completo
nunca se metan con el trabajo ni la forma de hacer las cosas de un artesano. eso es una regla básica.
Toda la razón, el dogma siempre molesta a la hora de realizar proyectos desde cero. Si vas a desarrollar un prototipo para presentarlo a alguna publisher o buscar un producto viable, es tonto organizar el código como si fuera para producción desde el inicio. El problema de algunos desarrolladores es que confunden los procesos de ing de software tradicionales con las metodologías de desarrollo nuevas que se aplican en videojuegos, ya que a diferencia de una pagina web u otro tipo de aplicación, los videojuegos requieren grandes cantidades de iteración, lo cual en el proceso se realizan factorizaciones y definiciones de arquitectura. Entonces el nivel de optimización, orden y buenas prácticas de tu código no solo depende de que tan buen programador seas sino de que lo apliques sobre un producto que esté definido, algo que en el proceso de desarrollo de videojuegos siempre es mutable ya que no es una pagina web o una app standalone para uso de oficio que tiene fines discretos. Los videojuegos forman una experiencia. ALGO QUE LOS SUBNORMALES QUE SOLO REALIZARON PROYECTOS UNIVERSITARIOS DE VIDEOJUEGOS Y NO FUERON MAS ALLÁ NO ENTENDERÁN. Imagina ser un desarrollador que sabe muchas mates, física y quiere prototipar una mecánica de forma rápida para ver si es viable, pero tienes un idiota como compañero forzando al equipo a programar "bien", el proyecto nunca saldrá a la luz. Primero se programa como te salga y se logra la mecánica o experiencia, ya luego te pones a factorizar. Por algo existe "pre producción" y "producción".
Yo soy programador junior en una empresa de producto donde somos muchos los que trabajamos sobre lo mismo así que peco mucho de ese dogma de código ultra limpio la verdad (aunque algo justificado en mi caso yo creo). Muchas otras veces me he rayado bastante pensando si a veces era mejor tirar por algo más limpio o algo más bien óptimo. Un día viendo la oportunidad pregunté esta duda al jefe de arquitectura de la empresa y me contestó que lo hay que hacer es tratar de hacer un código "modular", aunque siempre dependiendo de muchos factores que con la experiencia entenderé
Programo hace más de 10 años y te doy la razón y más cuando es código para uno o un equipo pequeño, es preferible código funcional y bien pensado que lindo e innecesario. Tengo resuelto cosas en 1000 líneas de código que a otros les lleva 300 líneas pero agregando 10 librerías distintas (las cuales no hicieron ellos y no saben cómo están hechas)
Francamente estoy sorprendido de lo de acuerdo que estoy con Alva, en esto. Hace 30 años programaba mis juegos en basic, con gotos, en vez de funciones, porque no habia mucho más. Hoy dia tengo funciones, clases, interfaces, namespaces y otros conceptos. Una función de por sí ya es un concepto que entorpece el funcionamiento del programa: ha de guardar la pila de variables para recuperarlas, el puntero a volver crear una nueva pila para las variables de la función, etc. Mucha de las tecnologías que se aplican hoy día se aplican porque los ordenadores son tan rápidos comparados con uno de hace 30 años que no es problema. Ya no hablo ni de memoria, (que podría). Hablo que una función para escribir un string hoy dia es 100 o 1000 veces más costosa que la misma variante (que obviamente hace menos cosas) de hace 30 años.
La principal idea sobre código límpio no es ni cantidad de lineas, ni longitud, ni técnicas varias. Es sencillamanete legibilidad, porque la legibilidad equivale directamente a mantenible.
Hay otros temas como evitar referencias cruzadas y etc. que ayudan a la mantenibilidad pero en fin. Si el código se entiende guay.
Sobre lo último, un switch de enumerados... ahí no estoy tan de acuerdo porque, la verdad, desconozco que editor usa Alva, pero en la mayoría, el autocompletar ayuda a acelerar la programación. Y no hay nada como escibir el mismo string 20 veces para relantizar esta o que en la vez número 13 escibir "PEOD" en vez de "PEDO", jodiendote todo el código
Me hiciste acordar a un artículo hecho por el propio creador de godor eonde decía algo así como "deja a los programadores que hagan su trabajo como quieran y ya" debido a que el engine ya viene con todas mss optimizaciones posibles que puedaa llegar a necesitar
4:03 Pov sabes el contexto 👀
existen 2 tipos de programadores , el "estás haciendo todo mal, yo soy mejor que tú" y el "no me digas que tengo que hacer porque yo soy mejor que tú", es increíble la batalla de egos que existe en este rubro, lo peor es que se ve eso desde que estudias con gente que no lleva ni 1 semestre y ya se creen dioses como al pasar al mundo laboral donde puedes llegar como practicante y ya te salen con comentarios tipo "como no lo sabes si es basico" como tambien con los autodidactas que se creen lo mejor por que saben algo sin haber estudiado una carrera si que automaticamente son mejores que alguien que "estudio" xD.
La gente que de verdad sabe programación se cree mas estúpida que lista.
Programar es toparse una y otra vez con una pared porque somos humanos, no somos perfectos.
@@srcapibara6932Y a menudo sufriendo el síndrome del impostor siendo de lo más competente en la empresa
Mucha verdad en lo que dices, esos tipos son insoportables y veo difícil que puedan trabajar algún día en equipo. Entiendo que ayuda a la optimización, yo estoy acostumbrada por mi experiencia en click team fusion, usaba la versión gratuita para optimizar, por lo limitada que está xD Lo que amo de la programación es como todos se ayudan entre todos, a diferencia de otros gremios en los que incluso esconden la info y no quieren ver a los demás avanzar, es muy lindo, pero en veces veo muchas personas tóxicas qué decepcionan...
"No juzguéis si no queréis ser juzgados".
Mi consejo de programador, por si te vale, haz código para que otros los entiendan, eso es una medida de calidad del software. Dentro de unos meses cuando mires el código, tu serás esa persona para la que programaste así.
Ése no sabe programar, si el mismo Ginxu le hubiera dicho que lo que dice es correcto, dudaría de las capacidades de Ginxu, pero el que está dedicado a esto entiende que esas cuestiones son importantes y por qué, en mi trabajo me han tocado ingenieros (yo soy autodidacta) queriendo violar el encapsulado de los miembros de clase y yo he tenido que ir a explicarles por qué no deben hacerlo y qué pueden hacer en esos casos, gente así siempre sale y es normal porque están aprendiendo, pero este pana quiere dar "lecciones" a programadores cuando él mismo a duras penas sabe tirar unos cuantos "if" y ya está
@@lazydude5681 El programador de Java mas inteligente:
@@lazydude5681 A Alva no le gusta la programación y quiere autoconvencerse de que es práctico programando diciendo estas tonterías , no entiende que las chapuzas programando se pagan muy caras y la historia de informática lo ha demostrado.
@@lazydude5681Bueno lo que pasa es que Alva quiere hacer videojuegos solo, por eso tiene su código como su cuarto lleno de plumas y cositas de aves XD.
Ademas hacer un videojuego no todo es programar, el juego de la pizza con piña por ejemplo tiene mas de diseño de escenarios y animaciones que de mecánicas, y jugabilidad.
Si yo tuviera que programar un videojuego prefiero que sea un videojuego de cartas o sandbox tipo minecraft, que sea puro programación y pocos assets.
@@jesusje1199 Sin ir muy lejos, no organizas bien tu código en sprint 1 y en sprint 2 tienes que hacer algún que otro cambio porque "oopsy", luego en sprint 3 empiezas a pensar "mejor ya lo tiro como sea porque necesito mostrar avances" y en sprint 6 estarás lamentándote y un nuevo integrante que entró estará maldiciéndote hasta el fin de los tiempos porque le cuesta un mundo adaptarse y empezar su propio trabajo, lo cual puede darle problemas o que lo perciban como "insuficientemente bueno" a él... O sea, son muchas las cosas que pasan por acumular deuda técnica, ya única forma de que no te afecte es que no hagas absolutamente nada relevante o trascendente, algo así como el equivalente a un ejercicio de estudiante
El como programar depende de tantos factores que no tiene sentido discutir, depende de:
Cuanta gente vaya a leer el código
El lenguaje de programación
El objetivo de tu código
Y por ultimo gustos personales
Pero nunca hay que ser dogmático, imagínate que pasas de estar usando C++ a usar Python, es obvio que va a cambiar el como escribes tu código, por que los lenguajes son tan diferentes que no vas a poder hacerlo de la misma manera. Pero siempre tiene que venir el listillo que usa Arch (yo btw) y solo programa en C++ con VIM (No yo, principalmente por que no soy sado-masoquista) ha decirle al resto como hacer las cosas.
Casi siempre ese tipo de comentarios son de personas que están aprendiendo a programar hace relativamente poco. No hay más.
Con un enumerador, un patron de observer en combinacion con uno de strategy y un poco de infraestructura, podrias simplemente ir añadiendo las palabras al enumerador y, automaticamente, generar el metodo que maneje ese "caso" (refiriendome a los cases del match), de esta forma siempre tendrias controladas todas las palabras desde el mismo sitio, es decir invertirias esa dependencia, luego puedes asignar un numero unico a cada enum del enumerador (y usar el nombre del enum para detectar la palabra por ejemplo, seria una especie de clave-valor), y de esta forma reducirias muchisimo MUCHO el consumo de memoria jaja, basicamente es una optimizacion hardcore (en este caso, ya que como dijiste, son muchisimas palabras y probablemente añadas muchisimas mas). Esto te ayudaria a reducir significativamente el codigo, evitar en toda regla la duplicacion de codigo y demás, lo que significa menos espacio ocupado asi que tambien reduciria el espacio que ocupa el script jaja, esooo
También es buena práctica saber cuándo y hasta qué punto hay que seguir las "buenas prácticas". Y lo estoy aprendiendo por las malas 😂
Las “buenas prácticas” son subjetivas dependiendo del objetivo final de lo que hagas. Si quieres que sea mantenible con el tiempo se sacrifica muchas veces el tiempo y tu typeo de nuevo código. Así al contrario también
Es correcto, en el ámbito de la programación hay personas con mucho ego, sin embargo, también estoy de acuerdo que en la mayoría de los casos se puede refactorizar, mejorar y aumentar el rendimiento de nuestro código, el creer lo contrario también es un problema de ego. Al final un buen desarrollador sabe cuándo priorizar la legibilidad y cuándo enfocarse en la eficiencia.
También estoy de acuerdo que los estándares/metodologías/buenas prácticas no son reglas absolutas y el desarrollador o el equipo puede decidir las reglas de cómo van a programar, pero por experiencia, las buenas prácticas de cada lenguaje de programación me han servido bastante en mi trabajo.
Mi único conflicto con el video, es que asegura que el código limpio por lo regular es "menos óptimo", ¿cómo lo sabe? ¿Cuánto tiempo de programación se necesita para asegurar eso? Y a claro, yo no soy un fiel seguidor de los "clean codes", de hecho, por la naturaleza de mi trabajo (Entregar para antier) es normal que mi código sea un "cochinero" pero después de entregar lo que hago es refactorizar y optimizar. Por más que busque si para esta afirmación había pruebas, no las encontré (En caso de existir, favor de proporcionarme un link en caso contrario).
Llevo alrededor de 10 años en la programación de forma profesional y, aun así, creo que lo que yo hago, alguien lo podría hacer mucho mejor y más eficiente.
PD: Me da la impresión que Alva tiene sus propios dogmas.
para la programacion hay reglas y para hacer software de calidad tienes que seguir unos principios para que tu codigo sea mas legible, la programacion no solo es codear, implica muchas cosas como la documentacion, los diagramas de flujo comentar codigo ahorrar memoria, etc.
Si pero los videojuegos suelen tener mucho código spaghetti, más los índies , normalmente sacan el producto y un par de actualizaciónes y a concentrarse en otro,
@@diegosantana5520 no debería ser así, cuando tú trabajas en algún proyecto tienes que asegurarte de pasar todas las pruebas de calidad para actualizaciones o demás e incluso si quieres reutilizar códigos para volver a usarlo tiene que estar bien hecho
@@saidgonzalez2688 que parte de desarrolladores INDIES no entro xd
Los programadores que comentas suelen ser trabajadores de consultorías o programadores web, con tecnologías y metodologías totalmente distintas a lo que se hace en videojuegos. Es programación igualmente? Sí, pero enfocada a un producto tan sumamente distinto que no vale la pena ni compararlo.
jajaja, no son como tal dogmas, pero luego te das cuenta de que el software hecho por malos programadores va realmente mal, y luego tienes programadoras que entendieron como hacer las cosas (como jonh con Doom) y te das cuenta que una buena abstraccion tonta, te puede ahorrar muchos problemas a futuro
Muchas de esas "normas" son para optimizar, otras son para hacer el código más fácil de mantener, otras son patrones que ayudan a evitar errores comunes, y algunas cumplen varias funciones al mismo tiempo (como el uso de enumerados, que además evita las magic strings que son tan propensas a que las escribamos mal). Dicho esto yo mismo me paso los dogmas por las pelotas. Salvo que vayas a colaborar con un equipo grande y sea como un estandar para entenderse, o sea una imposición del analista, cada uno es libre de recurrir a las que crea que necesita, en lugar de liarse en cosas que para su caso no aporten ningun valor. Que demonios pero si hasta he clavado un clavo golpeandolo con la cabeza de un alicate.
Hay que divertirse un poco.
Por ultimo, Alva, añadir que creo que entiendes mejor la conveniencia de usar o no ciertas cosas, que muchas personas que dicen ser "expertos programadores".
El tema de los patrones y las arquitecturas, más que normas yo diría que son sugerencias. Y las sugerencias son como las lentejas, si las quieres las tomas y si no las dejas.
Lo del codigo limpio: en pyhton existe una funcionalidad que permite compactar un for en una sola línea, por lo que te permite hacer listas rápidamente. Tener un for que te genere una baraja de poker es más legible comparado a tener la lista pre hecha, pero si esa lista cambia y necesitas una forma de devolverla a la normalidad, ejecutar ese for cada vez consume muchísimo más que simplemente tener la lista prefijada. La limpieza ayuda en lo que es debugging y legibilidad (además de que es más bonito), pero lo realmente eficiente es usar siempre la misma variable, usar la cantidad mínima de funciones, tener nombres supercortos y muchas técnicas que aumentan la complejidad del código a la par que disminuye su legibilidad.
Creo que eso pasa en todos los campos, nos educan para aceptar y no para cuestionar, y si encima le sumas la falsa "autoridad" que se le ha dado a ciertas fuentes y personas, parece que cuestionar algo que diga un libro, un experto o un profesor es un locura.
Es cierto que fuentes con 1000 líneas no es lo más adecuado para un proyecto de equipo en el que las modificaciones sobre los fuentes es recurrente y deben evitar conflictos (aunque estos pueden resolverse añadiría complejidad al problema). Sin embargo un fuente tan grande si el equipo es de 1-2 personas... Ese contexto SI permite este tipo de fuentes kilométricos.
Sin embargo Alva! Intentar mantener el principio OPEN/CLOSE de SOLID para evitar romper cosas que funcionan al añadir nueva funcionalidad. No trato de decir que esta debe ser la norma. Pero sabes que en un futuro si fuera necesario realizar modificaciones, estás serán un poquito más complejas de llevar a cabo.
A la hora de tomar soluciones, siempre debemos evaluar el contexto y el objetivo. No suelo coger aviones para ir a comprar, ni la bici para ir de viaje.
Los que explicamos el código limpio y los patrones de diseño, buenas practicas etc lo hacemos como una guía no como una ley, sin embargo preparamos a los alumnos para el mercado laboral, donde otras personas van a usar y modificar tu código, por lo que seguir una normas de legibilidad , limpieza, modularidad, escalabilidad hacen todo sea mas fácil de entender y cambiar.
No es cierto q capas de programación hacen q sea menos optimo , puede ser más complejo pero no ira más lento ni consumirá mas memoria, para apoyar la compresión en un codgio estructurado en clases, interfaces, eventos y funciones entra la parte de documentación, entiendo q cuando programa uno solo puede hacerlo más simple para entenderlo mejor, pero si tienes una función q hace muchas cosas el nombre q tenga no abarcará todo y eso será confuso.
Los ifs anidados no me parecen tan mal, es un código legible q se puede refactorizar mas adelante.
Si necesitas hacer muchas comparaciones puedes usar un diccionario con el key como el factor de busqueda y el value como la llamada a la funcion a ejecutar en el caso de q encuentre el key siempre q los keys sean únicos.
Optimizar algo que ya funciona y no necesita optimización puede no ser el mejor uso del tiempo. Sin embargo, tener un código limpio es importante si tu proyecto es grande y planeas hacer cambios en el futuro. Entiendo por qué algunas personas comienzan a hablar y a intentar corregir cosas cuando trabajan en grandes proyectos que utilizan un enfoque de programación profesional, aunque no siempre es necesario.
5:25 En GDScript, "is" verifica si una variable extiende una clase específica o si es de un tipo integrado específico.
"==" comprueba si los valores de dos variables son iguales. Sin embargo, para objetos y diccionarios, compara las referencias en lugar del valor.
PD: En C# también existe el método "Equals".
Igual, un detalle, cuando el código se compila, el compilador "reescribe" el codigo y le aplica un huevo de optimizaciones. Por lo que el código "limpio" (o con muchas funciones pequeñas) suele ser practicamente igual de rápido. El código que uno escribe en realidad no es el que se ejecuta, en general. Normalmente, a la hora de optimizar es más importante que el compilador sea bueno y esté bien configurado.
Si vas a hacer un único juego sin versiones adicionales ni expansiones pues con cualquier espagueti basta, sin embargo si se requiere hacer una base para caer expansiones y volúmenes si es necesario tener un código limpio, y mas aun por que cuando se modifique en el futuro lo mejor sera entender rápidamente. pero si existe mucha gente que critica sin que sepa como funciona el desarrollo.
Lo más gracioso de todo es que luego ves los códigos de estos dogmáticos y es IMPOSIBLE DE LEER.
Te pasas 3 horas antes de entender como personalizar el código para tus propios fines.
Estoy deacuerdo cada programador hace su codigo como considera puede ser mejor o peor, pero al final del dia cada uno resuelve el problema de la forma que mejor considera.
Y no faltan los que digan: esto esta mal, hay que volver a hacer todo desde 0.
Bueno, depende de como hagas la limpieza, por ejemplo, invertir los if para reducir anidamiento no veo que tenga un impacto significativo, funciones más pequeñas, depende del lenguaje pero tampoco debería ser problema... El tema no es solo que facilite trabajar en equipo, dejas de trabajar por lo que sea unos meses en tu proyecto, y seguramente te va a costar un par de días o más engancharte otra vez, al margen de que esté limpio o no, pero si está limpio tardas menos en entenderlo.
Es cierto que hay cosas cuestionables, y no ser tan limpio te da mucha velocidad, sobretodo si se trata de prototipar, luego ya habrá tiempo de organizar y tal, pero a veces las cosas es mejor que funcionen y luego sobre eso se estudie como mejorar que intentar sacarlo todo perfecto a la primera.
Hay código spagutti, y hay código largo, para mí no es lo mismo, y lo he visto sobretodo estos días que he trabajado con gente que ni conocía por periodos de tiempo cortos y tal, se nota mucho cuando alguien entiende los requerimientos y se toma la manera de plantear una solución práctica y que puede ampliarse con facilidad a otras personas que hacen su trabajo corriendo y tomando todos los atajos posibles para que parezca que funciona, pero luego lo que han hecho no se puede consolidar con otros sistemas, y esto tanto dentro como fuera de gamedev.
Estos días tuve que pegar a varias personas para sacar un proyecto, todos hicieron scripts con funciones enormes que parecía que implementaban las funcionalidades que quería, pero en uno de los casos es que el código no te servía absolutarmente de nada porque tardabas menos en escribirlo de nuevo que en organizarlo para luego consolidar los sistemas que deberían integrarse a otros más adelante.
Dicho eso, yo he visto Scripts de código base de Java y C# que tiene 4000 líneas o más, y no pasa nada... Más que código limpio, la cosa es hacer las cosas con sentido común y sabiendo que luego ése código lo puede tener que trabajar otra persona o lo vas a tener que revisitar dentro de un tiempo, si no lo entiendes tú o no lo puedes integrar en los sitios dle programa donde debería ir, ¿de qué te sirve?
Y bueno, yo me rio mucho de JS y bootstrap, pero al margen de eso, el dogmatismo que tiene la gente con ciertas tecnologías me parece una sobrada, te hace menos flexible, un programador viene a solucionar problemas no a venderte que uses tal versión de control o tal lenguaje, obviamente las herramientas tienen sus limitaciones y pros y contras, pero también hay que saber que de esos pros y contras quizás puedes aprender cosas que en tu zona de confort no habrías aprendido.
Esto es como la guerra de la sangría con espacios o con tabuladores... Cada uno lo hace como quiere y ninguna opcion es incorrecta.
Aunque todo el mundo sabe que la sangria es con tabuladores. XD
Yo tengo un amigo que literalmente es así
Estamos queriendo entrar a la carrera de programación, donde antes tenemos que ver pseudocódigo, y él está todo el tiempo corrigiendo a cualquiera que no use tipo de dato Entero en lugar de Real, porque según él, eso sirve para ahorrar más espacio. Cuando es al pedo tomarselo tan enserio.
Igual en el fondo es re buena persona, pero a veces se pone medio pesadilla con los demás.
El código limpio es algo fundamental PERO para grupos de trabajo con mucha gente y donde lo más probable es que sea un proyecto que se va a seguir modificando mucho a futuros y/o códigos donde va a haber un gran flujo de gente entrando y saliendo.
Y nunca deben ser dogmas, son recomendaciones el hombre que escribió el libro de Clean Code lo dice en sus primeras paginas son RECOMENDACIONES, cada uno puedo programar como quiera y optimizar a su gusto personal estas normas (siempre excluyendo normas de empresa donde sigues lo que te mandan).
Y en este caso específico donde programa solo, que más da que no sea código limpio (no optimizado es otra cosa) mientras el lo entienda que es el único que mete mano ahí, no tiene necesidad de preocuparse de esos estandares.
El de == no ha salido de javascript en su vida xD
EDIT: el que se burló de que usara el ==, porque en JS a diferencia de la mayoría de los lenguajes hay que comparar usando === prácticamente siempre y usar == suele ser un error de principiantes. Que todo hay que explicarlo.
O habrá dado Java en el colegio y no concibe un lenguaje que no funcione así.
Wut según yo, a parte de Java script, se puede usar en c++
Se usa en varios.
@@srcapibara6932 Hombre sí, como todo, pero la inmensa mayoría de los lenguajes decentes tienen un == funcional. Los únicos lenguajes más o menos conocidos que necesitan el mal chiste que es el === para comparar son php y javascript, y tienes que admitir que con el boom de la programación web, el stack MERN y los bootcamps de tres meses el panorama está que levantas una piedra y salen ocho "programadores" de JS con aires de superioridad a reírse de código que no entienden.
(y para los pesaos, que abundan por aquí, sí, sé que el == tampoco es un operador fiable en ningún lenguaje de programación cuando vas a comparar estructuras de datos complejas y casi siempre hay que recurrir a un método interno de la clase o algo por el estilo, pero eso son casos puntuales y el gracioso que se burla del == estoy 99% seguro de que es porque piensa que en todos los lenguajes son tan retrasados como JS)
El primer comentario q hiciste es justamente lo q critica alva
los enum son buenos sin importar que sepas o no cuantos elementos vas a tener. Sin ellos, luego tienes un typo en alguna parte y pierdes mucho tiempo en encontrar el problema. Además te ayudan con el autocompletado. Te doy la razón en que hay que saber en qué situaciones se debe aplicar el código limpio, pero si no conoces las reglas si quiera, seguramente implementarás antipatrones que no parecen gran cosa, pero impactarán en tu productividad a largo plazo. Btw, agregar capas para separar el código no afecta en prácticamente nada el rendimiento, pero si puede mejorar bastante la productividad y mantenibilidad.
Ea, aunque hagas funciones que llamen a funciones y esas funciones llamen a otras, al final el compilador hace magia negra y el resultado no es que tengas que estar haciendo llamadas una detrás de otra, sino que es como si fuese un código continuo. (Me.he explicado como el culo, pero tampoco es fácil y no soy un experto).
Voy a poner un ejemplo real:
A mí al principio me pasaba que lo hacía todo en una sola función o en un par de funciones muy gordas.
Descubrí más adelante que si separas esas funciones en funciones más pequeñas, no sólo el rendimiento es exactamente el mismo, si no que el código es más legible y además es más fácil de reutilizar partes del mismo.
Es parecido al "divide y vencerás", donde un problema que parece grande, lo puedes ir resolviendo si primero resuelves los problemas chiquitos que lo componen, y finalmente la combinación de todas esas soluciones es la del problema inicial
Yo también me dedico a la programación y estoy de acuerdo. De hecho es incluso peor cuando te meten el Sonar para "arreglar" algunas cosas que acaban siendo peor, como dividir una función en dos para acabar siendo menos entendible.
el día que trabajes en equipo y uses herramientas como Sonar te explota la cabeza, dos veces
como programador que soy afirmó que es imposible crear todo en funciones de 10 líneas...
Aveces necesitas funciones grandes y partirlo en funciones pas pequeños que no se reutiliza acaba siendo más ilegible todo lleno funciones que solo se use una vez.
Puedes tener funciones de 500 líneas si quieres, siempre y cuando tenga sentido.
El extraer a funciones trozos de código tiene sentido si se repite o se puede reutilizar, sinos es innecesario.
Como dice Alva, el problema es que hay tanta mierda en los comentarios y condescendencia que lo que puede ser útil acaba siendo ignorado.
Es cuestión de gustos y necesidad. Algunas personas tienen que aprender a que las personas tienen sus habilidades y cada uno las aplica según sus necesidades, y que las habilidades son una cosa, la inteligencia es otra.
Las actividades profesiones o autodidactas no dicen si alguien es inteligente, simplemente si es más o menos hábil en una profesión u actividad. Es por eso que existen científicos, ingenieros, matemáticos, biólogos, médicos, programadores, analistas y más que son corruptos y ayudan a fabricar armas para gobiernos genocidas o políticos corruptos que lo permiten.
En programación la verdad yo como alguien que ha hecho alguna que otra cosa muuuy básica, se entiende porque está dentro de las "Ingenierías". Y es de las que más literal se toman el adjetivo, ya que para programar cosas debes usar ingenio, ya que es muy fácil obtener problemas casi que únicos debido a que todo lo que harás depende de cómo lo quieras abordar.
Al menos leyendo comentarios en vídeos de Guinxu cuando está hablando de cómo hacer algo o bugs que se le presentan, veo que sale gente a dar alternativas a la solución de Guinxu (en su mayoría en buena onda) y a esos comentarios les responden OTROS a dar alternativas y entonces ves como hay como 5 maneras distintas de abordar el mismo problema lo que es asombroso.
Programación realmente es todo un arte y un uso excesivo de ingenio, no por nada gracias a la programación se han logrado cosas que no se han podido hacer sólo usando ingenierías más convencionales.
Al menos como alguien ajeno a este ámbito entiendo porque son necesarios a veces ciertos protocolos, que sirven principalmente para que hagas y no pienses mucho y así no pierdas tiempo o recursos. Que es lo que sucede por ejemplo en el área médica, sobre todo en los primeros auxilios que existen protocolos para que haciendo una serie de pasos definidos no debas pensar sólo actuar lo que ayuda a disminuir el riesgo de errores por la presión del momento, pero ahí estamos hablando de situaciones muy dramáticas donde hay mucha sangre, gritos y demás... todo un drama, así que claramente no puedes dudar ni asustarte, sólo debes actuar de acuerdo al protocolo ya con el temple suficiente puedes salirte del protocolo un poco si sabes que eso puede ser más útil, pero mientras que aún no tengas una mente fría, toca seguir el protocolo.
En programación no es como que estén en ese tipo de situaciones de vida y muerte, claramente pueden tener mucha presión por deadlines pero no es exactamente lo mismo, así que acá los protocolos no son tan necesarios y menos para algo que ya esta avanzado y tiene sus propios problemas nuevos. Regresando a lo anterior, un humano se suele morir por las mismas causas independientemente de quien seas si no hay oxigeno te mueres, si no hay glucosa te mueres, si la sangre que transporta oxigeno y nutrientes se acaba pues no oxigenas y no hay energia te mueres. Por eso el RCP está enfocado en salvaguardar respiración y corazón, porque definitivamente sin esas 2 te mueres. También en el protocolo debes fijar la cabeza porque si se mueve puedes dañar nervios, dichos nervios pueden atentar a la capacidad motriz pero también puedes dejar de comunicar el cerebro con el corazón y los pulmones lo que lleva a lo mismo, entonces el protocolo es el mismo, tan así que el protocolo es un ABC jaja. Pero en programación a veces por alguna razón el código simplemente se salta alguna sección o entra y lo lee de forma rara por alguna variable, literalmente es muuuy absurdo pensar que la programación se debe ajustar a dogmas o protocolos cuando es tan diversa, cada lenguaje tiene sus características y sintexis.
Yo estuve jugando a programador usando primero Javascript y luego Python y definitivamente el segundo era muy cómodo porque básicamente no debía preocuparme por definir la variable al escribirla o que todo se fuera al carajo porque olvide poner alguna llave o los puntos y comas.
A lo que voy es que, si eres programador... siéntete orgulloso por poder crear y estar resolviendo problemas que tu mismo te inventaste. Pero no intentes imponer tus ideas sobre las de otra persona que esta resolviendo sus propios problemas.
Como diseñador gráfico, se que hay dogmáticos en todas las áreas. En mi linea siempre vas a escuchar: un diseño no debe llevar comic sans, un logo no lleva gradientes, necesitas hacer un brief siempre. Los diseñadores dogmaticos fueron adoctrinados por maestros de la universidad que nunca han trabajado como diseñadores en el mundo real y a su vez estos fueron adoctrinados por maestros iguales. Supongo que es el mismo caso para los programadores.
Pd. Estoy haciendo mi propio juego en phaser, es posible recibir orientación directa? 😳
Eso es porque no han hecho un proyecto medio grande. 5:14 esta persona no sabrá que hay lenguajes que permiten modificar el operador == para que haga lo que quieras. Y recordar que tanto Clean Code como el Solid, y estas cosas son principios, no leyes de la física
Concuerdo con todo lo que dijo, el tema está cuando hay que debuggear código, agradezco cuando hay una regla que seguir.
Si Alva siempre te caerán dogmáticos del código, pero si les preguntan cuantos proyectos han terminado la mayoria ninguno jaja por eso que te la pelen esos tipos tu sigue haciendo tu arte
Gracias, me salvaste del agujero donde estaba
Intenta rechazar una herramienta luego de haber aprendido a usarla, entonces tendrás la seguridad de que lo hiciste porque no la necesitabas y no por miedo a aprender a usarla y salirte de tu zona de confort.
Como programador con mucha edad y experiencia hay unas pocas normas a cumplir: el programa debe hacer lo que quieres que haga, el programa no debe hacer lo que no quieres que haga y debe ser entendible para tu yo de dentro de un mes. Cuando llevas millones de líneas de código en tus dedos, acordarte de qué significa la idea feliz que escribiste el año pasado no es nada fácil.
Seguro que si miro el código de Alva, encontraría bastantes cosas que se podrían mejorar, y todavía estoy más seguro que aprendería muchas cosas nuevas que no conocía.
Para los que estáis empezando a programar: programad mucho aunque sean programas horribles y aprended de vuestros errores. Adaptad las metodologías a vuestro gusto, no son leyes sagradas, son herramientas. Disfrutad.
Antes que el enum yo diría que un hashmap, entonces cada vez que buscas la clave devolves lo que quieras, pero si, son como moscas jajajaja imagino es lo más difícil de codear en vivo, además de que hoy todos se creen devs y menos de la mitad lo son realmente
Tiene que haber un equilibrio. Cuando tu proyecto crece te invito a revisar estos conceptos, como digo, un termino medio. Fui parte de proyectos tan sucios que para agregar un feature simple como un Deck view de cartas tenias que hacer refactoring de como estaba todo super acoplado.
Yandere dev: Meteré los ifs que yo quiera
Literal, si vieran el código de Alva seguro le harían un video con todo el espagueti que ha hecho jaja
Tienes razón, no podemos usar las mismas técnicas para todo. Es sentido común el no usar lo mismo para hacer una casita para nuestra mascota que cuando se construye un rascacielos. La deuda técnica se puede pagar si el MVP es suficiente para atraer clientes, lo importante es; saber por que lo dejamos así y no dejarlo así por desconocimiento.
Citando al rey Terry A. Davis: “this is voodoo, the question is if that's too much. This is the hardest question you could ever face in programming“
Yo soy programador, aunque se me podría clasificar como junior. Y más de uno he encontrado, especialmente entre mis mentores, que son así como dices.
Aprovecho el vídeo para hablar sobre los patrones de diseño y el "dogmatismo" que a veces se puede tener con ellos.
Los patrones simplemente son una forma de resolver problemas comunes en programación para hacer el código más flexible o fácil de mantener, en especial si escala demasiado.
Sin embargo, se podría hacer TODO sin patrones.
O sea, el punto, es que no son necesarios estrictamente, en plan: si no haces el código con patrones, no habría otra forma de hacerlo.
Pues sí que la hay xD Como dices, quizás de forma más manual, más "chapu"... pero se podrían programar las cosas igualmente sin patrones. Eso sí, que no haya patrones no va reñido con poder tener un código ordenado (diría que esto es lo principal, patrones o no).
Y si se deciden usar para algún caso, no hace falta tomarlos al pie de la letra. Se pueden adaptar a nuestro gusto/necesidades. Porque un patrón resuelve un problema concreto. Si el problema que tenemos nosotros no es exactamente igual, podemos adaptar el patrón a nuestro problema.
Soy programador desde hace un quintarl de años, y por fin alguien dice en alto lo que pienso. La de veces que algun compañero/superior me repite la frase de un youtuber al que yo ya sigo como si fuera un dogma, pero si le empiezas a preguntar es que ni siquiera entienden el porque de la frase. Y encima te lo dicen en plan "¿Como no sabes esta frase que le escuche ayer a coding monkey?"
Yo solo tengo un dogma: si funciona, dejalo así.
Yo leyendo los scripts en binario de pokemon GBA tuve que hacer cada comando como una clase y todas heredan de una abstracta y si son muuuuchas clases y aun creo que es buena idea pero si después de todo ese trabajo se puede hacer con un JSON luego ya me da algo xD
Supongo que se refiere a los que solo dicen lo que escucharon por allá y quieren aplicar todas las "normas" sin analizar antes, supongo que podría aplicar para un proyecto grande y colaborativo, pero supongamos que al principio se hizo con código spaguetti por falta de experiencia del equipo y pero funciona, nos vamos a poner a corregir todo el código si como está funciona "bien", sabemos que no es lo adecuado pero a veces aplica la regla de que si no esta roto no lo repares. En el caso de Alva mientras él mismo tenga conciencia de como tiene estructurado su propio código y su proyecto esta perfecto, el no tiene un equipo grande detrás donde tengan que cumplir un estándar. Yo diría que esta bien seguir las normas según el caso, lo ideal seria que se haga habito, pero si es para algo personal supongo que nos podemos tomar libertades a conciencia.
Siempre lo he dicho. " Quién cree que las sabe todas, no sabe absolutamente nada y nunca aprenderá verdaderamente nada " por eso mismo me he hecho buenas amistades en este mundo del desarrollo de software
No hay código mejor escrito que el completado, llevado a producción, hecho dinero u otra acción útil. Todo lo demas no importa si no aporta a esto último, lo que te ahorre mas recursos en llegar al resultado y sobre todo a tiempo es lo que importa.
Estoy de acuerdo con tu opinión y al final siempre y cuando se apliquen las buenas practicas y el producto sea escalable, da igual si escribes 20 lineas de codigo a reducirlo a 8 lineas y el rendimiento termina siendo el mismo.
Yo digo que depende del contexto priorizar el código limpio siguiendo buenas prácticas de escalabilidad que puede que como desventaja se pierda tiempo de rendimiento. Pero en otros casos quizás es mejor escribir un código mas imperativo que declarativo por temas de rendimiento.
La única dogma que vale la pena: "Si funciona, no lo toques".
a veces un script tiene que ser más largo de lo normal para que otros sean más pequeños y fáciles de comprender. Es notable que los que más critican son los que menos saben, el efecto dunning kruger
Esa gente que critica tu código, generalmente son dos cosas: o súper genios de la ingeniería o gente que a las justas sabe instalar un visual studio. Y generalmente son estos últimos.
Eso se prueba con la algoritmia, pero es muchas escuadrones para encontrar el punto óptimo debuma función. Si es verdad que con las herramientas y métodos, se consume mucho tiempo y las personas suelen justificar su desición. Los maestros rígidos no ayudan.