Constantemente quando estou desenvolvendo software lembro desse post realizado por Phillip Calçado aka Shoes.
Confesso que quando li o título pensei “Vixi o Shoes deve ter bebido demais naqueles barzinhos em Melbourne”
mas quando terminei de ler o post meu pensamento foi “PQP que foda!”.
O post esta em inglês mas a idéia de forma simplificada é que os video games de um tempo atrais são comparáveis com código confuso e os video games modernos com código simples de entender.
Para explicar tal comparação Shoes começa mostrando uma imagem do jogo Pong:

Ele explica que o jogo representa um tennis de mesa mas pode ser confuso identificar isso, que pode ser confundido com gol a gol ou com um jogo de naves. O mesmo acontece com alguns códigos. Quantas vezes ja vimos códigos que são muito difíceis de ser analisados e/ou podem parecer que estão fazendo uma coisa quando na realidade estão fazendo outra? Foi mostrado o seguinte exemplo:
public void sendEmailWithCsvFile(String from, String to, String subject,
String body, List csvFileLines) {
Properties props = new Properties();
props.put("mail.smtp.host", "localhost");
Session session = Session.getDefaultInstance(props);
MimeMessage msg = new MimeMessage(session);
try {
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = { new InternetAddress(to) };
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject);
msg.setSentDate(new Date());
MimeBodyPart part1 = new MimeBodyPart();
part1.setText(body);
MimeBodyPart part2 = new MimeBodyPart();
StringBuffer buffer = new StringBuffer();
for (String line : csvFileLines)
buffer.append(line + "\n");
part2.setContent(buffer.toString(), "text/csv");
part2.setFileName("file1.csv");
Multipart mp = new MimeMultipart();
mp.addBodyPart(part1);
mp.addBodyPart(part2);
msg.setContent(mp);
Transport.send(msg);
} catch (AddressException e) {
throw new RuntimeException(e);
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
A simples vista fica difícil de entender o que o código esta fazendo, o que ele representa. Esse código poderia ser bem mas claro e explicito, como o seguinte:
public void sendEmailWithCsvFile(String from, String to, String subject,
String body, List csvFileLines) {
StringBuffer buffer = new StringBuffer();
for (String line : csvFileLines)
buffer.append(line + "\n");
Properties props = new Properties();
props.put("mail.smtp.host", "localhost");
MailService mailService = new MailService(props);
mailService.newMessage()
.from(from)
.to(to)
.subject(subject)
.body(body)
.attachTextFile("file3.csv", buffer.toString())
.send();
}
É esse tipo de código, simples de entender, que se compara com os video games modernos, como Rockstar Table Tennis:

Ao ver aquele jogo não cabe duvida que se trata de um jogo de tennis de mesa.
Quando estou escrevendo código lembro do entendido nesse post e tento fazer meu código comparável com os jogos modernos, tentando que eles representem ao máximo a intenção deles. Quem sabe algum dia a experiência de ler meu código seja tão próxima ao domínio como a dos jogos de Wii com alguns esportes.
0 respostas ate agora ↓
Todavia não existem comentários... Arrasa preenchendo o formulário embaixo.
Deixar um comentário