› Foros › PC › Software libre
int two = 2;
int three = 3;
int four = 4;
int five = 5;
int six = 6;
int seven = 7;
int eight = 8;
int nine = 9;
int zero = 0;
while (result2>0) {
switch (result2%10) {
case 0:
printf("%d",zero);
break;
case 1:
printf("%d",one);
break;
case 2:
printf("%d",two);
break;
case 3:
printf("%d",three);
break;
case 4:
printf("%d",four);
break;
case 5:
printf("%d",five);
break;
case 6:
printf("%d",six);
break;
case 7:
printf("%d",seven);
break;
case 8:
printf("%d",eight);
break;
case 9:
printf("%d",nine);
break;
default:
printf("%d",result2 % 10);
break;
}
result2 = result2 / 10;
}
Alecs7k escribió:Yo también me he encontrado cosas increíbles que hacen que me ponga de muy mala leche. Es trabajo que hay que hacer y te encuentras el código completamente enmierdado. Te toca hacer cualquier mejora y no tienes más remedio que seguir enmierdando porque reescribirlo todo te podría llevar días o semanas y si un cliente lo necesita ya, es que lo necesita ya, no va a entender que el código debe mejorarse.
AxelStone escribió:Es justo esa sensación. Lo que ves es para tirarlo, pero no hay lugar a hacerlo porque en su lugar te están pidiendo mantenimiento evolutivo y claro, el cliente no va a pagar una refactorización completa del proyecto. Lo peor es que el código es tan ilegible que a veces cuesta horrores hacer cosas que serían triviales en un código bien estructurado.
Me sigo preguntando qué puede tener un programador en la cabeza para programar así...
AxelStone escribió:El único propósito de este hilo no es otro compartir mi frustración de las últimas semanas. Me está tocando revisar y arreglar un código fuente que ha sido íntegramente generado por 2 becarios y la verdad, es justamente esto:
Waninkoko escribió:Entiendo perfectamente al autor del hilo. En esos casos a mi me ocurre exactamente esto:
Por comentar algunos casos que he visto, y que recuerdo ahora...
- Convertir una variable de tipo String a String (?¿?)
- Para comprobar si el valor de una variable "y" era positiva, al programador no se le ocurrió otra cosa que multiplicar "y" por -1 y luego comprobar si (y < 0). Al principio pensé hacia eso porque luego se utilizaría "y" pero... no, ni se utilizaba ni tenia sentido hacer eso en ese contexto
- Un código en C que tenía que almacenar 100 números enteros y el programador, en lugar de crear un array con 100 posiciones, creó 100 variables diferentes. MUERTE
Pla2 escribió:Los becarios son eso becarios... cobran menos por ello y se supone que se les tiene que formar, el problema viene cuando quieres un senior o arquitecto con sueldo de becario o junior... He trabajado con muchos becarios y los hay como en todo mejores o peores, pero ojo que al final no sólo los becarios hacen cosas de estas, te encuentras senior con años de experiencia igual... al final lo que se tiene que hacer es intentar enseñar a los que menos saben, que todos creo que hemos sido junior y hemos tenido y tenemos algunas dudas
Por poner un ejemplo.... mi primer curro, no de becario pero con sueldo de ingeniero en prácticas, habíamos 3 personas iguales en la cárnica, nos encargabamos de todas las incidencias de una aplicación en vb6 y de otra de oracle developer, no podíamos preguntar o se nos tiraban al cuello... teníamos un superior que lo único que hacía era copiar nuestro código en cliente (no existían los branchs ), allí un día en una incidencia encontramos un procedimiento de oracle con el siguiente comentario: "No tocar, no sabemos que hace pero es como dios, si lo tocas la aplicación falla" 3000 y pico lineas de código sin comentario y siendo el nucleo nadie quería tocarlo jajajaja
Ánimo AxelStone no te copio código similar porque no se puede por contrato
void get_tomorrow_date( struct timeval *date )
{
sleep( 86400 ); // 60 * 60 * 24
gettimeofday( date, 0 );
}
amchacon escribió:void get_tomorrow_date( struct timeval *date )
{
sleep( 86400 ); // 60 * 60 * 24
gettimeofday( date, 0 );
}
amchacon escribió:void get_tomorrow_date( struct timeval *date )
{
sleep( 86400 ); // 60 * 60 * 24
gettimeofday( date, 0 );
}
#actual infinite loop from production code:
while True is not False and True or False is False or False and True is not False and True:
socket.listen()
gordon81 escribió:Dicho esto, sólo deseo ánimo y que el proyecto salga adelante, pero deberías cagarte en el que encargó dicho proyecto comercial a esos becarios y no en estos últimos que a fin de cuentas y con lo miserables que se han vuelto algunas becas como ADE que en mi comunidad este año ni las han convocado... es mejor mirar desde el punto de vista de que casi todos fuimos becarios.
Saludos y suerte con el proyecto.
gordon81 escribió:Como bien dicen más arriba, los becarios son eso becarios y ojo que no todos cobran pasta, muchos la única beca que tienen es de transporte y para de contar.
Siento que te haya tocado reestructurar el código hasta el punto de tener que rehacer el trabajo, pero el/la iluminado/a que se le ocurrió la gran idea de encargar un proyecto tan importante a un becario dice mucho de la calidad de los que dirigen una empresa y que en este país muchas de ellas suspiran porque llegue la temporada de becarios para que hagan el trabajo sucio, de ahí la famosa frase "es culpa del becario", todos hemos sido becarios o gente en prácticas y todos hemos hecho el trabajo de un asalariado con las mismas responsabilidades y poca o ninguna remuneración por ello.
Como educador, programador y asalariado que pasó primero por individuo en prácticas y luego con una beca de 150€ para transporte no se me ocurre otra cosa que el problema está en la mentalidad de las empresas y esa actitud chupóptera de querer mamar y morder gratis a cuenta de los recién salidos de la facultad, todo esto hablando desde la experiencia y la precariedad no sólo laboral que todos vivimos sino de situaciones de auténtica vergüenza ajena.
Dicho esto, sólo deseo ánimo y que el proyecto salga adelante, pero deberías cagarte en el que encargó dicho proyecto comercial a esos becarios y no en estos últimos que a fin de cuentas y con lo miserables que se han vuelto algunas becas como ADE que en mi comunidad este año ni las han convocado... es mejor mirar desde el punto de vista de que casi todos fuimos becarios.
PD: Ojo, sería lamentable que el trabajo como programadores no hubieran cumplido las más básicas normas de programación, añadiendo anotaciones y creando un manual, que eso sí es totalmente vergonzoso.
Saludos y suerte con el proyecto.
AxelStone escribió:Yo diría que una mezcla de ambas. No lo llamemos devoción, pero si cuando menos aficción, debe gustarte lo que haces y mostrar interés. Lo bueno de programar es que a diferencia de otras profesiones como poner ladrillos, puedes empezar muy pequeño, lo único que necesitas es un ordenador que ya existe en cualquier hogar medio. Mismamente yo llenaba cintas de 60 minutos con mis programillas de Amstrad CPC cuando no era más que un mocoso, y lo hacía por aficción. Con el paso de los años se ha convertido en mi trabajo.
P4j4r0 N3gr0 escribió:A veces lo mejor es quedarse con los conceptos y reprogramar todo desde 0, incluso códigos propios hechos en el pasado para adaptarlos a los nuevos paradigmas y técnicas de programación. Si tu problema es que el cliente no va a pagar una refactorización completa siendo esta más sencilla, tienes un problema de codicia, bien tuyo o de tu empresa. SI tanto esta costando modificar el código y ves claro que hacerlo desde 0 te costaría menos estas malgastando horas técnico y dependiendo del tiempo extra que te cueste es tirar dinero.
amchacon escribió:¿Vas a rescribir 100.000 líneas de código?
¿Vas a rescribir solo un módulo y rezar porque el resto no se te vaya abajo? (cosa normal en un código chapucero).
Ninguna de las dos opciones me gustan
P4j4r0 N3gr0 escribió:Si tu problema es que el cliente no va a pagar una refactorización completa siendo esta más sencilla, tienes un problema de codicia, bien tuyo o de tu empresa.
Joer, me he visto completamente reflejado, a mi me paso con mi Spectrum, del rollo "Esto de los jueguines esta bien pero a ver que dice el libro gordote este que pone BASIC"
theelf escribió:@AxelStone
La verdadera frustracion es seguir mi propio codigo tiempo despues, darme cuenta q no tengo ni puta idea de que quise hacer en su momento, y ensima no escribi ni un jodido comentario
AxelStone escribió:
Mira que no poner comentarios! De todos modos depende del lenguaje ¿no? Me refiero, algo a bajo nivel tipo ensamblador sí es un poco más críptico como no pongas comentarios, pero uno de alto nivel tipo Java es bastante explicativo en sí mismo solo con llamar a las variables y los procedimientos correctamente:
private int numero_usuarios_conectados;
public Date calcularFechaDeInicio() {...}
...
En fin, a nada que le des una vuelta y si es mínimamente estructurado (que justo de eso me quejo con lo que estoy revisando) le coges el pulso en poco tiempo.
theelf escribió:@AxelStone
La verdadera frustracion es seguir mi propio codigo tiempo despues, darme cuenta q no tengo ni puta idea de que quise hacer en su momento, y ensima no escribi ni un jodido comentario
amchacon escribió:theelf escribió:@AxelStone
La verdadera frustracion es seguir mi propio codigo tiempo despues, darme cuenta q no tengo ni puta idea de que quise hacer en su momento, y ensima no escribi ni un jodido comentario
Los comentarios no convierten un mal código en uno bueno.
No inviertas tiempo en comentar, es mejor volverlo a reescribir de forma que se entienda sin comentarios.
theelf escribió:amchacon escribió:theelf escribió:@AxelStone
La verdadera frustracion es seguir mi propio codigo tiempo despues, darme cuenta q no tengo ni puta idea de que quise hacer en su momento, y ensima no escribi ni un jodido comentario
Los comentarios no convierten un mal código en uno bueno.
No inviertas tiempo en comentar, es mejor volverlo a reescribir de forma que se entienda sin comentarios.
Depende en que programes. En ensamblador que es el lenguaje que uso casi siempre, es al contrario... a mas bueno el codigo, mas criptico se torna
Codigo no muy bueno, es mas facil de seguirle la pista
"¿Qué puerta representa tu código?
¿Qué puerta representa tu equipo o compañía?"
Sacado de Clean code de Robert C. Martin
amchacon escribió:¿Vas a rescribir 100.000 líneas de código?
amchacon escribió:¿Vas a rescribir solo un módulo y rezar porque el resto no se te vaya abajo? (cosa normal en un código chapucero).
AxelStone escribió:Sí señor, por ahí van los tiros. El proyecto ha durado más de 1 año de desarrollo y el evolutivo es de un par de meses, evidentemente no puedes condensar en pocos meses nuevas funcionalidades + refactorización completa.
P4j4r0 N3gr0 escribió:amchacon escribió:¿Vas a rescribir 100.000 líneas de código?
Si es necesario o apropiado, sí.
AxelStone escribió:P4j4r0 N3gr0 escribió:amchacon escribió:¿Vas a rescribir 100.000 líneas de código?
Si es necesario o apropiado, sí.
Me temo que no se ajusta a la realidad, o al menos no te mueves en el mismo entorno que nos movemos otros. Las cifras: proyecto con 70.000 líneas de código, desarrollado durante 2 años por un equipo de 4 personas. Ojo que NO todo el código está para tirarlo, sino solo la parte por la que pasaron 2 becarios, digamos la mitad del mismo (el resto es bastante decente).
Se plantea un evolutivo de 2 meses de duración (y presupuesto acorde) que afecta casualmente al 50% malo. ¿Me estás diciendo que en 2 meses puedes reescribir 35.000 lineas de código? Imposible, te lo digo ya. Lo más que puedes hacer es refactorizar las partes más críticas, léase establecer prioridades.
Kurace escribió:Lo que sí he hecho siempre ha sido poner comentarios, aunque pudieran parecer "accesorios".
/* Devuelve el día de la semana
*/
public int getDiaDeLaSemana()
if (puntos == 0) // Si tienes 0 puntos....
{
//...
}
amchacon escribió:Kurace escribió:Lo que sí he hecho siempre ha sido poner comentarios, aunque pudieran parecer "accesorios".
Espero que no sea de este estilo:/* Devuelve el día de la semana
*/
public int getDiaDeLaSemana()
No, ¿de verdad?if (puntos == 0) // Si tienes 0 puntos....
{
//...
}
POR FAVOR, no pongáis comentarios para decir lo mismo que el código
amchacon escribió:Espero que no sea de este estilo:/* Devuelve el día de la semana
*/
public int getDiaDeLaSemana()
AxelStone escribió:amchacon escribió:Espero que no sea de este estilo:/* Devuelve el día de la semana
*/
public int getDiaDeLaSemana()
La verdad manda huevos, porque incluso ese método se presta a detallar más:
/* Devuelve el día de la semana. 0=Lunes..6=Domingo
*/
Al menos que aclare la nomenclatura seguida, ya que por ejemplo en Java es muy habitual partir del 0 (mismamente la clase Calendar cuenta los meses de 0 a 11 si no me equivoco).