EVGD: Códigos Toscos

É mais um erro de experiência do usuário, mas vamos lá: em um sistema crítico encontrei um recurso que possibilitava excluir todos os registros referentes a uma tabela (especialmente importante).

O usuário clicava em excluir e era exposta uma caixa de diálogo escrito: “Tem certeza de que deseja excluir todos os registros da tabela?”

Havia uma única opção: “Ok”

E se a janela fosse fechada, a exclusão mesmo assim era executada.
Descobrimos isto quando sentimos um tremor de grau 9.4 da escala Richter após um usuário acidentalmente executar a operação.

[quote=kicolobo]É mais um erro de experiência do usuário, mas vamos lá: em um sistema crítico encontrei um recurso que possibilitava excluir todos os registros referentes a uma tabela (especialmente importante).

O usuário clicava em excluir e era exposta uma caixa de diálogo escrito: “Tem certeza de que deseja excluir todos os registros da tabela?”

Havia uma única opção: “Ok”

E se a janela fosse fechada, a exclusão mesmo assim era executada.
Descobrimos isto quando sentimos um tremor de grau 9.4 da escala Richter após um usuário acidentalmente executar a operação.[/quote]

e o backup? .hehehehehe

[quote=kicolobo]É mais um erro de experiência do usuário, mas vamos lá: em um sistema crítico encontrei um recurso que possibilitava excluir todos os registros referentes a uma tabela (especialmente importante).

O usuário clicava em excluir e era exposta uma caixa de diálogo escrito: “Tem certeza de que deseja excluir todos os registros da tabela?”

Havia uma única opção: “Ok”

E se a janela fosse fechada, a exclusão mesmo assim era executada.
Descobrimos isto quando sentimos um tremor de grau 9.4 da escala Richter após um usuário acidentalmente executar a operação.[/quote]

OH MY GOOD,

é a legitma funcionalidade que ninguem devia ver e sempre tem um usuário que ve auhauhuhauha

[quote=kicolobo]É mais um erro de experiência do usuário, mas vamos lá: em um sistema crítico encontrei um recurso que possibilitava excluir todos os registros referentes a uma tabela (especialmente importante).

O usuário clicava em excluir e era exposta uma caixa de diálogo escrito: “Tem certeza de que deseja excluir todos os registros da tabela?”

Havia uma única opção: “Ok”

E se a janela fosse fechada, a exclusão mesmo assim era executada.
Descobrimos isto quando sentimos um tremor de grau 9.4 da escala Richter após um usuário acidentalmente executar a operação.[/quote]

Só de imaginar a situação já senti calafrios, imagine então vivencia-la =Z
E era requisito executar a operação mesmo que o usuário fechasse a janela sem clicar em OK?

[quote=Tchello][quote=kicolobo]É mais um erro de experiência do usuário, mas vamos lá: em um sistema crítico encontrei um recurso que possibilitava excluir todos os registros referentes a uma tabela (especialmente importante).

O usuário clicava em excluir e era exposta uma caixa de diálogo escrito: “Tem certeza de que deseja excluir todos os registros da tabela?”

Havia uma única opção: “Ok”

E se a janela fosse fechada, a exclusão mesmo assim era executada.
Descobrimos isto quando sentimos um tremor de grau 9.4 da escala Richter após um usuário acidentalmente executar a operação.[/quote]

Só de imaginar a situação já senti calafrios, imagine então vivencia-la =Z
E era requisito executar a operação mesmo que o usuário fechasse a janela sem clicar em OK?[/quote]

não sei como é apresentado para usuário mas é em JS?, o cara q desenvolveu não sabia do famoso confirm?

Afe olha esse que achei num programa velho daqui:

[code]
private static int getNumberForSeconds(int i){
int byte0 = 0;

	switch (i){
		case 0:
			byte0 =	11;
			break;
		case 1:
			byte0 =	17;
			break;
		case 2:
			byte0 =	21;
			break;
		case 3:
			byte0 =	31;
			break;				
		case 4:
			byte0 =	56;
			break;
		case 5:
			byte0 =	34;
			break;
		case 6:
			byte0 =	42;
			break;
		case 7:
			byte0 =	3;
			break;
		case 8:			
			byte0 =	18;
			break;
		case 9:
			byte0 =	13;
			break;
		case 10:
			byte0 =	12;
			break;
		case 11:
			byte0 =	18;
			break;
		case 12:
			byte0 =	22;
			break;
		case 13:
			byte0 =	32;
			break;
		case 14:
			byte0 =	57;
			break;
		case 15:
			byte0 =	35;
			break;
		case 16:
			byte0 =	43;
			break;
		case 17:
			byte0 =	4;
			break;
		case 18:
			byte0 =	19;
			break;
		case 19:
			byte0 =	14;
			break;
		case 20:
			byte0 =	9;
			break;
		case 21:
			byte0 =	20;
			break;
		case 22:
			byte0 =	23;
			break;
		case 23:
			byte0 =	33;
			break;
		case 24:
			byte0 =	58;
			break;
		case 25:
			byte0 =	36;
			break;
		case 26:
			byte0 =	44;
			break;
		case 27:
			byte0 =	5;
			break;
		case 28:
			byte0 =	24;
			break;
		case 29:
			byte0 =	15;
			break;
		case 30:
			byte0 =	62;
			break;
		case 31:
			byte0 =	25;
			break;
		case 32:
			byte0 =	34;
			break;
		case 33:
			byte0 =	59;
			break;
		case 34:
			byte0 =	37;
			break;
		case 35:
			byte0 =	45;
			break;
		case 36:
			byte0 =	6;
			break;
		case 37:
			byte0 =	25;
			break;
		case 38:
			byte0 =	16;
			break;
		case 39:
			byte0 =	27;
			break;
		case 40:
			byte0 =	63;
			break;
		case 41:
			byte0 =	26;
			break;
		case 42:
			byte0 =	35;
			break;
		case 43:
			byte0 =	60;
			break;
		case 44:
			byte0 =	38;
			break;
		case 45:
			byte0 =	46;
			break;
		case 46:
			byte0 =	7;
			break;
		case 47:
			byte0 =	26;
			break;
		case 48:
			byte0 =	17;
			break;
		case 49:
			byte0 =	28;
			break;
		case 50:
			byte0 =	14;
			break;
		case 51:
			byte0 =	36;
			break;
		case 52:
			byte0 =	2;
			break;
		case 53:
			byte0 =	39;
			break;
		case 54:
			byte0 =	47;
			break;
		case 55:
			byte0 =	8;
			break;
		case 56:
			byte0 =	29;
			break;
		case 57:
			byte0 =	22;
			break;
		case 58:
			byte0 =	55;
			break;
		case 59:
			byte0 =	33;
		break;
	}
	
	return byte0;
}[/code]

Supostamente Configuration é um Singleton, agora se você já gostava de singletons vai gostar muito mais disso:

Configuration c = new Configuration(); Configuration.configuration = c; //... String senha = Configuration.getInstance().getSenha();

[quote=Eduardo Bregaida]Afe olha esse que achei num programa velho daqui:

[code]
private static int getNumberForSeconds(int i){
int byte0 = 0;

	switch (i){
		case 0:
			byte0 =	11;
			break;
		case 1:
			byte0 =	17;
			break;
		case 2:
			byte0 =	21;
			break;
		case 3:
			byte0 =	31;
			break;				
		case 4:
			byte0 =	56;
			break;
		case 5:
			byte0 =	34;
			break;
		case 6:
			byte0 =	42;
			break;
		case 7:
			byte0 =	3;
			break;
		case 8:			
			byte0 =	18;
			break;
		case 9:
			byte0 =	13;
			break;
		case 10:
			byte0 =	12;
			break;
		case 11:
			byte0 =	18;
			break;
		case 12:
			byte0 =	22;
			break;
		case 13:
			byte0 =	32;
			break;
		case 14:
			byte0 =	57;
			break;
		case 15:
			byte0 =	35;
			break;
		case 16:
			byte0 =	43;
			break;
		case 17:
			byte0 =	4;
			break;
		case 18:
			byte0 =	19;
			break;
		case 19:
			byte0 =	14;
			break;
		case 20:
			byte0 =	9;
			break;
		case 21:
			byte0 =	20;
			break;
		case 22:
			byte0 =	23;
			break;
		case 23:
			byte0 =	33;
			break;
		case 24:
			byte0 =	58;
			break;
		case 25:
			byte0 =	36;
			break;
		case 26:
			byte0 =	44;
			break;
		case 27:
			byte0 =	5;
			break;
		case 28:
			byte0 =	24;
			break;
		case 29:
			byte0 =	15;
			break;
		case 30:
			byte0 =	62;
			break;
		case 31:
			byte0 =	25;
			break;
		case 32:
			byte0 =	34;
			break;
		case 33:
			byte0 =	59;
			break;
		case 34:
			byte0 =	37;
			break;
		case 35:
			byte0 =	45;
			break;
		case 36:
			byte0 =	6;
			break;
		case 37:
			byte0 =	25;
			break;
		case 38:
			byte0 =	16;
			break;
		case 39:
			byte0 =	27;
			break;
		case 40:
			byte0 =	63;
			break;
		case 41:
			byte0 =	26;
			break;
		case 42:
			byte0 =	35;
			break;
		case 43:
			byte0 =	60;
			break;
		case 44:
			byte0 =	38;
			break;
		case 45:
			byte0 =	46;
			break;
		case 46:
			byte0 =	7;
			break;
		case 47:
			byte0 =	26;
			break;
		case 48:
			byte0 =	17;
			break;
		case 49:
			byte0 =	28;
			break;
		case 50:
			byte0 =	14;
			break;
		case 51:
			byte0 =	36;
			break;
		case 52:
			byte0 =	2;
			break;
		case 53:
			byte0 =	39;
			break;
		case 54:
			byte0 =	47;
			break;
		case 55:
			byte0 =	8;
			break;
		case 56:
			byte0 =	29;
			break;
		case 57:
			byte0 =	22;
			break;
		case 58:
			byte0 =	55;
			break;
		case 59:
			byte0 =	33;
		break;
	}
	
	return byte0;
}[/code][/quote]

Caraca!! Mas o que isso aqui era pra fazer?
E o qeu eu aprendi programando é que “Documentação não existe, né?” hahhaha

Hahaha sei lá, estava pegando minutos e passando pra segundos, zuado, sem documentação? e o nome do método? parece padrão Java? :lol:

Sensacional:

msg.setEstado(("" + rsMensagem.getString("ESTADO")).equals("null") ? "" : rsMensagem.getString("ESTADO"));

Não sei se ja postaram isso mas…

for (int i =0; i < 10; i++)
{
   if (i == 4)
   {
    break;
   }
   else
   {
     // faz algo
   }

}

?!?!?!!?
porque nao:

for (int i =0; i <4; i++)
{
  
}

[quote=luiz.portnoy]Não sei se ja postaram isso mas…

for (int i =0; i < 10; i++)
{
   if (i == 4)
   {
    break;
   }
   else
   {
     // faz algo
   }

}

?!?!?!!?
porque nao:

[code]
for (int i =0; i <4; i++)
{

}
[/code][/quote]

Porque por algum motivo você poderia alterar o valor de i no meio do método e pular o 4.

Pior que vi algo assim:

public class TestePcExtractDao extends TestCase{
public static void main(String[]args){
System.out.println("0001".compareTo("0002"));
}
}

Fiquei incredulo com a monstruosidade desse teste unitario.

Bom, não foi em Java, foi em Delphi (ótima IDE para encontrar pérolas), mas vale a pena o frio na espinha. Seria algo assim:

   (...)
   int maiorID = [acha o maior id de um conjunto de dados];

   ArrayList<String> array = new ArrayList<String>(maiorID + 1);
   
   for (int id : [ids do cojunto de dados])
      array.set(id, ...)
   (...)

Dessa forma, se eu quero uma informação relacionada ao código 25, uso array.get(25). No caso em questão, o conjunto de dados tinha 4 registros e os códigos iam de 17202010 até 17242010! Ou seja, um array de quase 2 milhões de posições para guardar 4 valores!

Imagina se os ids fossem CNPJs!

public OutputStream getOutputStream() throws IOException {
		throw new IOException("cannot do this"); //OH RLY?!?!?!
}

Outra que eu vi que não tenho acesso ao código agora foi o seguinte,

Era um método que fazia um calculo muito complexo. E no final do código tinha o seguinte comentario


/**
*
*Esse método foi implementado graças a CHUCK NORRIS
*
**/

Aonde trabalhamos parou por uma hora com a piada.
Observação, o resultado do código ainda estava errado.

Quando eu vi isso:

Map<Integer, Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>>> cartasSol = new HashMap<Integer, Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>>>();

Eu fiquei assustado. Mas nada se compara a utilização desta variável:

			for (Entry<Integer, Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>>> _entryEnc : cartas.entrySet()) {  
				for (Entry<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>> _entryOp : _entryEnc.getValue().entrySet())   
					for (Entry<Integer, Map<Integer, Map<Integer, List<Carta>>>> _entryProd : _entryOp.getValue().entrySet())   
						for (Entry<Integer, Map<Integer, List<Carta>>> _entryOper : _entryProd.getValue().entrySet())   
							for (Entry<Integer, List<Carta>> _entryEmp : _entryOper.getValue().entrySet()){
									
								Carta carta = _entryEmp.getValue().get(0);
....

Do caralho né?

[quote=mario.fts]Quando eu vi isso:

Map<Integer, Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>>> cartasSol = new HashMap<Integer, Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>>>();

Eu fiquei assustado. Mas nada se compara a utilização desta variável:

			for (Entry<Integer, Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>>> _entryEnc : cartas.entrySet()) {  
				for (Entry<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>> _entryOp : _entryEnc.getValue().entrySet())   
					for (Entry<Integer, Map<Integer, Map<Integer, List<Carta>>>> _entryProd : _entryOp.getValue().entrySet())   
						for (Entry<Integer, Map<Integer, List<Carta>>> _entryOper : _entryProd.getValue().entrySet())   
							for (Entry<Integer, List<Carta>> _entryEmp : _entryOper.getValue().entrySet()){
									
								Carta carta = _entryEmp.getValue().get(0);
....

Do caralho né?

[/quote]

Esse merecia um Oscar…

[quote=mario.fts]Quando eu vi isso:

Map<Integer, Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>>> cartasSol = new HashMap<Integer, Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>>>();

Eu fiquei assustado. Mas nada se compara a utilização desta variável:

			for (Entry<Integer, Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>>> _entryEnc : cartas.entrySet()) {  
				for (Entry<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>> _entryOp : _entryEnc.getValue().entrySet())   
					for (Entry<Integer, Map<Integer, Map<Integer, List<Carta>>>> _entryProd : _entryOp.getValue().entrySet())   
						for (Entry<Integer, Map<Integer, List<Carta>>> _entryOper : _entryProd.getValue().entrySet())   
							for (Entry<Integer, List<Carta>> _entryEmp : _entryOper.getValue().entrySet()){
									
								Carta carta = _entryEmp.getValue().get(0);
....

Do caralho né?

[/quote]

Depois dessa podem trancar o tópico pq não vai aparecer código mais tosco que isso…

Códigos Toscos Winner!

Coisas assim faz me ter que pegar um caderno e desenhar o que esta acontecendo.

[quote=mario.fts]Quando eu vi isso:

Map<Integer, Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>>> cartasSol = new HashMap<Integer, Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>>>();

Eu fiquei assustado. Mas nada se compara a utilização desta variável:

			for (Entry<Integer, Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>>> _entryEnc : cartas.entrySet()) {  
				for (Entry<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>> _entryOp : _entryEnc.getValue().entrySet())   
					for (Entry<Integer, Map<Integer, Map<Integer, List<Carta>>>> _entryProd : _entryOp.getValue().entrySet())   
						for (Entry<Integer, Map<Integer, List<Carta>>> _entryOper : _entryProd.getValue().entrySet())   
							for (Entry<Integer, List<Carta>> _entryEmp : _entryOper.getValue().entrySet()){
									
								Carta carta = _entryEmp.getValue().get(0);
....

Do caralho né?

[/quote]

Agora imagina vc entrando em uma empresa que tem um código desse… e os caras mais velhos jogam essa bomba na sua mão(o cara novo ta empolgado da isso pra ele)… kkkkk…

Foda …