Optimización: ¿Cómo repetir partes de código?
Publicado por Rodrigo (10 intervenciones) el 13/05/2021 00:15:31
Qué tal, buenas tardes, les platico lo que quiero hacer.
Hace poco realicé un programa el cual a partir de un archivo de de texto, tenía que dividirlo por partes o secciones y a partir de eso por medio de un .substring cortar y convertir los valores para realizar una suma. Adjunto un bloque de código para que lo entiendan:
En sí el proceso es el mismo para todos los apartados.
Necesito saber si alguien puede orientarme para optimizar este código.
No busco que lo resuelvan, sencillamente que me orienten a decirme por medio de qué puedo hacerlo.
Al final imprimo los resultados en una variable distinta para cada resultado así:
Tengo una ligera idea y se me había ocurrido hacer un método para cada apartado.
De antemano, ¡Muchas gracias por leerme!
Hace poco realicé un programa el cual a partir de un archivo de de texto, tenía que dividirlo por partes o secciones y a partir de eso por medio de un .substring cortar y convertir los valores para realizar una suma. Adjunto un bloque de código para que lo entiendan:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
if(linea.contains("SEG.DE SALUD PENSIONADOS ART.42 0.625% ")){
//CONCEPTO
concepto4 = linea.substring(0,42);
//System.out.println(concepto);
//CASOS NOMINA ORDINARIA
casosNomOrdinaria = linea.substring(58,64);
casosNomOrdinaria = casosNomOrdinaria.replaceAll(",", "").trim();
sumaCasos = Integer.parseInt(casosNomOrdinaria);
temp = sumaCasos;
suma41 = temp + suma41;
//System.out.println(casosNomOrdinaria);
//NOMINA ORDINARIA
nominaOrdinaria = linea.substring(67,84);
nominaOrdinaria = nominaOrdinaria.replaceAll(",", "").trim();
sumaCasos1 = Double.parseDouble(nominaOrdinaria);
temp1 = sumaCasos1;
suma45 = temp1 + suma45;
// System.out.println(nominaOrdinaria);
//CASOS PAGOS CANCELADOS
casosPagosCancelados = linea.substring(86,94).trim();
sumaCasos2 = Integer.parseInt(casosPagosCancelados);
temp2 = sumaCasos2;
suma42 = temp2 + suma42;
//System.out.println(casosPagosCancelados);
//PAGOS CANCELADOS
pagosCancelados = linea.substring(97,114);
pagosCancelados = pagosCancelados.replaceAll(",","").trim();
sumaCasos3 = Double.parseDouble(pagosCancelados);
temp3 = sumaCasos3;
suma46 = temp3 + suma46;
//System.out.println(pagosCancelados);
//CASOS NOMINA EXTRAORDINARIA
casosNomExt = linea.substring(117,124);
casosNomExt = casosNomExt.replaceAll(",","").trim();
sumaCasos4 = Integer.parseInt(casosNomExt);
temp4 = sumaCasos4;
suma43 = temp4 + suma43;
//System.out.println(casosNomExt);
//NOMINA EXTRAORDINARIA
NomExt = linea.substring(127, 144);
NomExt = NomExt.replaceAll(",","").trim();
sumaCasos5 = Double.parseDouble(NomExt);
temp5 = sumaCasos5;
suma47 = temp5 + suma47;
//System.out.println(NomExt);
//TOTAL CASOS
totalCasos = linea.substring(147,156);
totalCasos = totalCasos.replaceAll(",","").trim();
sumaCasos6 = Integer.parseInt(totalCasos);
temp6 = sumaCasos6;
suma44 = temp6 + suma44;
//System.out.println(totalCasos);
//TOTAL
totalFinal = linea.substring(160, 177);
totalFinal = totalFinal.replaceAll(",","").trim();
sumaCasos7 = Double.parseDouble(totalFinal);
temp7 = sumaCasos7;
suma48 = temp7 + suma48;
//System.out.println(totalFinal);
}
if(linea.contains("RETIRO EDAD AVANZADA/VEJEZ ART.102 6.125% ")){
//CONCEPTO
concepto5 = linea.substring(0,42);
//System.out.println(concepto);
//CASOS NOMINA ORDINARIA
casosNomOrdinaria = linea.substring(58,64);
casosNomOrdinaria = casosNomOrdinaria.replaceAll(",", "").trim();
sumaCasos = Integer.parseInt(casosNomOrdinaria);
temp = sumaCasos;
suma51 = temp + suma51;
//System.out.println(casosNomOrdinaria);
//NOMINA ORDINARIA
nominaOrdinaria = linea.substring(67,84);
nominaOrdinaria = nominaOrdinaria.replaceAll(",", "").trim();
sumaCasos1 = Double.parseDouble(nominaOrdinaria);
temp1 = sumaCasos1;
suma55 = temp1 + suma55;
// System.out.println(nominaOrdinaria);
//CASOS PAGOS CANCELADOS
casosPagosCancelados = linea.substring(86,94).trim();
sumaCasos2 = Integer.parseInt(casosPagosCancelados);
temp2 = sumaCasos2;
suma52 = temp2 + suma52;
//System.out.println(casosPagosCancelados);
//PAGOS CANCELADOS
pagosCancelados = linea.substring(97,114);
pagosCancelados = pagosCancelados.replaceAll(",","").trim();
sumaCasos3 = Double.parseDouble(pagosCancelados);
temp3 = sumaCasos3;
suma56 = temp3 + suma56;
//System.out.println(pagosCancelados);
//CASOS NOMINA EXTRAORDINARIA
casosNomExt = linea.substring(117,124);
casosNomExt = casosNomExt.replaceAll(",","").trim();
sumaCasos4 = Integer.parseInt(casosNomExt);
temp4 = sumaCasos4;
suma53 = temp4 + suma53;
//System.out.println(casosNomExt);
//NOMINA EXTRAORDINARIA
NomExt = linea.substring(127, 144);
NomExt = NomExt.replaceAll(",","").trim();
sumaCasos5 = Double.parseDouble(NomExt);
temp5 = sumaCasos5;
suma57 = temp5 + suma57;
//System.out.println(NomExt);
//TOTAL CASOS
totalCasos = linea.substring(147,156);
totalCasos = totalCasos.replaceAll(",","").trim();
sumaCasos6 = Integer.parseInt(totalCasos);
temp6 = sumaCasos6;
suma54 = temp6 + suma54;
//System.out.println(totalCasos);
//TOTAL
totalFinal = linea.substring(160, 177);
totalFinal = totalFinal.replaceAll(",","").trim();
sumaCasos7 = Double.parseDouble(totalFinal);
temp7 = sumaCasos7;
suma58 = temp7 + suma58;
//System.out.println(totalFinal);
}
if(linea.contains("SEG.INVALIDEZ Y VIDA ART.140 0.625% ")){
//CONCEPTO
concepto6 = linea.substring(0,42);
//System.out.println(concepto);
//CASOS NOMINA ORDINARIA
casosNomOrdinaria = linea.substring(58,64);
casosNomOrdinaria = casosNomOrdinaria.replaceAll(",", "").trim();
sumaCasos = Integer.parseInt(casosNomOrdinaria);
temp = sumaCasos;
suma61 = temp + suma61;
//System.out.println(casosNomOrdinaria);
//NOMINA ORDINARIA
nominaOrdinaria = linea.substring(67,84);
nominaOrdinaria = nominaOrdinaria.replaceAll(",", "").trim();
sumaCasos1 = Double.parseDouble(nominaOrdinaria);
temp1 = sumaCasos1;
suma65 = temp1 + suma65;
// System.out.println(nominaOrdinaria);
//CASOS PAGOS CANCELADOS
casosPagosCancelados = linea.substring(86,94).trim();
sumaCasos2 = Integer.parseInt(casosPagosCancelados);
temp2 = sumaCasos2;
suma62 = temp2 + suma62;
//System.out.println(casosPagosCancelados);
//PAGOS CANCELADOS
pagosCancelados = linea.substring(97,114);
pagosCancelados = pagosCancelados.replaceAll(",","").trim();
sumaCasos3 = Double.parseDouble(pagosCancelados);
temp3 = sumaCasos3;
suma66 = temp3 + suma66;
//System.out.println(pagosCancelados);
//CASOS NOMINA EXTRAORDINARIA
casosNomExt = linea.substring(117,124);
casosNomExt = casosNomExt.replaceAll(",","").trim();
sumaCasos4 = Integer.parseInt(casosNomExt);
temp4 = sumaCasos4;
suma63 = temp4 + suma63;
//System.out.println(casosNomExt);
//NOMINA EXTRAORDINARIA
NomExt = linea.substring(127, 144);
NomExt = NomExt.replaceAll(",","").trim();
sumaCasos5 = Double.parseDouble(NomExt);
temp5 = sumaCasos5;
suma67 = temp5 + suma67;
//System.out.println(NomExt);
//TOTAL CASOS
totalCasos = linea.substring(147,156);
totalCasos = totalCasos.replaceAll(",","").trim();
sumaCasos6 = Integer.parseInt(totalCasos);
temp6 = sumaCasos6;
suma64 = temp6 + suma64;
//System.out.println(totalCasos);
//TOTAL
totalFinal = linea.substring(160, 177);
totalFinal = totalFinal.replaceAll(",","").trim();
sumaCasos7 = Double.parseDouble(totalFinal);
temp7 = sumaCasos7;
suma68 = temp7 + suma68;
//System.out.println(totalFinal);
}
En sí el proceso es el mismo para todos los apartados.
Necesito saber si alguien puede orientarme para optimizar este código.
No busco que lo resuelvan, sencillamente que me orienten a decirme por medio de qué puedo hacerlo.
Al final imprimo los resultados en una variable distinta para cada resultado así:
1
2
3
wr.printf("%-52s %9d\t $%17s %9d \t$%17s %9d \t$%17s %9d \t$%17s %n",concepto,sumaTotal,formato.format(sumaTotal1),sumaTotal2,formato.format(sumatotal3),sumaTotal4,formato.format(sumaTotal5),sumaTotal6,formato.format(sumaTotal7));
wr.printf("%-52s %9d\t $%17s %9d \t$%17s %9d \t$%17s %9d \t$%17s %n",concepto2,suma21,formato.format(suma25),suma22,formato.format(suma26),suma23,formato.format(suma27),suma24,formato.format(suma28));
wr.printf("\n");
Tengo una ligera idea y se me había ocurrido hacer un método para cada apartado.
De antemano, ¡Muchas gracias por leerme!
Valora esta pregunta


0