Permalänk
Medlem

Föråldrad kod

Hej! Brukar programmera i Visual Studio.

Om man försöker använda en föråldrad metod så talar Visual Studio om att det finns en nyare metod.

Om jag använder IntelliJ eller Eclips, är det samma sak?

Har ett projekt som jag gjorde i högskolan i början av 2000-talet.

Funderar på att modernisera koden.

Hur kan jag se till att koden är modern?

Visa signatur

Chassi: Fractal Design Define C || Processor: Intel i7-8700K || Grafikkort: ASUS GeForce GTX 1080Ti ROG Strix Gaming || Moderkort: Gigabyte Z370 AORUS ULTRA WIFI || Minne: Corsair Vengeance LPX DDR4 3000MHz 32 Gb || Lagring: Samsung 860 EVO 1TB SSD || PSU: Seasonic Focus+ 850W 85+ GOLD PSU || Skärm:Samsung Odyssey G9 || Windows 10

Permalänk
Medlem

Är det C# du ska hålla på med?

Permalänk
Medlem
Skrivet av usermane:

Är det C# du ska hålla på med?

Nej, förlåt. Glömde skriva det.

Det är Java som den gamla koden är skriven i.

Visa signatur

Chassi: Fractal Design Define C || Processor: Intel i7-8700K || Grafikkort: ASUS GeForce GTX 1080Ti ROG Strix Gaming || Moderkort: Gigabyte Z370 AORUS ULTRA WIFI || Minne: Corsair Vengeance LPX DDR4 3000MHz 32 Gb || Lagring: Samsung 860 EVO 1TB SSD || PSU: Seasonic Focus+ 850W 85+ GOLD PSU || Skärm:Samsung Odyssey G9 || Windows 10

Permalänk
Medlem
Skrivet av Larsp777:

Nej, förlåt. Glömde skriva det.

Det är Java som den gamla koden är skriven i.

I Java och C# så jobbar man med ramverk.
Ramverket kommer i nyare och nyare versioner men bakåtkompabilitet finns det nästan alltid.
Risken är metoder/klasser som har blivit föråldrade och som inte längre underhålls eller rekommenderas att användas.
Dessa saker anses då vara "deprecated" och kommer att tas bort i nyare versioner med en viss övergångsperiod.

Det räcker med att du öppnar din kod i det nyaste ramverket och kompilerar det för detta. Då kommer din utvecklingsmiljö flagga för det som inte längre fungerar/rekommenderas att användas.

Jag kan meddela att det är inte jätteofta detta inträffar så bli inte förvånad om du inte får några fel alls.

Men om det är ett 20 år gammal projekt så är det mer troligt att man har utvecklats som programmerare och kan skriva bättre kod i dagsläget. Med det sagt så kan det vara så att man skriver om det av estetiska skäl snarare än att just några deprecated-grejer har använts.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Medlem
Skrivet av Leedow:

I Java och C# så jobbar man med ramverk.
Ramverket kommer i nyare och nyare versioner men bakåtkompabilitet finns det nästan alltid.
Risken är metoder/klasser som har blivit föråldrade och som inte längre underhålls eller rekommenderas att användas.
Dessa saker anses då vara "deprecated" och kommer att tas bort i nyare versioner med en viss övergångsperiod.

Det räcker med att du öppnar din kod i det nyaste ramverket och kompilerar det för detta. Då kommer din utvecklingsmiljö flagga för det som inte längre fungerar/rekommenderas att användas.

Jag kan meddela att det är inte jätteofta detta inträffar så bli inte förvånad om du inte får några fel alls.

Men om det är ett 20 år gammal projekt så är det mer troligt att man har utvecklats som programmerare och kan skriva bättre kod i dagsläget. Med det sagt så kan det vara så att man skriver om det av estetiska skäl snarare än att just några deprecated-grejer har använts.

Tackar!

Jag har testat koden och .jar filen fungerar så man kan köra det.

Jobbar av och till för ett företag. De ville ha uppgifter med lösningar för en kurs. Tänkte då på mitt gamla projekt.

Dock så är de väldigt petiga.

Visa signatur

Chassi: Fractal Design Define C || Processor: Intel i7-8700K || Grafikkort: ASUS GeForce GTX 1080Ti ROG Strix Gaming || Moderkort: Gigabyte Z370 AORUS ULTRA WIFI || Minne: Corsair Vengeance LPX DDR4 3000MHz 32 Gb || Lagring: Samsung 860 EVO 1TB SSD || PSU: Seasonic Focus+ 850W 85+ GOLD PSU || Skärm:Samsung Odyssey G9 || Windows 10

Permalänk
Medlem
Skrivet av Larsp777:

Tackar!

Jag har testat koden och .jar filen fungerar så man kan köra det.

Jobbar av och till för ett företag. De ville ha uppgifter med lösningar för en kurs. Tänkte då på mitt gamla projekt.

Dock så är de väldigt petiga.

Oftast så är problemet åt andra hållet. Exempelvis ett större företag som är sena med Javauppdateringar eller liknande. Då får man vara noga med att inte använda ett för nytt ramverk med funktioner som inte stödjs i äldre versioner.

Om det är så att din kod fungerar att köra i en relativt ny Javamiljö så kommer du inte ha några problem med att köra det på företaget.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Medlem
Skrivet av Leedow:

Oftast så är problemet åt andra hållet. Exempelvis ett större företag som är sena med Javauppdateringar eller liknande. Då får man vara noga med att inte använda ett för nytt ramverk med funktioner som inte stödjs i äldre versioner.

Om det är så att din kod fungerar att köra i en relativt ny Javamiljö så kommer du inte ha några problem med att köra det på företaget.

Ok, tack igen.

De sa att det var fel med måsvingarna på det jag gjort. Vad då, tänkte jag. Det fungerar ju utmärkt.

Då var det så här:

Min kod:

public static void addProduct(String[] varuLista, int[] prisLista) { ..... }

Rätt kod

public static void addProduct(String[] varuLista, int[] prisLista){ ..... }

Jo, jag vet att det följer kodstandard och att man vill lära det till studenter. Tycker ändå ibland att vissa är för petiga. Koden ska fungera och vara tydlig.

Jag är van C#-programmerare och brukar skriva så. Blir tydligare tycker jag.

Visa signatur

Chassi: Fractal Design Define C || Processor: Intel i7-8700K || Grafikkort: ASUS GeForce GTX 1080Ti ROG Strix Gaming || Moderkort: Gigabyte Z370 AORUS ULTRA WIFI || Minne: Corsair Vengeance LPX DDR4 3000MHz 32 Gb || Lagring: Samsung 860 EVO 1TB SSD || PSU: Seasonic Focus+ 850W 85+ GOLD PSU || Skärm:Samsung Odyssey G9 || Windows 10

Permalänk
Medlem

@Larsp777:

Det där handlar ju bara om formateringsstandarder, visst är deras exempel vanligare men finns ju absolut inget "fel" i ditt sätt. Det enda viktiga enligt mig är ju att alla som arbetar i samma kodbas följer samma standard, så i slutändan får alla kompromissa lite

Permalänk
Medlem

Om du kör IntelliJ (funkar säkert i Eclipes också) så finns funktioner för att formatera och städa upp koden. Använd dem så lär det inte finnas så mycket att klaga på.

De jag tänker på är i första hand menyerna Code -> Reformat
och Analyze -> Inspect code

Permalänk
Medlem

@Larsp777: Frågan om måsvingen ska vara på ny rad eller samma rad har man bråkat om sen tidens begynnelse på 70-talet.

Visa signatur

3900X, RX 6700 XT, 32gb RGB RAM.

Permalänk
Medlem

Tror det är rätt mycket av en vanesak. När jag pluggade skrev jag alltid dem på samma rad. Nu efter att ha jobbat på ett företag i 6 år vars policy är att ha dem på en ny rad tyckte jag genast ditt exempel såg sjukt skumt ut

Visa signatur

Redbox: Asrock B650 Lightning ATX, 7800x3D -20CCO, XFX 6950XT, 2x32GB Corsair Vengence 6400 CL32, WD SN770 2TB, Corsair RMe 1000, Lian Li Lancool 216, Peerless Assassin 120 SE
Purpbox: Z87-Pro, I5 4670K@4.2, Sapphire 290 TRI-X, 2x8GB Crucial Tactical@stock, Deep Silence 1
Samsung Evo 250+500GB + QVO 1TB, 2x1TB 7200RPM backup/lagring
Det var bättre förr: E5300 2600MHz -> 3640MHz, Celeron 300A -> 450MHz

Permalänk
Medlem

Nu börjar det här bli lite off topic. Men det är väl en vedertagen standard att man i Java har måsvingen på samma rad, och i C# på nästa rad.
Oavsett vad man tycker själv bör man följa det som är standard inom det språk man för tillfället kodar.
Då bli alla lyckliga och världen blir en bättre plats

Permalänk
Medlem
Skrivet av Larsp777:

Om man försöker använda en föråldrad metod så talar Visual Studio om att det finns en nyare metod.

Om jag använder IntelliJ eller Eclips, är det samma sak?

Ja, det är det. Du kommer få varningar, förutsatt att metoderna är deprecated.

Vill du ta en extra koll är det alltid trevligt med statisk analys, till exempel checkstyle, findbugz, pmd och liknande. (Var ett tag sen jag kodade java, kanske finns andra alternativ nu.)

Visa signatur

Arch | 1440p 165Hz IPS | 7800X3D | 1080ti | 64GB@6GHz | SN850 2TB

Permalänk
Medlem

PHP följer väl Java-standard också?

Skickades från m.sweclockers.com

Visa signatur

Chassi: Fractal Design Define C || Processor: Intel i7-8700K || Grafikkort: ASUS GeForce GTX 1080Ti ROG Strix Gaming || Moderkort: Gigabyte Z370 AORUS ULTRA WIFI || Minne: Corsair Vengeance LPX DDR4 3000MHz 32 Gb || Lagring: Samsung 860 EVO 1TB SSD || PSU: Seasonic Focus+ 850W 85+ GOLD PSU || Skärm:Samsung Odyssey G9 || Windows 10