Java - vad är det som är pest och pina med det?

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Turbo_tail
Vad tillförde det där debatten? Debatten handlar om vad "Vi" tycker är dåligt med Java, något jag kommenterade.

Jo helt riktigt. Jag ska vara tyst. Har bara lite svårt för enkelriktade diskussioner och blir ibland lite upprörd när jag hör saker som jag tycker är dålig programmeringsmetodik (dvs properties-funktionaliteten).

Som sagt, jag ska vara tyst 8-).

//C

Permalänk
Avstängd

Vad är dåligt med properties? Det är ju guld framför fula get set metoder

Visa signatur
Permalänk
Medlem
Citat:

Ursprungligen inskrivet av CyberVillain
Vad är dåligt med properties? Det är ju guld framför fula get set metoder

Har man en lösning som kräver massor med getters/setters så tyder det oftast på att ens nuvarande design/lösning är riktigt dålig och bör omarbetas.

Visa signatur

Intel Core i7-3770K | NVIDIA Geforce GTX 980 | 16 GB DDR3 | DELL P2415Q | DELL U2711 | DELL U2410

Permalänk
Avstängd

I ett stort system med mycket ett stort Command lager kan det krävas en kontrollers som uppdaterar commando lagret med status, då är ju properties nödvändigt. Sedan är ju properties det man databindar mot...

Visa signatur
Permalänk
Medlem

Jag håller med MagnusL och conio, inkapslingen blir mycket sämre när programmeringsspråket man använder förespråkar getter/setter-metoder. Däremot finns det ett enda tillfälle jag kan se det användbart i Java, men det är inget stort område och det är väldigt få större projekt som utvecklas med den typen av programmering - och det är användandet av bönor vid backweb-programmering för formulär. Där är "man tvungen" att skriva getter/setter-metoder om man vill ha automatisk validering av sina formulär. Däremot tycker jag att det är varken pest eller pina att denna funktionalitet inte finns i Java...

Permalänk
Avstängd

Om nu propeties var så dåligt, varför har då utvecklarna på MS valt att utöka detta ännu mer i .Net 3.0?

Dålig sammanhållning, inkapsling och allmänt dålig arkitektur har inget med om du väljer properties eller get / set metoder, det har med att göra hur du implementerar det... Om du frågar mig

Visa signatur
Permalänk
Medlem

Varför tror folk att OOP handlar om getters och setters?

Visa signatur

The power of GNU compiles you!
"Often statistics are used as a drunken man uses lampposts -- for support rather than illumination."

Permalänk
Citat:

Ursprungligen inskrivet av MagnusL
Har man en lösning som kräver massor med getters/setters så tyder det oftast på att ens nuvarande design/lösning är riktigt dålig och bör omarbetas.

Då är jag intresserad hur du tycker man ska konstruera businessobjekt med ~50 attribut, om det är dålig design att använda publika (set/get eller properties) sätt att operera på dessa attribut?

Attribute ändras både på clienten och på servern av användaren, valideringsregler och businesslogik.

EDIT: Dessutom ska lösningen stöda olika cultures etc, dvs. krav man förknippar med ett businessobjekt.

Visa signatur

"Mies saa kaatua mutta ei karata." -- Adolf Ehrnrooth IR 7, Äyräpää 1944.

Permalänk
Avstängd
Citat:

Ursprungligen inskrivet av kode
Varför tror folk att OOP handlar om getters och setters?

Haha, vem tror det? Hjärnbefriat inlägg om du frågar mig. Men ffs, de flesta större system har ganska mycket data att skicka mellan de olika lagren (fast ni som inte förespråkar properties kanske inte kodar enligt lager arkitektur )

Och då är det ju rätt bra att ha ett Modell-lager som alla lager känner till där rena databärare ligger (tunna objekt utan logik, bara data). Och hur tror du man styr åtkomsten av data? Jo med properties

edit: ett rätt bra mönster är att använda internal konstruktorer så att Backend får agera factory och View bara kan läsa properties...

Visa signatur
Permalänk
Medlem
Citat:

Ursprungligen inskrivet av CyberVillain
Hjärnbefriat inlägg om du frågar mig.

Vilken jäkla tur att jag inte frågar dig, då.

Visa signatur

The power of GNU compiles you!
"Often statistics are used as a drunken man uses lampposts -- for support rather than illumination."

Permalänk
Avstängd

Men vem tror att OOP har att göra med om det valda språket stödjer properties eller get / set metoder?

Din lilla undersökning av detta kan ju inte gjorts på branschfolk iallafall.

Jag tror de flesta håller med mig om att OOP handlar om att göra flexibel, lättförståd, lättunderhållen och skalbar kod..

Visa signatur
Permalänk
Medlem
Citat:

Ursprungligen inskrivet av CyberVillain
Men vem tror att OOP har att göra med om det valda språket stödjer properties eller get / set metoder?

Din lilla undersökning av detta kan ju inte gjorts på branschfolk iallafall.

Jag tror de flesta håller med mig om att OOP handlar om att göra flexibel, lättförståd, lättunderhållen och skalbar kod..

Det finns de som har fått uppfattningen att OO är som vissa andra paradigmer, med enda skillnaden att man kapslar in variabler i klasser och interagerar med dem via metoder istället för direkt, när det snarare istället ska handla om lite av "svart låda"-synsätt. Optimalt är att ha så få getters som möjligt.

Edit: Men allvarligt talat så frågade jag inte dig.

Visa signatur

The power of GNU compiles you!
"Often statistics are used as a drunken man uses lampposts -- for support rather than illumination."

Permalänk
Avstängd
Citat:

Ursprungligen inskrivet av kode
Det finns de som har fått uppfattningen att OO är som vissa andra paradigmer, med enda skillnaden att man kapslar in variabler i klasser och interagerar med dem via metoder istället för direkt, när det snarare istället ska handla om lite av "svart låda"-synsätt. Optimalt är att ha så få getters som möjligt.

Edit: Men allvarligt talat så frågade jag inte dig.

Om vi bortser från att du inte pratar med mig kanske du kan svara på detta..

Om vi nu förutsätter att vi har ett applikatonslager som helt enkelt kräver en rätt stor mängd databärare. Då förespråkar du allså att ha publika medlemmar istället för att styra accessen via properties?

Jag håller helt med dig att objektorientering handlar om inkapsling (bla.). Men det gäller ju implemenation. Man måste ju fortfarande kunna utbyta data på ett vettigt sätt...

Visa signatur
Permalänk
Medlem

Nej, det gör jag ju inte. Jag säger att det inte _enbart_ handlar om det. Modellagret består ju förslagsvis av databärare. Detta är dock inget som hör hemma högre upp i hierarkin.

Hur man nu får "svart låda" att betyda "publika medlemmar" vet jag inte, men jag antar att jag får sluta prata tvärtemotspråk. Var i applikationslagret ska du behöva setta och getta "obehandlad" data?

Visa signatur

The power of GNU compiles you!
"Often statistics are used as a drunken man uses lampposts -- for support rather than illumination."

Permalänk
Avstängd

Inte högre upp i hirarkin? Så om du vill uppdatera vyn då mappar du om modelobjektet till nått annat som vyn får känna till?

Vitsen (en av dem) med modellobjekt är ju att alla känner till dem men vyn bara kan läsa, vill den ändra nått får den göra det via Facade-lagret...

Ett exempel från ett program jag skrivit:

edit: detta är från en powerpoint slide jag gjorde, följer inte UML...
edit2: swec skalar bilden, titta på den i fullskala...

Visa signatur
Permalänk
Citat:

Ursprungligen inskrivet av m0REc
Själv gillar jag inte detta med Java:

Klass 1 kräver två argument, två klasser. Den ena av denna klasserna kräver en klass som argument medan den andra kräver tre, dessa klasser kräver i sin tur två klasser som argument...

Kan du utveckla det där? Hur kommer det sig att det är så?

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av busta_rhyme
Kan du utveckla det där? Hur kommer det sig att det är så?

Var bara ett exempel. Applicerar inte alltid, har dock stött på ett par fall då det har varit ungefär så.

Visa signatur

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Permalänk
Citat:

Ursprungligen inskrivet av Chimaira
Ska man dra för och nackdelar så ska man väl helst ha något att jämföra mot. Finns många andra språk som har samma för/nackdelar men det mest utmärkande är imo:

+ Plattformsoberoende
+ Lätt

- Prestanda

Tidiga javaversionerna var väl riktigt slöa i kanten, men nu förtiden skall man inte klaga. 3-4 gånger långsammare än C++ är inte alls dåligt.

Citat:

Ursprungligen inskrivet av Chimaira
- Allt är inte objekt, går t.ex inte stoppa in en int i en arraylist.

För det första går det visst, men du måste deklarera som Integer (objekt) istället för int (primitiv). Tycker det är bra att man skiljer på primitiva typer och objekt. Allt annat känns väldigt konstigt i min värld. Som i C#. Har fortfarande inte fattat skillnaden mellan object och Object, string och String, int och Int32(!). För det verkar ju utmärkt att använda samma metoder på båda?

Java är iofs inte heller helt snyggt alla gånger. Arrays som inte är objekt men som ändå har length som "property" exv. Men tycker trots detta att Java är LÅNGT mer rent än tex C# (som jag just nu håller på att lära mig, burr).

Citat:

Ursprungligen inskrivet av Chimaira
- Kassa GUI-kontroller

Håller inte med. Gillar tex. swingbiblioteket bättre än windows forms, just för att det finns en tydligare separation mellan layout och innehåll. Där med inte sagt att swing är det ultimata GUI-biblioteket.

Citat:

Ursprungligen inskrivet av Chimaira
- Behövs ingen overload-operator för att överlagra funktioner. Tog mig en timme att fatta att det var en överlagrad funktion när programmet automatiskt visste att det skulle hamna i mousePressed() när man klickade på en musknapp.

Jaha, och på vilket sätt är detta en nackdel?

Citat:

Ursprungligen inskrivet av Chimaira
get_Player().get_Position().set_X(get_Player().get_Position().get_X() + (get_Player().get_Speed().get_X()*get_Timespan()))))))))))))))))()((()())))()))))));

Men detta beror väl mer på hemsk programmeringsteknik än språket i sig?

Citat:

Ursprungligen inskrivet av Chimaira
Det har redan tagits upp i tråden att både Java och .NET JIT-kompileras till maskinkod (för den processorarkitekturen man kör på) vid startup, detta är samma maskinkod som c++ skapar vid kompilieringen och därför är språken i sig i princip lika snabba.

Glöm att C# är i princip lika snabbt som C++. Dock är det något snabbare än Java. Men detta beror ju mer på att C# är väldigt hårt integrerat och optimerat för ett speciellt operativsystem. Java är som bekant plattformsoberoende. Än jämförelse J2SE vs. Monoimplementationen vore mer rättvis.

Visa signatur

Hör ropen skalla: Mer CO-OP åt oss alla!
Fanboys är kapitalismens svar på religiösa fundamentalister.
Upplysning für alle: www.thesciencenetwork.org www.transhumanism.org

Permalänk
Medlem

Måste säga att jag tycker om java väldigt mycket till mer avancerade web-applikationer.
Designpatterns som IoC och AOP gör underhållet och utveckling väldigt mycket enklare i mitt tycke (vist, de går att i viss utsträckning använda i andra språk också, men java har just nu ett försprång med väldigt välutvecklade frameworks för ändamålet).

Java som språk är helt okey att jobba med också, relativt lätt att skriva och underhålla applikationer skrivna i det vilket minskar kostnaderna i längden.

För RAD windows gui applikationer skulle jag nog dock välja c# framför java.

Permalänk
Medlem

För mycket skrivande för lite resultat. Lång utförlig syntax kanske är tydligare att läsa för de som är ny, men är en käpp i hjulet för mig när jag kodar.
Sedan att kombinera med C/C++-kod.. ajajaj så mycket syntax innan man får något gjort.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Micket
För mycket skrivande för lite resultat. Lång utförlig syntax kanske är tydligare att läsa för de som är ny, men är en käpp i hjulet för mig när jag kodar.
Sedan att kombinera med C/C++-kod.. ajajaj så mycket syntax innan man får något gjort.

Jag skulle nog våga påstå att java jämfört med C och C++ inte på något sätt skulle ha ett långt syntax?
Vad i språket anser du är långt och besvärligt?