error[E0308]: mismatched types --> main.rs:6:27 | 6 | println!("{:?}", adiciona(1, '1')); | ^^^ expected usize, found char error: aborting due to previous error For more information about this error, try `rustc --explain E0308`. error: Could not compile `rubyconfbr2019`. To learn more, run the command again with --verbose.
a possibilidade de reportar falsos positivos. • Nível 2: Necessita assinaturas. Verifica se o código cumpre com as assinaturas. • Steep. • Sorbet. • RDL.
e em tempo de execução. (Nós fazemos checagem em tempo de execução só em modo de desenvolvimento) • Escalável: 100 mil LoC/ segundo. 100x mais rápido que rubocop.
tipo. • Continue entregando funcionalidades e consertando bugs, adicione tipos conforme for alterando os arquivos. • Adicione um passo no seu pipeline de CI, e ligue checagem de tipos em tempo de execução no ambiente de desenvolvimento.
bilhão de dólares. Foi a criação do null em 1965. Isso provocou inúmeros erros, vulnerabilidades e falhas, o que provavelmente causou um bilhão de dólares em danos e sofrimento nos últimos quarenta anos." -- QCon Londres, 2009
você o utiliza, não quando você o retorna ou o gera. • Polui a sua base de código com checagens de null por todo lugar, disfarçado de .to_s, .to_i, .to_f, etc. • Linguagens modernas como Rust foram projetadas sem null de propósito. • C# introduziu Nullable Reference Types, uma forma mais restrita de se lidar com null.
te ajudar a encontrar conceitos implícitos e anti-patterns na sua base de código. • Tornar esses conceitos explícitos e consertar esses anti-patterns é mais importante do que só adicionar assinaturas e anotações.
primitivos sempre que possível. • Não interrompa o progresso do seu projeto para implementar sorbet. O ponto chave é tipagem gradual. Adicione um passo na sua suíte de CI e siga em frente.