Legjobb gyakorlat módosítására gyűjtemény attribútumok funkcionálisan




Kíváncsi vagyok, hogyan megy a végrehajtó egy osztály, amely engedelmeskedik a szigorú funkcionális programozási szabályokat.


Például, ha van egy osztály, amely két attribútuma, és van egy módszer, amely módosítja azokat, hogyan megyek csinálja ezt? Az attribútumok lenne magán lok, és az eljárás vissza kell térnie egy új példányt az attribútum minden alkalommal módosítja azt. Ez rendben van, csak én szeretnék tartani benne, vagyis azt kell oly módon, hogy állítsa be a mex.


Mi lenne a legjobb módja annak, hogy ezt, hogy nem kell több ezer esetben mondjuk egy gyűjteményt, lebeg a memória?
Ez az én véleményem, de; csakúgy, mint az ügy osztály igen, azt végre egy `copy`módszert a fajta, hogy az osztály, hogy a módosítás lehetővé, miközben a megváltoztathatatlan, de létezik néhány esetben, hogy nem tudok segíteni, hogy azt változékony; például, ha valami várható, hogy a másolási művelet túl nagy és lassú az osztály; Szeretem, ha az osztály annyi gyakran módosított tagjai. És ne aggódj ezer esetben lebeg a memóriában, mert automatikusan GC'ed, így a több tényleges problémát az idő költsége másol az osztály példányok. Kérem, mondja meg, véleményem szerint valahogy rossz :)
Attól függ, mit értesz „új kódot”. 


Ezek nem igazán lényeges osztályok újonnan fejlődő, így ebben az esetben nem, akkor valószínűleg nem kell alkalmazni. 


De még egy teljesen új projekt, akkor is szükség van, hogy módosítsa a meglévő osztály, hogy nem lehet változtatni más módon (VCL osztály, harmadik fél osztály, stb.). Ebben az esetben persze, azt mondanám, hogy menjen előre.


Ők nem rossz, és a magukat. Mint a legtöbb más dolog, csak meg kell érteni, hogyan működnek, és használja őket a megfelelő kontextusban. Feltételezem a grafikus felület alatt Windows Forms App-ot értesz.  

Beviteli mező neve legyen textBox1, ekkor a textBox1\_TextChanged metódusában (ami minden értékváltozásnál meghívódik) ezt egy try-catch szerkezettel meglehet oldani:  

(a try-catch szerkezet először megpróbálja végrehajtani az első blokkban lévő kódot, majd bármilyen hiba esetén átugrik a catchben lévő blokkra, jelen esetben itt hibát idéz elő, ha szöveget próbálunk int-té konvertálni ugye, ezért át fog ugrani a catch alatt lévő blokkra)  

<https://pastebin.com/Yy8fG1ZU> Azt lenne egy kicsit vonakodik használni beágyazott osztályok itt. Mi van, ha létrehozott egy absztrakt osztályok számára egy „multimédiás driver” kezelni a back-end cucc (igásló), és egy külön osztályt a front-end munkát? A front-end az osztály egy pointert / hivatkozás egy megvalósított illesztőprogram osztály (a megfelelő média típusa és helyzete), és végezze el az absztrakt műveleteket az igásló szerkezetét.


Az én filozófiám az lenne, hogy megy előre, és két struktúra elérhetővé teszi az ügyfelek egy polírozott módon, csak azzal a feltételezéssel lennének használhatók tandem.


Azt hivatkozás olyasmi, mint egy [QTextDocument](http://qt-project.org/doc/qt-4.8/qtextdocument.html) Qt. Azt, hogy közvetlen interfész a csupasz fém adatkezelés, de át a hatóság mentén egy objektum, mint egy QTextEdit tenni a manipuláció. Nagyon izgalmas feladat, gyakorlatilag csak le kell gépelni a feladat által táblázatba rendezett feltételeket.   

<https://pastebin.com/GYkdGaQK>  

  

A függvény első két sorában 3 feltétel van:  

- kisebb-e 1-nél  

- nagyobb-e 16-nál  

- a váltó egész szám-e  

Ha akármelyik a három közül teljesül, a függvény "NEM TUDOM"-ot ad vissza. Ezeket azért írtam ki előre, mert egyszerűbb őket itt ellenőrizni, mint az if-eken belül.  

A 2. szinten az if-ek 'return "NEM TUDOM"'-mal végződnek, ez azért van, ha esetleg egyik évszaknak sem felelt volna meg az evszak változó. Hasonlóan az egész függvény is ugyanezzel végződik, ha a nem változóval esett volna meg ez. Ezzel tudom le a kisbetűs és ékezet nélküli ellenőrzést. Lehetne azt is legelőre, de ahhoz használni kell a uniodedata libraryt (vagy a unidecode-ot, de azt le is kell tölteni, mivel nem az stdlib része)  

Az elenőrzések azért kellenek, mert hiába mondom meg a függvénynek az első sorban, hogy a nem változóban str típust várjon, ez csak útmutatás a használónak, és figyelmen kívül hagyja a program. Szerintem így sokkal követhetőbb az egész. Amúgy lehet hogy hosszú táv után ezeket is kell frissíteni, de nem vagyok benne biztos, csak egy megjegyzés volt. :) Ez tényleg attól függ, hogy az a fajta kívánt adatokat hozza vissza. Mivel a DataSet (valójában) csak egy gyűjtemény DataTable tárgyak, akkor vissza több különálló adatsor egyetlen, így könnyebben kezelhető, tárgy. 


Teljesítmény-bölcs, akkor nagyobb a valószínűsége, hogy a hatékonyság A nem optimalizált lekérdezéseket, mint a „rossz” választás NET konstrukcióba. Legalábbis tapasztalatom. en torolnek mindent, majd tudatosan, figyelve telepitenem ujra az egesz hobelebancot. elolvasnam mindennek a leirasat, elolvasnam minden ismeretlen szonak a magyarazatat, majd ha mindennel tisztaban vagyok, akkor az is kitiszutlna, hogy mit milyen sorrendben es hogyan lehet felrakni. a particiokat e… kette kell valasztani a dolgokat. kerdes elsore az, hogy az alkalmazas eloterben van-e vagy nincs.

ha eloterben van, akkor az ertesitesre adott reakcio a futo app feladata (azaz a rendszer semmilyen jelzest, buborekot, hangot nem produkal), tehat hangjelzes es/vagy a rezges abban az esetben lesz, … Monoton nő akkor, ha nagyobb x-ekhez nem tartozik kisebb függvényérték. Egyforma lehet.  

Szigorúan monoton nő, ha nagyobb x-ekhez nagyobb függvényérték tartozik. Egyforma nem lehet.  

  

Tehát szig.mon.nő: ha `x\_2 > x\_1, " akkor " f(x\_2) > f(x\_1)`  

Szig.mon.csökken: ha `x\_2 > x\_1, " akkor " f(x\_2) < f(x\_1)`  

  

Aztán mon.nő: ha `x\_2 > x\_1, " akkor " f(x\_2) ≥ f(x\_1)`  

Mon.csökken: ha `x\_2 > x\_1, " akkor " f(x\_2) ≤ f(x\_1)` Pontosan! Nekem érthetetlen, hogy ennyi energiát fektetnek (folyamatosan) valamibe amivel inkább csak rosszabb lesz a felület, és a megszokott dolgok meg eltűnnek (pl. nemrég még minden lecke teljesítése után lehetett látni, hogy mennyi van a következő szintig, most meg ahhoz be kell menni az adatlapra stb.). Régebben, amikor a megjegyzések az adott feladat felett jelentek meg, akkor nekem csak 1-2 másodperc kellett ehhez, most meg, hogy új oldalt nyit (ez már jó pár hónapja így van), azóta ez baromi lassú (nálam kb. 15 mp), bár tudom, hogy a külön oldal megnyitásának is van előnye (pl. nyitva lehet hagyni). Ez utóbbit pl. lehetne orvosolni azzal, hogy mindenki személyre szólóan beállíthatná hogyan működjön neki.