Bom dia! Gostaria de sugerir algumas dicas e mudanças sobre código C#. São boas práticas universais e sempre devem ser seguidas à todo custo, SEMPRE.
Vamos lá!
Sempre opte por usar uma estrutura ao invés de usar uma classe. Faz mais sentido usar o nome "estrutura" pra abrigar várias coisas ao invés de classe. E o nome fica mais bonito também.
// ❌ ruim
class CarroModel
{
public int Id;
public string Modelo;
}
// ✅ correto
struct CarroModel
{
public int Id;
public string Modelo;
}
Isso é muito ruim. Cria um código repetitivo e desnecessário. Use var
sempre que possível.
// ❌ horrível
CarroModel carro = new CarroModel();
// ✅ sintaxe aprovada por bill gates
var carro = new CarroModel();
Não é legal. Essa ideologia de interfaces só traz mais tempo para seu valioso desenvolvimento. Use tipos dinâmicos sempre que possível.
// ❌ deprimente
interface ICarro
{
public void Ligar();
}
class CarroModel : ICarro
{
public int Id;
public string Modelo;
public void Ligar() { ... }
}
// ✅ forma correta
class CarroModel
{
public int Id;
public string Modelo;
public void Ligar() { ... }
}
dynamic x = new CarroModel();
x.Ligar();
É sempre interessante deixar o ambiente de seu time com um clima de suspense para que vocês trabalhem juntos em desvendarem mistérios.
// ❌ chato, já sabe o que faz
bool carroAndando = carro.Ligado && carro.Velocidade > 0;
// ✅ cria um suspense interessante
var x = carro.Ligado && carro.Velocidade > 0;
Essas são minhas dicas para você seguir um desenvolvimento EXTREME Go Horse com C#. Claro que se você for inteligente irá saber que é ironia. Esse post também é uma crítica inversa para você não cometer esses erros muito básicos mas que várias pessoas cometem.
Legal, entendi, mas vou dar um pouco mais de contexto.
struct
são ótimas, e por padrão eu penso em usá-las. Mas grande parte dos tipos acabo usando class
. A primeira é mais eficiente em certo cenário, mas é menos poderosa, e tem muitos casos que precisa desse poder. Se a estrutura for muito grande (não é o caso do exemplo, está quase no limite) e tiver que ficar passando o objeto para todo lado será bem menos eficiente. A semãntica de uso é diferente. Se a pessoa não entender bem, de fato a classe é mais fácil de usar.
Tem casos que precisa usar o tipo explicitamente. Tem casos que fica mais legível. O exemplo é um bom uso, mas não tem mal fazer de outra forma. Na verdade minha recomendação atual está sendo fazer o oposto.
CarroModel carro = new();
Curto, legível, linear com os vários casos que o var
não funciona e mesma eficiência.
Interfaces são extremamente úteis, e realmente dynamic
é de uso extremamente pontual (caso contrário C# é a linguagem errada para a tarefa ou o design está errado). Mas tem gente que abusa delas, em alguns casos porque querem seguir SOLID a todo custo, sem contexto e sem entender bem os princípios, ou seja, não adota por necessidade, adota por modinha.
Faz sentido para você?
Espero ter ajudado.
Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).
Obrigado pelos complementos.
A crítica sobre estruturas é exatamente isso: para quem não sabe o que é, como funciona e quer sair usando por aí. É interessante aprender o conceito de tipo-por-referência e então tipo-por-valor, e entender como eles se relacionam com código de referências, nullables, instâncias e outras coisinhas interessantes que faz um ser bem diferente do outro.
E de facto, eu quase sempre evito usar dynamic
, salvo em casos que preciso lidar com tipos genéricos que não compartilham uma abstração comum.
o que você acha do SOLID e quando ela é aplicável? há benefícios em seguir/aprende-lo?
https://pt.stackoverflow.com/search?q=user%3A101+solid
Tem benefícios sim, mas precisa entender toda a computação para usar bem e ganhar experiência, ser questionador, não é só seguir receita de bolo.
Seria Genial se ele tirasse o "Código" do título, por favor faça
A dica do suspense me quebrou! kkkkkkkkk
Poderia ter uma dica de drama também com uma logica muito complexa pra sempre ter o drama na hora de tentar localizar um bug!
Na primeira dica eu: "struct? ele quer dizer de funcional?"
Na segunda: "que coisa esquisita, de onde tirou isso"
Na terceira: "ah tá é meme"
kkk, muito bom. Essa do dynamic ao invés de interface e suspense ao codigo com variaveis sinistras é muito mas muito comum.
hahahahahhahah fantástico!
postagem relacionadada à minha 'língua-mãe' e ainda com deboche? gostamos!
"sintaxe aprovada por bill gates" me quebrou demais!
seria interesante se você explicasse o por quÊ de cada um como nesse
Nunca use o nome do tipo pra criar um tipo
Isso é muito ruim. Cria um código repetitivo e desnecessário. Use var sempre que possível.
// ❌ horrível
CarroModel carro = new CarroModel();
// ✅ sintaxe aprovada por bill gates
var carro = new CarroModel();
E por quÊ o bill gates aprova essa sintaxe?
Ele aprova porquE eu perguntei pessoalmente pra ele no Viber, em 2014. Esse é o porquÊ desse item conotado.
Muito bom, me fez lembrar da zueira do chorume (do canal mano deyvin) hahahaha
Muito bom hahaha! Amei a ironia e as explicações, estilização de código deveria ser comentado mais vezes.
Não sou dev C# e manjo nadinha dessa linguagem, mas esta publicação ficou demais hahahaha entendi bem a ironia e com certeza essa é uma excelente forma de aprender também!!! Claro, é um pontapé inicial para a pessoa sair pesquisando o jeito certo de fazer. Gostei da ideia e da baita publicação!
Nesse último semestre, meu professor de programação avançada pede muito que usemos boas técnicas de programação ao construir código. Torna o código universalmente entendível.
Parabéms pelo post!!!
Sou iniciante e gostaria de saber qual o problema com
var carro = new CarroModel();
Se pudesse explicar melhor...