Article image
Robson Silva
Robson Silva16/09/2022 12:38
Compartilhe

Meu resumo do que aprendi/revi ou pesquisei durante o módulo Sintaxe e tipos de dados em C# do bootcamp Pottencial na DIO

  • #.NET C#

Tentando retribuir o enorme carinho e dedicação de quem tem patrocinado nosso desenvolvimento, optei por tentar condensar meu aprendizado em artigos breves, serve para minha consulta posterior (pois tenho uma cópia na minha máquina0 e também pode ajudar outros colegas eventualmente, sem mais delongas, bora pro resumo:

O que é csproj?

Trata-se (como talvez você tenha deduzido) do arquivo de projeto, aqui como disse o Leonardo, teremos disponível um conjunto de metadados do projeto...

O que é isso?

De uma maneira simples e aproveitando também, vou pegar uma carona no que foi dito pelo Felipão na dev week (que você deveria assistir se pudesse) trata-se do arquivo que possui uma série de instruções relacionadas ao seu projeto para fazer que ele funcione, como tipo do arquivo de saída, versão do framework selecionada para ele, nugets que vai utilizar, entre outras coisas!

A pasta obj:

"Essa pasta será povoada por arquivos relacionados ao debug da aplicação!"

Os arquivos do projeto quando compilado, serão todos enviados para cá! Entre os arquivos dispostos aqui, há entre tanta coisa, um arquivo bem curioso que é o project.assets.json, nele o bloco do json chamado project contém um item chamado restore, onde podemos ver os caminhos de onde estão abrigados o csproj do projeto, seus pacotes, etc.

Classes:

Aqui vou adotar uma abordagem particular para esclarecer: 

Entendo que classe é um conceito, pensemos por exemplo nos mamíferos... o que significa ser mamífero?

Resumidamente, podemos dizer que é um ser vivo que mama, mas reflitamos sobre mamíferos... Podemos facilmente designar um entre tantos tipos de mamíferos, um macaco, um coelho, enfim...

Podemos então dizer que o conceito de mamífero em si é uma abstração (ou pra nós desenvolvedores: uma classe abstrata) que contém várias subclasses, classes herdeiras, ou classes filhas (ai vai de como você quer chamá-las) que implementam (estipulam/especificam) suas características, que basicamente neste caso, são uma propriedade/característica boca (todo mamífero tem uma boca) e o método/ação mamar (nota interessante: ornitorrincos são mamíferos, e eles derramam o leite pelos poros para os filhotes se alimentarem).

Sobre classes abstratas futuramente todos veremos mais então não se preocupem! Isso é só pra continuarmos firmes nos estudos!

Pense que uma classe é um molde para algo e uma instância (que também é comumente chamada de objeto) trata-se da utilização deste molde para fazer alguma coisa!

Um carro é um veículo que possui 4 rodas, um modelo, uma montadora, uma cor, etc.

Isso é o que chamariamos de classe Carro.

Um Fusca, Volkswagen, bege, é o que podemos chamar de instância/objeto da classe Carro.

Classes tem membros, que se dividem em propriedades, métodos e eventos.

Propriedades são seus atributos (modelo, cor, montadora, no nosso exemplo de carro).

Métodos são suas ações (perdão o desabafo mas é só um outro nome usado no C# para as tão conhecidas funções, quando uma função pertence a uma classe em C# ela é chamada método). Lembra do mamífero? Mamar é uma ação que todo mamífero faz e não sei vocês, mas eu não consigo parar de imaginar a dificuldade que é para os ornitorrincos!

Eventos são algo que não dominei ainda, mas pretendo até o final do bootcamp falar deles, quem sabe nossos heróis da DIO não esclarecem isso pra gente (ou quem sabe você mesmo que leu e tem uma explicação massa sobre isso?). Não se preocupem com eles por enquanto, só não esqueçam que pode ser que precisemos deles um dia!

Os membros de uma classe, DEVEM estar comprometidos exclusivamente com o contexto onde serão usados. Qualquer coisa que não venha a ser utilizada, não deve estar em seu código! 

Namespaces:

"São os agrupamentos lógicos dentro do programa..."

Vou dar um exemplo que caiu no meu colo ontem! Participei da live da Pottencial, a Mariana e o Antônio estavam lá, mas na hora de pegar os linkedins dos participantes, eu comi bola quanto ao do Caio (nosso host), se o linkedin fosse um programa em C#, o link da página da Mariana e do Antônio são respectivamente dois namespaces, cada um me dando acesso as páginas (que eu poderia chamar de conjuntos de classes) de cada um, no caso do Caio, como eu não detinha a informação do namespace (link da página dele) correto, não adiantou nada eu saber que ele estava na pasta física de usuários do linkedin, eu simplesmente não consegui chegar a ele!

Para usar o conjunto de códigos disponíveis em um namespace (classes, funções, etc), a palavra using precisa ser inclusa no seu código (geralmente na parte de cima do código onde o namespace que o usará está descrito).

Convenções de sintaxe/nomenclatura:

PascalCase : NomesDeClasses, Propriedades, Métodos, Funções.

camelCase : nasVariáveis, instanciasDeClasses.

TUDOMAIUSCULO : CONSTANTES.

_ (antes de qualquer uma das convenções acima) : itens privados.

Nunca abrevie os nomes (mas você pode buscar opções de nomes que sejam menores e forneçam o mesmo entendimento)!

Sempre que possível tenha uma classe por arquivo e deixe o arquivo com o nome da classe!

Não use caracteres especiais exceto o _ (que é usado antes do nome especificamente para apontar para um item privado, entre as letras/palavras do nome eu não indico até porque quebra as demais convenções e não está especificado nelas).

Tipos de dados:

string : representa texto, qualquer conjunto de caracteres podendo conter 1 ou mais caracteres.

Se você precisar por alguma razão "alterar" o conteúdo de sua string depois da atribuição (pesquise mais para descobrir por que eu coloquei o alterar entre aspas, se eu colocar aqui posso mais confundir que ajudar), deixo a sugestão para que faça isso no máximo 7 vezes, se for precisar mais que isso (ou se a performance for algo realmente imprescindível para sua aplicação), pesquise outra opção de tipo (tem um tal de StringBuilder ai que pode ajudar).

int : números inteiros (ou seja: números que NÃO contém casas decimais!) e seus valores vão de apoximadamente -2 bilhões e 100 milhões à 2 bilhões e 100 milhões.

Exemplos: [...]-1, 0, 1 [...]

Num calcúlo usando int, uma divisão que geraria um número quebrado, sempre vai arredondar o valor para baixo.

Exemplo: 5/2 = 2

Ou seja: inteiros permitem calcúlos, porém com uma precisão que irá ignorar valores fracionados!

byte : Aqui você tem um camarada que será muito usado quando formos falar de arquivos! O byte atende brilhantemente a gestão de arquivos, tendo arrays de bytes instanciados para trabalharmos com arquivos em nossas aplicações.

Sobre os tipos de ponto flutuante vou resumir:

float e double : são valores que usaremos para comportar valores aproximados.

decimal : usaremos para valores exatamente como foram descritos, por exemplo dinheiro, onde não pode haver perda de informação em nenhuma hipótese.

Datetime : nosso tipo para datas, aqui temos tudo que precisamos para trabalhar com elas.

Bom, acho que por enquanto é isso! Se achar que conteúdo acrescentou de alguma forma e quiser deixar aquela recomendação de competência em C# no linkedin vou agradecer muito!

linkedin : www.linkedin.com/in/rjsilva-oficial

github: https://github.com/rjsilvaoficial

Compartilhe
Comentários (0)