¡Ah! Se me olvidaba una cosilla.
Otra cosilla que intento hacer es organizar bien las condiciones e intentar "no hacer dos veces la misma pregunta". Por ejemplo, tú has hecho una estructura tal que:
if(second==0 && !estadoSd){
//código 1
}
if (second != 0){ // aquí preguntamos por la misma condición que arriba, sólo que negada
// código 2
}
Yo lo pondría así, (aunque la estructura de llaves sea "más complicada", ahorras memoria y tiempo de proceso, y dispones de otros sitios donde poner código para combinaciones de condiciones distintas):
if(second==0) {
if(!estadoSd){ //
//código 1
}
} else { // es decir, si second !=0
// código 2
}
No siempre construir una condición compuesta es lo mejor ni lo más rápido ni lo más versátil.
Si tienes alguna duda de porqué considero ciertas cosas mejores, pregunta; yo te digo mis motivos y probablemente otros puedan decir cosas diferentes (por supuesto que yo no poseo la verdad absoluta y por ello también me gustaría conocer otros enfoques).
Saludos
Ahora sí, hasta otro rato.