EVGD: Códigos Toscos

No comments!

if( preco == null && preco > 100.0 ) { // ... }

Separação de camadas, MVC… são só conceitos:

[code]// package e imports

public class AlgumaAction extends Action {
public void execute( … ) {
UmDelegate delega = new UmDelegate();
delega.processarAlgo( request );
// …
}
}[/code]

[code]// package e imports

public class UmDelegate {

private SuperEJB ejb;

public void processarAlgo( HttpServletRequest req ) {
ejb.processarAlgo( req );
}
}[/code]

[code]// package e imports

public class SuperEJBBean implements SuperEJB, SuperEJBLocal {

public void processarAlgo( HttpServletRequest req ) {
String nome = req.getParameter(“nome”);
String cpf = req.getParameter(“cpf”);
// … mais código desastroso aqui …
}
}[/code]

O tópico tá grande demais, por isso não li tudo. Me desculpem se alguém já postou alguma pérola parecida com a seguinte:

...
setCodEmpresa(getCodEmpresa());
setNomeCliente(getNomeCliente());
...

E, não. Os getters e setters não faziam nada além do que setar e recuperar o valor dos campos da classe… :lol:

[quote=danieldestro]No comments!

if( preco == null && preco > 100.0 ) { // ... }[/quote]

Isso ocorre até nas melhores famílias. O FindBugs achou uns 4 ou 5 erros desse tipo no JDK, outros tantos no Tomcat etc.

[quote=danieldestro]Separação de camadas, MVC… são só conceitos:

[code]// package e imports

public class AlgumaAction extends Action {
public void execute( … ) {
UmDelegate delega = new UmDelegate();
delega.processarAlgo( request );
// …
}
}[/code]

[code]// package e imports

public class UmDelegate {

private SuperEJB ejb;

public void processarAlgo( HttpServletRequest req ) {
ejb.processarAlgo( req );
}
}[/code]

[code]// package e imports

public class SuperEJBBean implements SuperEJB, SuperEJBLocal {

public void processarAlgo( HttpServletRequest req ) {
String nome = req.getParameter(“nome”);
String cpf = req.getParameter(“cpf”);
// … mais código desastroso aqui …
}
}[/code]

[/quote]

Huahuahua. Estou tendo que dar manutenção em um sistema com essas características (só que com swing). Há componentes swing misturados à regra de negócio.

Hehe, eu também tive que fazer isso. O mais legal era que para instanciar uma transação com o mainframe eu precisava do JPanel da tela corrente.

O motivo era muito bom: eles ficavam pegando o componente pai até chegar ao JFrame da aplicação para poder pegar a sessão do usuário, que ficava guardada nele…

Acho que é por isso (e por outras loucuras) que lá todos dizem que Java é um lixo e só serve pra mostrar telas…

este é de um post do guj mesmo:

http://www.guj.com.br/posts/list/96141.java

Parabéns!!!

[code]public class Ferramentas extends Date {
public java.util.Date getStorageDate() {
long millis = ((long) this.getTime() / 1000) * 1000;
this.setTime(millis);
return this;
}

public java.util.Date getSystemDate() {
	return this;
}

	public static Ferramentas truncateToFirstDayOfMonth(Ferramentas data) {
		if (data == null) {
			return null;
		}
		Calendar calendario = new GregorianCalendar();
		calendario.setTime(data);
		calendario.set(Calendar.DAY_OF_MONTH, 1);
		return Ferramentas.truncateTime(new Ferramentas(calendario.getTime()));
	}

//… mais código aqui
}[/code]

[quote=danieldestro]Parabéns!!!

[code]public class Ferramentas extends Date {
public java.util.Date getStorageDate() {
long millis = ((long) this.getTime() / 1000) * 1000;
this.setTime(millis);
return this;
}

public java.util.Date getSystemDate() {
	return this;
}

	public static Ferramentas truncateToFirstDayOfMonth(Ferramentas data) {
		if (data == null) {
			return null;
		}
		Calendar calendario = new GregorianCalendar();
		calendario.setTime(data);
		calendario.set(Calendar.DAY_OF_MONTH, 1);
		return Ferramentas.truncateTime(new Ferramentas(calendario.getTime()));
	}

//… mais código aqui
}[/code][/quote]

Daniel, as pessoas que codificaram isso aê, ainda estão na empresa?
O que você faz quando encontra isso? Re-escreve e depois notifica eles, avisa o gerente, avisa os estagiarios que fizeram isso?
Que tipo de empresa aceita isso?
Isso estava “funcionando” em produção?

Tah loco meu! :stuck_out_tongue:

Modo de usar:

Date dtProcmIni = Ferramentas.truncateHour(new Ferramentas(dtProc));

É instantâneo…

[quote=peerless]Daniel, as pessoas que codificaram isso aê, ainda estão na empresa?
O que você faz quando encontra isso? Re-escreve e depois notifica eles, avisa o gerente, avisa os estagiarios que fizeram isso?
Que tipo de empresa aceita isso?
Isso estava “funcionando” em produção?[/quote]

Curiosamente eu sou da área de QA (qualidade).

Aquela história do “framework” pra programadores Cobol é o bicho, hein? Coisa pra se contar em volta da fogueira.

MODERADO: Por favor, evite palavrões.

[quote=danieldestro][quote=peerless]Daniel, as pessoas que codificaram isso aê, ainda estão na empresa?
O que você faz quando encontra isso? Re-escreve e depois notifica eles, avisa o gerente, avisa os estagiarios que fizeram isso?
Que tipo de empresa aceita isso?
Isso estava “funcionando” em produção?[/quote]

Curiosamente eu sou da área de QA (qualidade).[/quote]

Hahaha isso explica tudo.

Seu trabalho é divertido pacas, não? :wink:

Apesar de ser um trabalho bem sério, eu me divirto.

[quote=Jeanioz][quote=danieldestro][quote=peerless]Daniel, as pessoas que codificaram isso aê, ainda estão na empresa?
O que você faz quando encontra isso? Re-escreve e depois notifica eles, avisa o gerente, avisa os estagiarios que fizeram isso?
Que tipo de empresa aceita isso?
Isso estava “funcionando” em produção?[/quote]

Curiosamente eu sou da área de QA (qualidade) e analiso as entregas dos nossos fornecedores. Isso tudo vai em um relatório.[/quote]

Hahaha isso explica tudo.

Seu trabalho é divertido pacas, não? :wink: [/quote]

Ele não deve ter fé nenhuma na humanidade, com um trabalho desses…

O Daniel não tem fé nos programadores que fazem as barbaridades que ele vê…o resto da humanidade não tem culpa! :twisted: :lol:

ate mais…

[quote=danieldestro]
Curiosamente eu sou da área de QA (qualidade) e analiso as entregas dos nossos fornecedores. Isso tudo vai em um relatório.[/quote]

Po, você passa o dia inteiro só olhando código fonte dos outros e martelando o dedo do cara que fez o código sem piedade alguma?

Estou dando manutenção em um sistema que tem suas JSP’s coisas do tipo:

[code]
<%
String qs = request.getQueryString();
if (qs != null){
if(qs.equalsIgnoreCase(“Erro”)){
%>

<%
}
}

}else {
%>
… resto do html[/code]

:cry:

[quote=danieldestro][quote=peerless]Daniel, as pessoas que codificaram isso aê, ainda estão na empresa?
O que você faz quando encontra isso? Re-escreve e depois notifica eles, avisa o gerente, avisa os estagiarios que fizeram isso?
Que tipo de empresa aceita isso?
Isso estava “funcionando” em produção?[/quote]

Curiosamente eu sou da área de QA (qualidade) e analiso as entregas dos nossos fornecedores. Isso tudo vai em um relatório.[/quote]

Seus colegas (e empresa) sabe que você os sacaneia no GUJ? :twisted: :mrgreen:

Putz, vendo essa classe Ferramentas, dou graças a Deus que a classe String é final. Imagina o tipo de bosta que alguém poderia fazer herdando de java.lang.String? Se java.util.Date fosse final, esse tipo de merda não ocorreria (pelo menos não desse jeito).