Permalänk

Riktigt intressant! Jag har studerat en del C# och påbörjat fler projekt, men har som flera andra här svårt att hitta en mening med många av sakerna.
Jag känner även att jag skulle behöva förstå bättre hur produktionskod faktiskt ser ut. Använder tex folk try/catch hela tiden? Hur verifierar man effektivast input innan man försöker trycka in det i en databas? Hur använder "riktiga" programmerare getters/setters? Har hur många frågor som helst!

Ska försöka komma fram med lite mer konkreta exempel på vad jag är intresserad av, så postar jag det här i tråden. Väldigt intressant initiativ!

Visa signatur

"As I went up the stair, I met a man who wasn't there
He wasn't there again today, I wish, I wish he'd go away"

Permalänk
Skrivet av vanos:

Intressant, finns koden för hur du drar nytta av flera kärnor?

Javisst
https://bambafile.com/Download/Item/eb485f76-2941-45cc-871b-a...

Permalänk
Skrivet av TheTriumpH:

Riktigt intressant! Jag har studerat en del C# och påbörjat fler projekt, men har som flera andra här svårt att hitta en mening med många av sakerna.
Jag känner även att jag skulle behöva förstå bättre hur produktionskod faktiskt ser ut. Använder tex folk try/catch hela tiden? Hur verifierar man effektivast input innan man försöker trycka in det i en databas? Hur använder "riktiga" programmerare getters/setters? Har hur många frågor som helst!

Ska försöka komma fram med lite mer konkreta exempel på vad jag är intresserad av, så postar jag det här i tråden. Väldigt intressant initiativ!

Visst kan du använda try catch överallt, men skulle jag se sådan kod så skulle jag nog ta för givet att man inte riktigt vet vad som kan gå fel. Fel uppstår givetvis i kod.

Säg att du har en metod som ser ut som nedan som du inte har koden till.

string EttNamn(string Namn)

Eftersom du inte har koden till det så kommer du ta för givet att den retunerar en string, men metoden kan vara skriven så här:

public string EttNamn(string Namn) { if (string.IsNullOrEmpty(Namn)) return null; else return string.Format(@Ett namn: {0}, Namn); }

Skickar du in en tom sträng så kommer funktionen retunera null, Visual Studio kommer inte klaga på det här och du kan kompilera.

Namn test = new Namn(); string _resultat = test.EttNamn(""); Console.WriteLine(string.Format("Antal tecken i namnet: {0}", _resultat.Length));

Här kommer du få ett exception:

Object reference not set to an instance of an object.

Man stöter på såna här saker. Givetvis är detta ett väldigt uppenbart fel. Men där skulle kanske en try catch rädda dig från en crash men samtidigt har du en redig bugg i ditt program.

Men återkom gärna med frågor

Permalänk
Medlem

Jag har också kodat några flertrådiga applikationer dock inte i syfte att dra nytta av flera kärnor utan för att exekvera flera saker simultant. Då har jag främst använt mig av Thread och ThreadPool vilket indirekt medför att ens applikation drar nytta av flera kärnor (antar jag) eftersom de olika trådarna dirigeras till olika kärnor av operativsystemet. Således vad är den stora skillnaden att använda din metod för exekvering och exempelvis ThreadPool?

Förövrigt ett mycket trevligt initiativ, tråden kommer att följas med glädje och nyfikenhet Kommer också försöka bidra med min kunskap om det dyker upp något inom mitt område.

Visa signatur

foto{5d/400d | canon 24-70 2.8L | canon 18-55 3.5-5.6 |sigma 70-300 4.0-5.6 | canon 50 1.4 | speedlite 430ex}
dator{Dell Optiplex 780 SFF}

Permalänk
Skrivet av vanos:

Jag har också kodat några flertrådiga applikationer dock inte i syfte att dra nytta av flera kärnor utan för att exekvera flera saker simultant. Då har jag främst använt mig av Thread och ThreadPool vilket indirekt medför att ens applikation drar nytta av flera kärnor (antar jag) eftersom de olika trådarna dirigeras till olika kärnor av operativsystemet. Således vad är den stora skillnaden att använda din metod för exekvering och exempelvis ThreadPool?

Förövrigt ett mycket trevligt initiativ, tråden kommer att följas med glädje och nyfikenhet Kommer också försöka bidra med min kunskap om det dyker upp något inom mitt område.

Visst är det så att operativsystemet sköter den biten om du skapar fler trådar. I övrigt så går ju utvecklingen framåt och det har blivit enklare att hantera saker flertrådat. Med Tasks klassen som dök upp i .NET 3.5 (om jag nu inte minns helt fel) så blev det helt enkelt enklare att hantera.

Permalänk
Medlem
Skrivet av shakeshar:

Visst kan du använda try catch överallt, men skulle jag se sådan kod så skulle jag nog ta för givet att man inte riktigt vet vad som kan gå fel. Fel uppstår givetvis i kod.

[Massa kod]

Man stöter på såna här saker. Givetvis är detta ett väldigt uppenbart fel. Men där skulle kanske en try catch rädda dig från en crash men samtidigt har du en redig bugg i ditt program.

Men återkom gärna med frågor

shakeshar varför använder du inte de den kodstandard som Microsoft rekommenderar och varför skriver du koden på svenska då branschen i sin helhet förespråkar engelsk? Om man har arbetat med .NET ett tag så bör dessa sitta i ryggmärgen och man behöver anstränga sig för att bryta mot dessa.

Visa signatur

CPU: i7 6700k + Fractal Design S24 GPU: ASUS GeForce GTX 1070 8GB DUAL OC RAM: Kingston 16GB 2133MHz CL13 MB: MSI GAMING M7 PSU: EVGA Supernova G2 850W, 80+ Gold SSD: Samsung SM951 256GB M.2 NVMe + Samsung EVO 850 250GB M.2 Chassi: Fractal Design S Skrämar: Acer XB270HU + 2x Dell U2412M
NAS: Synology DS415+ (4x WD RED 6 TB) Console: Xbox One

Permalänk
Skrivet av Tino:

shakeshar varför använder du inte de den kodstandard som Microsoft rekommenderar och varför skriver du koden på svenska då branschen i sin helhet förespråkar engelsk? Om man har arbetat med .NET ett tag så bör dessa sitta i ryggmärgen och man behöver anstränga sig för att bryta mot dessa.

Jag förstår vad du menar och yrkesmässigt så skriver jag oftast på engelsk och följer namn"standard" på t.ex. variabler. Men beroende från vilken skola man kommer ifrån och vill följa så varierar detta. Jag sitter nu i en grupp som sysslat med både .NET och PHP, vad är det som säjer att Microsoft har rätt standard? Min poäng är att i praktiken så kan det här skilja mycket och det viktiga (tycker jag) att följa är att man förstår koden man läser. Utöver det så är många beroende för att få ihop ekvationen för en kod snutt.

Är det bara jag som ska läsa och använda koden?
Ska det användas i utbildningssyfte och vara övertydligt?
Vilka ska läsa koden?
Är det ett så pass litet projekt att man kan ha en variabel som heter "X" eller ska jag istället döpe den till _itemResultManager, som i sammanhanget säger precis lika mycket som "X"
....

Men som sagt jag förstår vad du menar. Jag följer inte någon standard stenhårt och till 100%, det hela är en balansgång.

Permalänk
Medlem

Mycket trevlig initiativ. Det jag har ett intresse av att lära mig när det gäller c# och .net är hur man skriver sin kod på ett mer "professionellt" sätt.
Hur man lägger upp projektstrukturen, kod strukturen, och speciellt felhanteringen, som hobby-ist och självlärd blir det mycket "skall bara få det att funka" och felhantering är något som kommer sist om man lägger till det alls, sedan blir det lite för mycket att göra om i efterhand om man även vill ha "snygg kod" och eftersom det är ett program som bara jag kommer att använda så nöjer man sig oftast där.

Visa signatur

PC1: Sabertooth X58, i7 980, 24GB RAM, 2st GTX 470, Intel 330 180GB SSD, Corsair AX850.

Permalänk
Skrivet av GFrost:

Mycket trevlig initiativ. Det jag har ett intresse av att lära mig när det gäller c# och .net är hur man skriver sin kod på ett mer "professionellt" sätt.
Hur man lägger upp projektstrukturen, kod strukturen, och speciellt felhanteringen, som hobby-ist och självlärd blir det mycket "skall bara få det att funka" och felhantering är något som kommer sist om man lägger till det alls, sedan blir det lite för mycket att göra om i efterhand om man även vill ha "snygg kod" och eftersom det är ett program som bara jag kommer att använda så nöjer man sig oftast där.

Det finns diverse olika design patterna som man kan använda sig av, populärt idag i ASP är MVC, Model-View-Controller. Kortfattat så kan man väl säga att det hjälper dig strukturera upp din kod

Model = Är din klass
View = Är själv .html sidan
Controller = Är kopplingen mellan Model och View.

Så ge det en googling så har du en start.

Permalänk
Medlem

Jag är mer inne på MVVM eftersom jag sitter med WPF men jag har bara inte fått tummen ur att börja använda det.

Visa signatur

PC1: Sabertooth X58, i7 980, 24GB RAM, 2st GTX 470, Intel 330 180GB SSD, Corsair AX850.

Permalänk
Skrivet av GFrost:

Jag är mer inne på MVVM eftersom jag sitter med WPF men jag har bara inte fått tummen ur att börja använda det.

Precis, sysslar man med WPF, Silverligth så är det MVVM som gäller, Webapplikationer som ASP så säger man MVC istället. MVP är också ett alternativ. Men du har då tänkt rätt.

Det är en segt i början men när man kommer in i det så inser man fördelarna, och hur mycket lättare det är bryta ut kod

Permalänk
Medlem

Är det ingen som håller på med, eller är intresserad av, programmering för inbyggda (realtids)system?

Permalänk
Medlem
Skrivet av pelleplu:

Är det ingen som håller på med, eller är intresserad av, programmering för inbyggda (realtids)system?

Om du menar microcontrollers och liknande så ja, tiden räcker inte till att programmera C# och WPF sedan C med AVR kontroller, C,C++ med Arduino och C# med Netduino, VHDL har man stött på men det är inget jag sysslar med hemma. Har börjat med en app med så då blir det java också hehe.

Visa signatur

PC1: Sabertooth X58, i7 980, 24GB RAM, 2st GTX 470, Intel 330 180GB SSD, Corsair AX850.

Permalänk
Medlem
Skrivet av shakeshar:

Jag förstår vad du menar och yrkesmässigt så skriver jag oftast på engelsk och följer namn"standard" på t.ex. variabler. Men beroende från vilken skola man kommer ifrån och vill följa så varierar detta. Jag sitter nu i en grupp som sysslat med både .NET och PHP, vad är det som säjer att Microsoft har rätt standard? Min poäng är att i praktiken så kan det här skilja mycket och det viktiga (tycker jag) att följa är att man förstår koden man läser. Utöver det så är många beroende för att få ihop ekvationen för en kod snutt.

Är det bara jag som ska läsa och använda koden?
Ska det användas i utbildningssyfte och vara övertydligt?
Vilka ska läsa koden?
Är det ett så pass litet projekt att man kan ha en variabel som heter "X" eller ska jag istället döpe den till _itemResultManager, som i sammanhanget säger precis lika mycket som "X"
....

Men som sagt jag förstår vad du menar. Jag följer inte någon standard stenhårt och till 100%, det hela är en balansgång.

Jag är medveten om att kontexten spelar en stor roll över hur hur snygg/bra kod man skriver. Jag gillar det du önskar att göra med denna tråd och det glädjer mig mycket att du kan lägga ner tid och engagemang för detta. Jag tycker dock det är lite synd att dina exempel inte följer best practise då du med andra ord lär ut fel. Jag tycker det är lika bra att lära ut rätt från början.

Jag vilja passa på att ge min syn på dina punkter ovan.

Man vet aldrig vem som kommer att läsa ens kod, detta gäller framförallt i yrkeslivet. Det kanske bara är du själv men det kan mycket väll vara din kollega, eventuell tredje parts support (Ex tredje parts komponenter) eller din kund. Det gäller då att skriva lättläst kod som är självförklarande och i min mening är första steget att följa en kodstandard.

Citat:

1.1 Why Have Code Conventions
Code conventions are important to programmers for a number of reasons:

  • 80% of the lifetime cost of a piece of software goes to maintenance.

  • Hardly any software is maintained for its whole life by the original author.
    Code conventions improve the readability of the software, allowing engineers to understand new code more quickly and thoroughly.

  • If you ship your source code as a product, you need to make sure it is as well packaged and clean as any other product you create.

Suns syn på kodstandard (tog första bästa).

Skrivet av shakeshar:

Jag sitter nu i en grupp som sysslat med både .NET och PHP

Om man hamnar i ett projekt eller har flera projekt rullande på samma gång som använder sig av olika språk så gäller det att använda respektive standard för respektive språk och inte blanda.

Själv sitter jag och skriver mycket kod i C# men jag skriver även en del PowerShell scripts dessa har olika rekomenderade vilket medför att jag följer respektive standard för respektive språk. Om jag skulle börja koda i Java så skulle jag följa deras primära kodstandard.

Skrivet av shakeshar:

Vad är det som säjer att Microsoft har rätt standard?

Vi behöver alla någon form av standard att följa för att göra koden lätt läst. Då Microsoft tog fram och utvecklar C# så faller det ganska naturligt att man följer deras rekomendationer, när de senare dokumenterar ner kodstandarden så gör dom en massa arbete som vi själva slipper. Men den största anledningen att följa dom är att de flesta seriösa .NET utvecklare gör det vilket förenklar ens dagliga arbete då man spenderar mycket tid att läsa andras kod.

Skrivet av shakeshar:

Men beroende från vilken skola man kommer ifrån och vill följa så varierar detta

Mycket möjligt. Själv blev jag lärd att följa den mest vanligaste, vilket en så länge aldrig har varit ett problem att ta reda på.

Skrivet av shakeshar:

Min poäng är att i praktiken så kan det här skilja mycket och det viktiga (tycker jag) att följa är att man förstår koden man läser. Utöver det så är många beroende för att få ihop ekvationen för en kod snutt.

Jag kan tyvärr inte bidra med exempel på följande då länken inte längre fungerar men jag såg i ditt "myUtiltiy" projekt att du deklarerade instans variabler på hela fyra olika sätt hur följer du och förstår du vilket scope en variabel har med detta arbetssätt?

Jag ber om ursäkt om jag låter lite allt för negativ men jag ställer mig lite för fundersam till din syn på detta.

Visa signatur

CPU: i7 6700k + Fractal Design S24 GPU: ASUS GeForce GTX 1070 8GB DUAL OC RAM: Kingston 16GB 2133MHz CL13 MB: MSI GAMING M7 PSU: EVGA Supernova G2 850W, 80+ Gold SSD: Samsung SM951 256GB M.2 NVMe + Samsung EVO 850 250GB M.2 Chassi: Fractal Design S Skrämar: Acer XB270HU + 2x Dell U2412M
NAS: Synology DS415+ (4x WD RED 6 TB) Console: Xbox One

Permalänk
Medlem
Skrivet av Tino:

Jag är medveten om att kontexten spelar en stor roll över hur hur snygg/bra kod man skriver. Jag gillar det du önskar att göra med denna tråd och det glädjer mig mycket att du kan lägga ner tid och engagemang för detta. Jag tycker dock det är lite synd att dina exempel inte följer best practise då du med andra ord lär ut fel. Jag tycker det är lika bra att lära ut rätt från början.

...

Det här med att lära ut "rätt" kodstandard är ju inte helt enkelt. Jag håller med om att det vore toppen ifall alla följde samma guidelines vad gäller benämning, indentering m.m., men så fungerar det ju inte i verkligheten. Jag jobbar som konsult inom systemutveckling och på samtliga mina uppdrag så har företagets lokala kodstandarder skiljt sig åt. Oavsett vad man lär sig från början, så är det ju ingenting som man kan hålla fast vid när man börjar arbeta om företaget man får anställning hos använder sig av en annan standard.

Sen kan man ju fråga sig vilken som ska anses som rätt standard. Bara för att Microsoft uppfann C# betyder det ju inte automatiskt att dom vet bäst hur man ska benämna saker osv. för att det ska bli så tydligt som möjligt. C och C++ som syntaktiskt är väldigt lika C# har funnits länge, och där finns det ju en uppsjö olika standarder som alla anser sig vara bäst och mest lättlästa.

Permalänk
Skrivet av Tino:

Jag är medveten om att kontexten spelar en stor roll över hur hur snygg/bra kod man skriver. Jag gillar det du önskar att göra med denna tråd och det glädjer mig mycket att du kan lägga ner tid och engagemang för detta. Jag tycker dock det är lite synd att dina exempel inte följer best practise då du med andra ord lär ut fel. Jag tycker det är lika bra att lära ut rätt från början.

Jag vilja passa på att ge min syn på dina punkter ovan.

Man vet aldrig vem som kommer att läsa ens kod, detta gäller framförallt i yrkeslivet. Det kanske bara är du själv men det kan mycket väll vara din kollega, eventuell tredje parts support (Ex tredje parts komponenter) eller din kund. Det gäller då att skriva lättläst kod som är självförklarande och i min mening är första steget att följa en kodstandard.

Suns syn på kodstandard (tog första bästa).

Om man hamnar i ett projekt eller har flera projekt rullande på samma gång som använder sig av olika språk så gäller det att använda respektive standard för respektive språk och inte blanda.

Själv sitter jag och skriver mycket kod i C# men jag skriver även en del PowerShell scripts dessa har olika rekomenderade vilket medför att jag följer respektive standard för respektive språk. Om jag skulle börja koda i Java så skulle jag följa deras primära kodstandard.

Vi behöver alla någon form av standard att följa för att göra koden lätt läst. Då Microsoft tog fram och utvecklar C# så faller det ganska naturligt att man följer deras rekomendationer, när de senare dokumenterar ner kodstandarden så gör dom en massa arbete som vi själva slipper. Men den största anledningen att följa dom är att de flesta seriösa .NET utvecklare gör det vilket förenklar ens dagliga arbete då man spenderar mycket tid att läsa andras kod.

Mycket möjligt. Själv blev jag lärd att följa den mest vanligaste, vilket en så länge aldrig har varit ett problem att ta reda på.

Jag kan tyvärr inte bidra med exempel på följande då länken inte längre fungerar men jag såg i ditt "myUtiltiy" projekt att du deklarerade instans variabler på hela fyra olika sätt hur följer du och förstår du vilket scope en variabel har med detta arbetssätt?

Jag ber om ursäkt om jag låter lite allt för negativ men jag ställer mig lite för fundersam till din syn på detta.

Du får hemskt gärna ta och "rätta" koden och dela med dig av hur du tycker det bör se ut. Jag menar inte detta på något spydigt sätt utan detta är kanon exempel på vad man stöter på ute i verkligheten.

Permalänk
Skrivet av pelleplu:

Det här med att lära ut "rätt" kodstandard är ju inte helt enkelt. Jag håller med om att det vore toppen ifall alla följde samma guidelines vad gäller benämning, indentering m.m., men så fungerar det ju inte i verkligheten. Jag jobbar som konsult inom systemutveckling och på samtliga mina uppdrag så har företagets lokala kodstandarder skiljt sig åt. Oavsett vad man lär sig från början, så är det ju ingenting som man kan hålla fast vid när man börjar arbeta om företaget man får anställning hos använder sig av en annan standard.

Sen kan man ju fråga sig vilken som ska anses som rätt standard. Bara för att Microsoft uppfann C# betyder det ju inte automatiskt att dom vet bäst hur man ska benämna saker osv. för att det ska bli så tydligt som möjligt. C och C++ som syntaktiskt är väldigt lika C# har funnits länge, och där finns det ju en uppsjö olika standarder som alla anser sig vara bäst och mest lättlästa.

Går också som konsult och är med om precis samma sak.

Permalänk
Medlem

Generellt sätt tycker jag också att en kodstandard ska följas och är man exempelvis C# utvecklare bör Microsofts riktlinjer följas. Det finns en stor fördel med detta förutom att det blir "ordning och reda" det medför också till att utvecklare emellan lättare kan utbyta kod utan att först sätta sig in i respektive utvecklares "kodstil".

Men i undantagsfall kan det vara befogat att göra avsteg från en kodstandard. Jag har själv varit med och tagit fram kodstandarden som råder på vår arbetsplats och den grundar sig på Microsofts riktlinjer men på några punkter har vi valt att göra avsteg från den beroende på olika orsaker som vi har motiverat.

Ibland behöver man slänga ihop kod snabbt för att visa något och då kan kodstandarden i vissa fall göra att det tar längre tid. T.ex. ibland om jag vill visa en kollega något eller om jag gjort en snabb förstudie på något, men då är jag noga med att poängtera att detta är en "quick & dirty" och inte bör följas slaviskt.

Visa signatur

foto{5d/400d | canon 24-70 2.8L | canon 18-55 3.5-5.6 |sigma 70-300 4.0-5.6 | canon 50 1.4 | speedlite 430ex}
dator{Dell Optiplex 780 SFF}

Permalänk
Medlem

Anställd vs konsult inom systemutveckling

Ni som har erfarenhet får gärna gå in och tycka till: här

Visa signatur

foto{5d/400d | canon 24-70 2.8L | canon 18-55 3.5-5.6 |sigma 70-300 4.0-5.6 | canon 50 1.4 | speedlite 430ex}
dator{Dell Optiplex 780 SFF}

Permalänk

Hej Alla
Eftersom jag själv inte kommit med något konkret med vad eller hur jag skulle kunna hjälpa er unga utvecklare framåt så slog det mig nu ikväll att ett besök i eran skola skulle passa. Skulle ni vilja veta hur jag fick mitt första jobb? Varför jag valde det språk jag gjorde när jag började? Hur språkvalen förändrats? hur marknaden ser ut idag?

Givetvis gör jag detta gratis, finns det ett intresse för detta?

/Stefan

Skickades från m.sweclockers.com