Skip to content

Instantly share code, notes, and snippets.

View marciojrtorres's full-sized avatar
🟢
All systems operational

Marcio Torres marciojrtorres

🟢
All systems operational
View GitHub Profile
@marciojrtorres
marciojrtorres / php_conversao_implicita.php
Created August 5, 2013 20:54
Conversão automática (implícita) de tipos no PHP
$a = 1;
$b = "a";
$c = $a + $b; // conversão implícita, "a" é avaliado como 0
print $c; // imprime 1
@marciojrtorres
marciojrtorres / Ola.java
Last active April 16, 2021 17:15
Aparência dos excertos
// Os códigos aparecem nestes quadros, com fonte de largura fixa e destaque da sintaxe
public class Ola {
private final String quem;
public Ola(String quem) {
this.quem = quem;
}
@Override
@marciojrtorres
marciojrtorres / javascript_armadilhas_tipagem_insegura.js
Created August 5, 2013 22:43
Armadilhas da tipagem insegura:
function soma(a, b) {
return a + b;
}
document.write(soma(2, 3)); // ok, imprime 5
document.write(soma(2, "3")); // o que será impresso, 23 ou 5?
@marciojrtorres
marciojrtorres / php_armadilha_tipagem_insegura.php
Created August 5, 2013 22:47
Armadilhas da tipagem insegura em PHP
function soma($a, $b) {
return $a + $b;
}
// imprime 5, o PHP converte o 3 de string para inteiro
print(soma(2, "3"));
print(soma("12/01/2012", "30")); // o que será impresso?
@marciojrtorres
marciojrtorres / ruby_tipagem_segura_dinamica.rb
Created August 5, 2013 22:50
Em Ruby, o comportamento da tipagem dinâmica e segura
def soma(a, b)
return a + b
end
soma("q", "w") # ok, imprime qw, o método "q".+("w") faz a concatenação
soma(2, 3) # ok, imprime 5, o método 2.+(3) faz a soma
soma("q", 3) # falha, não é possível somar string/número sem conversão
# explícita:
TypeError: can't convert Fixnum into String
from (irb):2:in `+'
@marciojrtorres
marciojrtorres / java_programando_por_intencao.java
Created August 5, 2013 22:58
Implementando uma funcionalidade programando por intenção:
public class CreditoService {
public ? checaCredito(String documento) {
// ...
// ws.checaCPF(documento);
// ws.checaRG(documento);
return ?;
}
}
@marciojrtorres
marciojrtorres / java_expondo_intencao.java
Created August 5, 2013 23:04
Para programar por intenção devemos expor a intenção
// as classes em negrito não existem ainda
public class CreditoService {
public CreditoCheck checaCredito(TipoDocumento tipo, String documento) {
CreditoCheck creditoCheck = null;
if (tipo == TipoDocumento.CPF) {
creditoCheck = CreditoCheck.fromDivida(ws.checaCPF(documento));
} else if (tipo == TipoDocumento.RG) {
creditoCheck = CreditoCheck.fromDivida(ws.checaRG(documento));
}
return creditoCheck;
class CreditoCheck {
boolean temDivida() {
return valorDivida > 0.0;
}
// ...
@marciojrtorres
marciojrtorres / java_codigo_funciona_por_coincidencia.java
Created August 5, 2013 23:20
Quando um código funciona por coincidência
public class Main {
public static void main(String[] args) {
VencimentoUtil venc = new VencimentoUtil();
System.out.println("hoje: " + new Date().toLocaleString());
System.out.println("venc: " +
venc.proximoVencimento().toLocaleString());
// ...
@marciojrtorres
marciojrtorres / java_coinc_func.java
Last active December 20, 2015 16:19
Falando em coincidência, este código SEMPRE funciona?
public static void armazena(String texto) throws Exception {
FileWriter fw = new FileWriter("/tmp/app-temp.txt", true);
fw.write(s);
fw.flush();
fw.close();
}
public static String recupera() throws Exception {
BufferedReader br = new BufferedReader(new FileReader("/tmp/app-temp.txt"));
String linha = null;