[C#] Hilo general

NeV3rKilL

#25 Los libros te permiten ir a tu ritmo y por norma general estan escritos expertos en su campo. Algunos incluso tienen el visto bueno de los creadores del lenguaje/librería que se trate.

La mayoría de videotutoriales que yo he visto carecen de profundidad, porque lo contrario daría videos de horas y estructurar y editar videos de horas es algo que no suele hacerse porque a menos que cobres no es rentable.

Alguno he visto así, pero como ya he dicho, son de pago.

Los de youtube son su inmensa mayoría morralla.

Vamos, que vas a avanzar mucho más en leerte un libro con renombre en 2 semanas que en 2 semanas de videos randoms.

#1 Podrías meter también algo de ASP.NET pese a que lo utilice microsoft únicamente :sweat_smile: .

3
eisenfaust

algunos crecimos con libros en lugar de un ipad. no todo el mundo es un zoomer con deficit de atencion

Wei-Yu

Cada uno que use lo que mejor le venga para alcanzar la meta que se haya propuesto en ese momento, qué pesadilla con vanagloriar los libros cuando muchos son morralla en sí, además de que a veces no necesitas un libro si no un recetario, doc técnica a secas o simplemente practicarlo tú.

Que de todas formas el hilo va de C#, así que hablemos de ello. Qué herramientas usáis por aquí? Cosas que se salgan de estar enfrascado en visual studio, como si es "me encanta omnisharp+roslyn en vscode".

Haré algo de trampa (porque está dentro de VS) y diré que me flipa el repl de C# interactive; cargas un proyecto super fácil, pruebas cuatro chuminadas y a correr. Me gustaría tenerlo como una herramienta externa pero supongo que aún queda para eso. Y al margen de eso creo que sólo uso de forma rutinaria linq pad, aunque menos de lo que me gustaría porque el driver de oracle va regular.

1 2 respuestas
eisenfaust
#33Wei-Yu:

Cada uno que use lo que mejor le venga para alcanzar la meta que se haya propuesto en ese momento, qué pesadilla con vanagloriar los libros cuando muchos son morralla en sí, además de que a veces no necesitas un libro si no un recetario, doc técnica a secas o simplemente practicarlo tú.

9
josej123

No derivemos el tema en libros si vs libros no que estaba quedando interesante

1
Traber

#33 Visual Studio Community, sin plugins ni pollas, a pecho descubierto. Lo que si tengo siempre a mano son scripts para compilar, porque con .NET Core tienes dos formas de sacar los ejecutables:

  • Como DLL ejecutable con "dotnet XXX.dll"
  • Como binario autocontenido, ejecutando "XXX.exe" o "./XXX"

La opción de compilar de Visual Studio normalmente te lo compila para tu plataforma actual y de la primera forma, si quieres tenerlo de la segunda forma tienes que hacer un publish, y la forma de hacer publish desde la interfaz de Visual Studio es sidita, porque es un puto wizard de por lo menos 3-4 clicks para dar siguiente a todo y me parece morralla.

1 respuesta
isvidal

Rider

kidandcat

#36 yo no puedo con el Visual Studio, con lo que tarda en abrir y el switch de proyectos que tengo que hacer, me faltarían horas en el día, por suerte con un par de plugins el vscode va de lujo gracias a omnisharp

Scottie
#9r2d2rigo:

puedes usar var para que el compilador infiera el tipo aunque resta legibilidad al codigo.

Eso comentaba yo en la anterior empresa, hasta que me lo justificaron con "es que es mas cómodo porque si cambias lo que devuelves del método, no tienes que ir variable a variable cambiando el tipo." Y yo "si ese tipo cambia, vas a tener que tocar igualmente si usan esa variable algún método que ya no esta".

En fin, entre eso y más tonterías, como que no me dejasen usar el team explorer porque todo el equipo usaba el sourcetree, empezó el desencanto con el resto de cosas...

1 respuesta
VasK

Llevo 2 meses con este lenguaje y me está gustando ^^

1
revol360

Actualmente en un proyecto, desarrollando los servicios de backend en c# con visual studio 2019 y el frontend con reactjs + redux con vscode. Son muy gustosas y cómodas a la hora de desrrollar este tipo de arquitecturas.

EruGreen

y pildoras informaticas no es recomendado?

1 respuesta
Gollumiko

#39 a mí en cambio, me ocurre al revés. Utilizando var tengo la sensación de tener un código más simple y limpio. Si estoy llamando a un método, no me hace falta definir cuál es la clase o interfaz específica que me va a devolver, el propio método me lo está indicando ya. Si en cambio estoy instanciando algo, tengo a simple vista qué es lo que estoy haciendo new y evito redundancia. Poniendo un ejemplo sencillo, si quiero inicializar una lista de enteros, ver:

var foo = new List<int>();

Me parece bastante más estético que:

List<int> foo = new List<int>(); 

Pero vamos, que me parece más un tema de "gustos" que algo a lo que necesites buscar una justificación como la que te decían en tu anterior empresa.

4 1 respuesta
eryane

#42 Me uno a la pregunta porque lo consumo bastante

Scottie

#43 Las instanciaciones si lo veo correcto por lo que dices, y porque se te queda una linea enorme sobretodo con las clases con nombre de la propia empresa.

Pero para recibir respuesta de los métodos si que lo veo necesario, porque también otra de las cosas que pasaba, era que los nombres de variables eran tan básicos que puuff

S

La verdad es que c# es muy gratificante. Personalmente, al principio me costaba muchísimo pensar en MVVM viniendo de MVC ( no me digáis porqué xD ) y cuando me ponía con el code-behind era un espectáculo. Pero con tiempo y tras varios tropiezos las app's salen solas. Es un gustazo. Os animo a que le deis un try si estáis indecisos, aparte de que da gusto trabajar con VStudio.

JuAn4k4

C# tiene como mayor problema que es muy fácil usar las class como si fueran meros structs, y la gente ya se olvida de OO y pasa directamente a hacer morralla.

y ya todo es:

public Type X { get; set; } 
1 2 respuestas
eisenfaust

#47 yo creo que el soporte explicito de value types / semantics es de lo mejor del lenguaje si lo comparamos con algo como java

2
Traber

#47 DIOOOOOOOOOOOOOOS cómo odio los subnormales que hacen cosas como esa:

public class Mierda {
	private Type __Caca;
	public Type Caca {
		get {
			return __Caca;
		}
		set {
			__Caca = value;
		}
	}
}

¿No se dan cuenta que es lo mismo hacer eso que esto?

public class Mierda {
	public Type Caca;
}
1 respuesta
KaBeZiLLa

#49 no es exactamente lo mismo. Por ejemplo, en WPF puedes hacer binding contra una propiedad pero no contra un atributo.

1 respuesta
Traber

#50 Ya lo se, precisamente el uso de propiedades es para hacer cosas más "avanzadas" como la siguiente:

public static class MyClass {
	private static Type __Value;
	public static  Type Value {
		get {
			if(__Value == null){
				__Value = __GetValue();
			}
			return __Value;
		}
	}
	private static Type __GetValue() {
		return new Type();
	}
}

De esta forma, no tienes que inicializar el valor desde fuera, sino que al hacer el .Get() ya rellena el valor si es nulo.

Pero te juro que es que la mayoría de veces que he visto esto en C# ha sido solo para wrapear un campo con getters y setters... en vez de dejar usar directamente el campo como public y a tomar por culo. Entiendo que algunas veces se haga para mantener el código a largo plazo, porque así aunque tu variable interna cambie, la externa es siempre la misma, pero los casos que he visto no era pensando en este aspecto precisamente xD.

1
r2d2rigo

Veo que hay bastante novato/usuarios que quieren empezar a usar el lenguaje, que opinais de empezar a montar algunos retos o code golfs?

5 2 respuestas
josej123

#52 yo me animaría a picar codigo si se van poniendo retos la verdad

1
Alvurion

#52 Estaría bien. De esta manera nos ponemos algún tipo de reto personal y de paso le vamos dando vida al hilo.

B

.

wdaoajw

Este finde intente yo hacer una API para controlar kubernetes usando C# y la lib oficial.

Al final lo mandé a tomar por saco porque la lib de kubernetes de c# es una basura( o lo es su documentación) y lo hice en Python en un periquete.

Os podría valer como challenge. (Aunque esto mete bastante más complejidad que programar y ya)

Crear un deployment a partir de un fichero .yaml en un cluster de kubernetes.

kidandcat

Yo le daría caña también, que estoy iniciándome en C#. También propondría de que los retos tuvieran 2 niveles, uno de iniciación, y otro lo más difícil posible, así cada uno puede ir a por el que quiera y abarcamos más gente.

Wei-Yu

estoy haciendo unos apaños con dotnet core y veo que para el ioc tienes que registrar todos los bindings a manita como ya se hacía con unity/windsor, no hay anotaciones ni nada por el medio?

en spring lleva la tira de años que le puedes tirar anotaciones a componente random y ya te lo pilla el ioc, sin falta de registrarlo explícitamente en la inicialización

2 respuestas
r2d2rigo

#58 creo que el DI por defecto de netcore te da lo minimo, yo sigo usando Unity para poder registrar un namespace entero de una tacada, hacer el match entre interfaz e implementacion, etc.

1
JuAn4k4

#58 Y lleva años siendo de las peores prácticas que puedes hacer con spring, el auto configure y el auto scan.

1 respuesta