PDA

Ver Versão Completa : Para quem desenvolve software. Coloquem aqui os codigos idiotas encontrados


DocVooDoo
30/12/2008, 09:42
Todo mundo q desenvolve software em algum momento se deparou com o codigo feito por alguma pessoa, q eh simplesmente bizarro.
Estou dando manutençao em um software na empresa em q trabalho e simplesmente me divirto com as besteiras q acho por aqui.

Eis uns exemplos (em Delphi)


try
[faz qualquer coisa]
except
end;

Esse tipo de programaçao ta me dando dor de cabeça aqui, pois se algum erro acontecer dentro do try, o except vazio nao faz nada, nao informa nada, passa numa boa.

Outro codigo aqui bem imbecil


if (var1 = true) then
result := true
else
result := false;


Acho q p/ quem conhece programacao, esse codigo ja eh autoexplicativo.

Coloquem ai as besteiras q vc ja viu (ou ja fez).

thiago_rariz
30/12/2008, 09:47
eu mesmo ja fiz tanto codigo imbecil qdo comecei a programar q hj eu teria vergonha.

o pior de todos era um soft q eu mudava as classes de 2 forms de private para public e copiava e colava o texto de todas as caixinhas de texto de um no outro, só para não usar variaveis ou sql....

era uma coisa assim: form2.textbox1.text = form1.textbox1.text, repetido umas 40 vezes...

ainda bem q isso já passou........faz tempo

Kyocéra
30/12/2008, 10:07
to começandoo e fikei cm medoo agohraa

form2.textbox1.text = form1.textbox1.text (cansei de fazer issO) :p

a propósito ":=" equivale a ?

goemon
30/12/2008, 10:30
to começandoo e fikei cm medoo agohraa

form2.textbox1.text = form1.textbox1.text (cansei de fazer issO) :p

a propósito ":=" equivale a ?

:= é a atribuição do pascal (delphi).

a := 5
b := a (b = 5)

Eu ja ví alguns if 1=1 then .. entre outras coisas

_Leon
30/12/2008, 15:48
Hihiiii já vi muita código punk para entender aqui tb :rox

Programo em linguagem Lua, e ja vi coisas do tipo

while (1 == 1) do
...
end

e comentários nos códigos do tipo :

--Aqui acontece a Gambeta safada

Hahahaha Punk :o

Sgt. Kowalski
30/12/2008, 15:57
Cavalheiros, apresento-lhes a POG (programação orientada a gambiarra)

http://desciclo.pedia.ws/wiki/POG

==================================

Este texto foi escrito baseado em grandes contribuições e obras de gambiarradores de renome internacional e relata sobretudo suas experiências utilizando as técnicas POG (Programação Orientada a Gambiarras) em desenvolvimento de sistemas complexos que utilizam SGBD (Sistema Gambiarrador de Bando de Dados).
Introdução
Certamente você já precisou dar manutenção em um sistema que tinha aproximadamente 700 tabelas, 300 views e mais de 1000 stored procedures, sem falar dos milhares de softwares aplicativos desenvolvidos em VB, Delphi, ASP 3.0 ou PHP (nota: ASP e PHP são as linguagens que oferecem o maior número de recursos aos Gambiarradores para a utilização de técnicas POG avançadas).
Isto é uma situação comum nesta profissão e que muitas vezes afetam o bom desempenho do gambiarrador. Além disto os usuários sempre querem urgência na resolução de seus problemas pois na verdade alguém ficou "sentado" na informação durante meses e não envolveu os gambiarradores com a antecedência necessária. Isto por si só já é uma situação crítica, porém não pára por aí.
Cenário Atual
Considerando que qualquer sistema em produção desenvolvido com as técnicas tradicionais de desenvolvimento e modelagem apresentam algum tipo de problema podemos concluir que nunca um usuário estará satisfeito.
Abaixo uma lista dos principais motivos que incomodam os usuários:


Lentidão do sistema;
Para alterar um cadastro é necessário entrar em muitas telas;
O sistema obriga o preenchimento de determinados campos que na visão do usuário não são necessários;
No preenchimento de determinados campos é obrigatório respeitar a formatação (máscaras para digitação);

Curiosidade:
Após pesquisas de satisfação com diversos usuários foi possível detectar que estes são os principais motivos pelos quais o usuário tende a sabotar seu sistema e continuar utilizando uma plataforma mais flexível e amigável normalmente desenvolvida por ele (ao encontrar o título plataforma mais flexível e amigável leia-se planilha Microsoft Excel).
Os reais motivos em ordem de importância por trás das reclamações dos usuários


– O usuário é preguiçoso
– Normalmente o usuário é burro
– Os sistemas tradicionais não utilizam técnicas MOG e POG

Infelizmente os dois primeiros motivos não poderemos resolver com as tecnologias existentes atualmente. Portanto a melhor alternativa nestes casos continua sendo a demissão imediata e o tratamento a base de chicotada e ameaça de demissão.
Novo Cenário - Técnicas MOG e POG
Após anos de pesquisa renomados gambiarradores evoluiram o conceito dos SGBDs (Sistema Gambiarrador de Bando de Dados) para um novo padrão de desenvolvimento de sistemas baseados em MOG (Modelagem Orientada a Gambiarras) e POG (Programação Orientada a Gambiarras).
Em geral os problemas nos softwares ocorrem pois os sistemas são desenvolvidos utilizando técnicas de modelagem desnecessárias e exageradas como 3a, 4a e 5a formas normais com integridade referencial e patterns complexos. Isto gera a necessidade de muitos joins, o SGDB fica sobrecarregado fazendo validações nos dados e você tem muitos layers tornando a performance da aplicação ruim.
Para solucionar este problema, o primeiro passo é culpar o desempenho da máquina, então o Gambiarrador deve sugerir a compra de um novo servidor muito mais moderno que será capaz de rodar o software com bom desempenho. O antigo servidor ficará livre para você armazenar seus MP3s e rodar jogos on-line (diversão preferida dos gambiarradores).


Atenção: não conte esta parte para seu chefe e instale um anti-vírus nesta máquina para disfarçar.

Caso o sistema volte a ficar lento, sugira um novo upgrade de hardware. Normalmente esta técnica funciona entre 2 e 3 vezes. Caso o sistema fique lento novamente, aí você precisará investir nas técnicas MOG e POG.
Abaixo segue um guia rápido para o Gambiarrador adepto da MOG e POG:
Como resolver os seguintes problemas dos sistemas tradicionais:


Lentidão do sistema;

Comece desabilitando todas as check constraints e integridade entre as tabelas. Isto aumentará o desempenho em 30% aproximadamente.
Nota:
As check constraints e a integridade referencial servem para garantir que o usuário não faça besteira ao inserir, excluir ou alterar um registro. Como isto é impossível logo é desnecessário. Neste caso a melhor alternativa é colocar alguns IFs nas telas e fazer terrorismo na cabeça dos usuários para que eles fiquem em pânico ao usar o sistema inibindo-os e evitando que eles façam qualquer alteração, tornando o sistema mais estável.
O próximo passo é juntar tabelas que o DBA (Administrador de Bando de Dados) separou na modelagem baseada nas técnicas tradicionais. Para isto usaremos uma técnica MOG chamada R-MER (em potuguês: Modelo Reverso de Entidade e Relacionamento) ou tableless em banco de dados.
Isto poderá aumentar a performance da aplicação em assustadores 4.567%, pois não será mais necessário o uso de JOINs. A má notícia é que você terá que dar manutenção em todos os comando SQL da aplicação e a boa notícia é que você terá mais alguns meses de projeto.


Para alterar um cadastro é necessário entrar em muitas telas;

O uso de muitas tabelas requer muitas telas, este é o motivo que incomoda os usuários. A técnica indicada para solucionar este problema é a junção de tabelas conhecida como R-MER já descrita anteriormente.
Nota:
Um sistema ideal que utiliza técnicas MOG e POG tem no máximo uma tabela por funcionalidade.
Exemplos de funcionalidade no conceito MOG e POG:


Folha de Pagamento;
Contas a Pagar e Receber;
Estoque;
Faturamento.



O sistema obriga o preenchimento de determinados campos que na visão do usuário não são necessários;

Esta é a ação mais fácil para o Gambiarrador e certamente é a mais popular entre os usuários. Basta alterar todos os campos da sua tabela de banco de dados para aceitarem NULL. Após isto, você será reconhecido pelos usuários como o cara que tornou o sistema mais flexível e amigável (leia-se planilha Excel).


No preenchimento de determinados campos é obrigatório respeitar a formatação (máscaras para digitação);

Preencher campos com máscara é uma tarefa chata e demorada o que caracteriza os sistemas tradicionais como inflexíveis. Se você já executou as 3 sugestões anteriores, então a solução deste problema é fácil: basta alterar a tela principal (única tela do sistema considerando que você aplicou a técnica R-MER) .
A alteração consiste em substituir todos os objetos de tela por objetos do tipo textbox. Não se esqueça de configurá-los para aceitar digitação livre e deixe todos como não obrigatórios e sem limite de tamanho, assim o usuário se sentirá mais confortável.
Dica:
Tente fazer com que a tela do seu sistema seja parecida com o Excel, seus usuários vão amar você!
Certificação
Se você implementou com critério todos estes novos conceitos MOG e POG seu sistema estará apto a adquirir a certificação OTS-171 (One Table System - 171) o mais cobiçado certificado para softwares

Brunofs
30/12/2008, 16:01
Procurem por 'Gambiarra' nos fontes e vejam se acham algum comentário divertido :D

ÔmΣga Frøst
30/12/2008, 16:04
Todo mundo q desenvolve software em algum momento se deparou com o codigo feito por alguma pessoa, q eh simplesmente bizarro.
Estou dando manutençao em um software na empresa em q trabalho e simplesmente me divirto com as besteiras q acho por aqui.

Eis uns exemplos (em Delphi)


try
[faz qualquer coisa]
except
end;

Esse tipo de programaçao ta me dando dor de cabeça aqui, pois se algum erro acontecer dentro do try, o except vazio nao faz nada, nao informa nada, passa numa boa.

Outro codigo aqui bem imbecil


if (var1 = true) then
result := true
else
result := false;


Acho q p/ quem conhece programacao, esse codigo ja eh autoexplicativo.

Coloquem ai as besteiras q vc ja viu (ou ja fez).

Ah, esse primeiro eu uso pra caramba em C#, principalmente quando uma coisa é redundante ou irrelevante, por exemplo coisas que retornam ponteiro, que pode ser nulo e ainda por cima acompanhado de uma exceção, que nao me interessa.

Hihiiii já vi muita código punk para entender aqui tb :rox

Programo em linguagem Lua, e ja vi coisas do tipo

while (1 == 1) do
...
end

e comentários nos códigos do tipo :

--Aqui acontece a Gambeta safada

Hahahaha Punk :o

Essa aí eu uso em um compilador de Microcontrolador PIC para gerar loop infinito, uma vez que ele nao reconhece while(true){...}

mamendes
30/12/2008, 16:06
// 10-07-1987 - colocado aqui temporariamente. Retirar.

_Leon
30/12/2008, 16:21
Essa aí eu uso em um compilador de Microcontrolador PIC para gerar loop infinito, uma vez que ele nao reconhece while(true){...}

É que em Lua quando vc quer um loop infinito vc pode fazer apenas :

while(1) do
...
end

major505
30/12/2008, 17:02
Ok, eu vou citar uma coisa que aconteceu em um emprego antigo.
Estavamos fazendo um sistema web em Java e na época apesar de ser estágiario, já tinha algum tempo de experiencia em desenvolvimento de software.

Tinha um programador mais velho que estava fazendo uma chamada a uma classe que retornava um ArrayList com 3 elementos:
* na primeira posição: um boolean dizendo se o método que ele chamava tinha funcionado ou não
* na segunda uma outra lista com os resultados
* na terceira uma String contendo possiveis mensagens de erro.

Dai eu falei que misturar tipos diferentes em um Arraylist podia gerar confusão, que o melhor seria criar uma classe para encapsular tudo isso ou então lança-se uma exceção.
Essa pessoa dai entendeu tudo torto o que eu disse e para não misturar tipos diferentes de objetos ele passou a passar na primeira posição do Array "true" ou "false", ou seja a mesma merda, só que em forma de String. Quase chorei quando vi isso... :-(
O pior era ver as comparações...
if( ((string) lista[0]) == true.toString())




Outro caso nesse mesmo emprego. Tinha uma página jsp que gerava relatórios em pdf a partir de uma consulta. Só que essa consulta era feita a partir de um formulário com 3 filtros. Dai de um cara ao invés de fazer um SQL dinamico ou umas jogadas com IF e ELSE no sql, resolver fazer 9 relatórios diferentes, cada um contendo uma possibilidade de combinação de parametros. Dai quando os clientes pediram para ele adicionar mais 2 parametros o cara quase chorou... :lol


Outra coisa estranha, tirei desse mesmo projeto que tenho guardado os fontes aqui:

if(cont > 10)
{
cont = cont+2;
}
else
{
cont = cont +2;
}
[kviraolho]


Tem várias outras. Conforme eu for lembrando eu vou falando.

Edit: tem umas coisas bem bizarras nesse site, vale uma olhada: http://thedailywtf.com/Default.aspx

bizinha
30/12/2008, 17:25
if(cont > 10)
{
cont = cont+2;
}
else
{
cont = cont +2;
}
[kviraolho]



Esse manja.... bem eu , como estou em processo de aprendizagem , faço varias cacas .... mas a melhor foi eu resolvendo ou calculo fatorial ...

era pra ser

fat = fat * n

sendo n o contador do laço

eu fiz:

if n=1
fat = n*(n-1)
else
fat = n *(n-2)
:kong_zonzo:

Kyocéra
30/12/2008, 18:02
Hihiiii já vi muita código punk para entender aqui tb :rox

Programo em linguagem Lua, e ja vi coisas do tipo

while (1 == 1) do
...
end

e comentários nos códigos do tipo :

--Aqui acontece a Gambeta safada

Hahahaha Punk :o

lol huahsauhshuhausau'

Marcelo.Furacão
30/12/2008, 19:46
Quando comecei a programar (Visual Basic e C++ mais tarde), meus códigos eram uma gambiarra só ahuahauhauahuaha. Agora até que estão melhor, quase 10 anos depois hehe!

Mr. Nobody
30/12/2008, 20:29
So por curiosidade alguem aqui desenvolve em LOLCODE?? ( aqueal linguagem de progrmacao baseada nos LOL CATs)

site oficial: http://lolcode.com/home

Exemplo:
" HAI
CAN HAS STDIO?
I HAS A VAR
IM IN YR LOOP
UP VAR!!1
VISIBLE VAR
IZ VAR BIGGER THAN 10? KTHXBYE
IM OUTTA YR LOOP
KTHXBYE "

Ero_Seenin
30/12/2008, 22:22
if (var1 = true) then
result := true
else
result := false;



putz, :-D

pra que o cara precisa dessa variavel então?

Eh nozes
30/12/2008, 22:28
Jah achei um comentario no codigo escrito assim:

//Hoje estou com preguiça, por isso nao vou trabalhar

:-D :-D :-D :-D :-D :-D :-D