Miért rossz a változékonyság?

Pontszám: 4,5/5 ( 70 szavazat )

A válasz az, hogy a megváltoztathatatlan típusok biztonságosabbak a hibáktól, könnyebben érthetők és készebbek a változtatásra. A változékonyság megnehezíti a program működésének megértését , és sokkal nehezebb a szerződések betartatását.

A változtatható objektumok rosszak?

Végül, a változtatható objektumok gyilkosok egyidejű helyzetekben . Amikor különböző szálakból ér el egy változtatható objektumot, meg kell küzdenie a zárolással. Ez csökkenti az átviteli sebességet, és jelentősen megnehezíti a kód karbantartását.

Miért rossz a közös állam?

A megosztott változtatható állapot a következőképpen működik: Ha két vagy több fél megváltoztathatja ugyanazokat az adatokat (változók, objektumok stb.) . És ha az életük átfedi egymást. Ekkor fennáll annak a veszélye, hogy az egyik fél módosításai megakadályozzák a többi felet a megfelelő működésben.

Miért jó a változhatatlanság?

A csökkentett memóriahasználat mellett a megváltoztathatatlanság lehetővé teszi az alkalmazás optimalizálását a referencia- és értékegyenlőség használatával . Így nagyon könnyen megállapítható, hogy változott-e valami. Például egy reakciókomponens állapotváltozása.

Mik a megváltoztathatatlanság hátrányai?

A megváltoztathatatlan osztályok egyetlen valódi hátránya az , hogy minden egyes értékhez külön objektumot igényelnek . Ezen objektumok létrehozása költséges lehet, különösen, ha nagyok. Tegyük fel például, hogy van egy millió bites BigInteger, és meg akarja változtatni annak alacsony rendű bitjét: BigInteger moby = ...; moby = moby.

Washington Irving: A szellem vőlegénye

37 kapcsolódó kérdés található

Létrehozhatunk változtathatatlan osztályt Java-ban?

A változtathatatlan osztály a java-ban azt jelenti, hogy az objektum létrehozása után nem tudjuk megváltoztatni a tartalmát. A Java nyelvben az összes burkoló osztály (például Integer, Boolean, Byte, Short) és a String osztály megváltoztathatatlan. Létrehozhatjuk saját változtathatatlan osztályunkat is . ... Az osztályt véglegesnek kell nyilvánítani, hogy ne lehessen gyermekosztályokat létrehozni.

Mik a megváltoztathatatlanság előnyei és hátrányai?

A megváltoztathatatlan objektumok előnyei:
  • Egy megváltoztathatatlan objektum pontosan egy állapotban marad, abban az állapotban, amelyben létrehozták. ...
  • A megváltoztathatatlan osztályokat könnyebb megtervezni, megvalósítani és használni, mint a változtatható osztályokat.
  • A megváltoztathatatlan objektumok jó Map kulcsok és Set elemek, mivel ezek általában nem változnak a létrehozás után.

Melyik a jobb StringBuffer vagy StringBuilder?

Következtetés: A String objektumai megváltoztathatatlanok, a StringBuffer és a StringBuilder objektumai pedig változtathatók. A StringBuffer és a StringBuilder hasonlóak, de a StringBuilder gyorsabb és előnyben részesített a StringBufferrel szemben az egyszálú programokhoz. Ha szálbiztonságra van szükség, akkor StringBuffert használunk.

Miért van szükségünk megváltoztathatatlan osztályokra?

A megváltoztathatatlan objektumok szálbiztosak, így nem lesz szinkronizálási probléma . A megváltoztathatatlan objektumok jó Map kulcsok és Set elemek, mivel ezek általában nem változnak a létrehozás után. A változatlanság megkönnyíti a program párhuzamosítását, mivel nincsenek ütközések az objektumok között.

Minden tárgynak változhatatlannak kell lennie?

Minden alkalommal, amikor hozzáadunk egy mezőt egy osztályhoz, alapértelmezés szerint változtathatatlanná (vagyis véglegessé) kell tennünk . Ha van ok arra, hogy változtathatóvá tegyük, az rendben van, de a szükségtelen mutabilitás növeli annak esélyét, hogy hibákat és karbantarthatósági problémákat okozzon az állapot akaratlan megváltoztatása.

Az állapot megváltoztathatatlan a reakcióban?

A reakcióállapotot megváltoztathatatlannak kell tekinteni . A React dokumentumokból: Soha ne mutasd ezt. állapotot közvetlenül, mivel a setState() utólagos meghívása helyettesítheti az Ön által létrehozott mutációt.

Hogyan kerülheti el a közös állapotot?

A funkcionális programozás elkerüli a megosztott állapotot – ehelyett megváltoztathatatlan adatstruktúrákra és tiszta számításokra hagyatkozik, hogy új adatokat származtasson a meglévő adatokból . További részletekért arról, hogy a funkcionális szoftver hogyan kezelheti az alkalmazás állapotát, lásd: „10 tipp a jobb redux architektúrához”.

Hogyan akadályozhatod meg a mutációt?

Kerülje el a változékonyságot és a mellékhatásokat
  1. Valóban szükséged van egy változóra? ...
  2. Használja a lehető legszigorúbb hatókört. ...
  3. Kerülje az objektumállapot és a globális állapot módosítását, ha nem szükséges. ...
  4. Az olyan egyszerű értékekhez, mint a dátum/idő, használjon megváltoztathatatlan értékobjektumokat. ...
  5. Használjon pontos és értelmes elnevezéseket, ne csak i , j , k vagy temp .

A változtatható gyakorlat rossz?

Nem ; a változtatható kulcsszó egy jó dolog. A mutable segítségével elválasztható egy objektum megfigyelhető állapota az objektum belső tartalmától.

Az állandók megváltoztathatatlanok?

A const használata csak azt jelenti, hogy a változó mindig ugyanarra az objektumra vagy primitív értékre hivatkozik, mivel ez a hivatkozás nem változhat. Maga a hivatkozás megváltoztathatatlan , de a változó által birtokolt érték nem válik megváltoztathatatlanná.

Meg tudod változtatni egy megváltoztathatatlan objektum értékeit?

A megváltoztathatatlan objektumok olyan objektumok, amelyek nem változnak . Te készíted őket, aztán nem tudod megváltoztatni. Ehelyett, ha módosítani szeretne egy megváltoztathatatlan objektumot, klónoznia kell azt, és módosítania kell a klónt a létrehozás során. Egy Java megváltoztathatatlan objektum minden mezőjének belső, privát végső mezőnek kell lennie.

Mi a különbség a megváltoztathatatlan és a végleges között?

A final azt jelenti, hogy az objektum hivatkozását nem módosíthatja úgy, hogy egy másik hivatkozásra vagy objektumra mutasson, de az állapotát továbbra is módosíthatja (pl. setter metódusokkal). Míg a változtathatatlan azt jelenti , hogy az objektum tényleges értéke nem változtatható meg, de módosíthatja a hivatkozását egy másikra.

Miért változtathatatlanok a wrapper osztályok?

A wrapper osztályok megváltoztathatatlanok , mert nincs értelme módosítani . Tekintsük a következő kódot: int n = 5; n=6; Integer N = new Integer(n); Eleinte egyértelműnek tűnik, hogy megváltoztathatja-e N értékét, ugyanúgy, mint n értékét.

Hogyan törhetjük meg a megváltoztathatatlan osztályt?

Részletesebb válasz: Igen, a sorozatosítás megtörheti a megváltoztathatatlanságot. Jól néz ki. Megváltoztathatatlan (inicializálás után nem módosítható az eleje és vége), elegáns, kicsi, szálbiztos stb. Ne feledje, hogy a szerializálás az objektumok létrehozásának egy másik módja (és nem konstruktorokat használ).

Miért gyorsabb a StringBuilder?

A karakterlánc megváltoztathatatlan, míg a StringBuffer és a StringBuilder változtatható osztályok. A StringBuffer szálbiztos és szinkronizált, míg a StringBuilder nem. Ezért a StringBuilder gyorsabb, mint a StringBuffer .

Miért szálbiztos a StringBuffer?

A StringBuffer szálbiztos, ami azt jelenti, hogy szinkronizált metódusaik vannak a hozzáférés szabályozására, így egyszerre csak egy szál férhet hozzá a StringBuffer objektum szinkronizált kódjához.

Mikor használjam a StringBuffert?

A StringBuffer osztály a módosítható karakterek megjelenítésére szolgál. A két osztály közötti jelentős teljesítménybeli különbség az, hogy a StringBuffer gyorsabb, mint a String, amikor egyszerű összefűzéseket hajt végre. A karakterlánc-manipulációs kódban a karakterláncokat rutinszerűen összefűzik.

Miért változtathatatlanok a karakterláncok a Java-ban?

A karakterlánc megváltoztathatatlan a Java-ban a biztonság, a szinkronizálás és a párhuzamosság, a gyorsítótárazás és az osztálybetöltés miatt . A húr véglegessé tételének az az oka, hogy megsemmisítjük a változhatatlanságot, és ne engedjük, hogy mások meghosszabbítsák. A String objektumok gyorsítótárban vannak a String készletben, és ez megváltoztathatatlanná teszi a karakterláncot.

Miért van szükségünk megváltoztathatatlan osztályra a Java-ban?

A megváltoztathatatlan objektumok egyszerűek, és ingyenes szálbiztonságot nyújtanak . A megváltoztathatatlan példányok gyorsítótárazhatók, így csökkentve annak szükségességét, hogy minden alkalommal ugyanazt az objektumot kell létrehozni. A megváltoztathatatlan objektumok jó jelöltek a térképkulcsokhoz és -készletekhez.

A megváltoztathatatlan objektumok szálai biztonságosak?

Leegyszerűsítve, egy osztálypéldány akkor változtathatatlan, ha a belső állapota nem módosítható a felépítés után. A MessageService objektumok gyakorlatilag megváltoztathatatlanok, mivel állapota nem változhat a felépítés után. Ezért cérnabiztos . ... Így a megváltoztathatatlanság csak egy másik módja a szálbiztonság elérésének.