- A hozzászóláshoz be kell jelentkezni
- 3998 megtekintés
Hozzászólások
Egeszen addig, ameddig az adott pattern/konvencio nem eleg rossz ahhoz, hogy ne hasznaljam.
Miert? Mert (jobb esetben) kozismertek, ismertek az elonyok/hatranyok, es ne basszunk mar ki a masikkal rambokoderkedessel.
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
Közismertek... sajnos inkább kevésbé, mint kellene. Rengetegszer találkoztam olyasmivel, hogy a készítők ismertek patterneket a nevük alapján, csak sajnos nem pont arra használták őket, ahogyan pl. a GoF-ban is szerepel, innentől kezdve jobb lett volna, ha nem annak hívják. Igen, korábban én is elkövettem ilyesmit.
Másik kedvencem, amikor a kód tekintélyes része nevesített pattern implementációkból áll, a lényeg meg nem látszik tőle.
Pl. nemrég volt szerencsém nézegetni az Apache Jackrabbit forrását, és amikor a factory factory-ját is factory-val állította elő, na ott dobta le az agyam az ékszíjat.
- A hozzászóláshoz be kell jelentkezni
Meg sokat lehet fejlodni:
https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition
- A hozzászóláshoz be kell jelentkezni
Hihi, jocucc, de van benne egy csomo ilyensmi, amitol agyfaszt kapok:
if (Babamfasza.faszababa(valami)) {
return true;
} else {
return false;
}
helyette:
return Babamfasza.faszababa(valami);
Meg nincsenek hozza valodi unit tesztek, csak egy integracios teszt, ami sokmindent atmozgat. ;^(
----------------------
"ONE OF THESE DAYS I'M GOING TO CUT YOU INTO LITTLE PIECES!!!$E$%#$#%^*^"
--> YouTube csatornám
- A hozzászóláshoz be kell jelentkezni
nem feltetlen ekvivalens a ketto:
"An if-then-else statement is executed by first evaluating the Expression. If the result is of type Boolean, it is subject to unboxing conversion (§5.1.8). If evaluation of the Expression or the subsequent unboxing conversion (if any) completes abruptly for some reason, then the if-then-else statement completes abruptly for the same reason. "
http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.9
- A hozzászóláshoz be kell jelentkezni
Tudsz konkret peldat olyan esetre, ahol az en valtozatom mas eredmenyhez vezet? a "completes abruptly for some reason"-ra nekem csak a null ertek unboxolasa ugrik be, de az ugyanoda vezet, NPE.
----------------------
"ONE OF THESE DAYS I'M GOING TO CUT YOU INTO LITTLE PIECES!!!$E$%#$#%^*^"
--> YouTube csatornám
- A hozzászóláshoz be kell jelentkezni
NPE kiküszöbölhető:
http://en.wikipedia.org/wiki/Design_by_contract
Szerk:
Pl. null-t nem adunk vissza, helyette valami értelmes exception-t dobunk, stb.
- A hozzászóláshoz be kell jelentkezni
Ez hogy jon ide?
----------------------
"ONE OF THESE DAYS I'M GOING TO CUT YOU INTO LITTLE PIECES!!!$E$%#$#%^*^"
--> YouTube csatornám
- A hozzászóláshoz be kell jelentkezni
miert nem adunk vissza null-t? es mi van ha valaki megis szeretne null-t hasznalni kulonosen, ha tipusos null-rol van szo? miert kerulnek bele megis a programozasi nyelvekbe? van fogalmad mivel jar az egyes programozasi nyelvekben a kivetelkezeles?
- A hozzászóláshoz be kell jelentkezni
Just use Option.
- A hozzászóláshoz be kell jelentkezni
ennek is megvan a helye, de ez sem univerzalis, van ahol nem elfogadhato az option type a plusz gc koltsegek miatt (pl.: numerikus kod kernel)
- A hozzászóláshoz be kell jelentkezni
java-ban és c#-ban olcsó, a többit meg lesz@rom :D:D:D
- A hozzászóláshoz be kell jelentkezni
Tenyleg? Ugy mint pl.:
http://www.codeproject.com/Articles/11265/Performance-implications-of-E…
- A hozzászóláshoz be kell jelentkezni
A conclusion-t is elolvastad? A sima string manipulációs pár soros függvények kivételével mindenhol érdemes exception-t dobni.
És ez ráadásul 2005-ös cikk, majdnem 10 éves, ahhoz képest a .net valószínűleg még gyorsabb lett. Ha egy nyelv normálisan
támogat exception kezelést, akkor egyértelműen érdemes használni. Ha pedig performance probléma van, akkor azt MÉRJÜK aztán
OPTIMALIZÁLJUK. Csak amíg 30 eurós órabért számláznak az IT-ben, addig a mérnökóra az ami bazi drága.
- A hozzászóláshoz be kell jelentkezni
OCaml-ben valoban nem koltseges az exception, igy eloszerettel hasznaljak, akar control-flow muveletekre is.
.NET-ben, es Java-ban a stack trace osszegyujtese draga muvelet, es esetenkent az objektum letrehozasa sem elfogadhato (pl.: numerikus kod kernel), de ugyes megoldasokkal ezek a muveletek sokszor megsporolhatok (pl.: javaban java.lang.Throwable::fillInStackTrace override eseten).
Kapcsolatos jvm opcio:
"The compiler in the server VM now provides correct stack backtraces for all "cold" built-in exceptions. For performance purposes, when such an exception is thrown a few times, the method may be recompiled. After recompilation, the compiler may choose a faster tactic using preallocated exceptions that do not provide a stack trace. To disable completely the use of preallocated exceptions, use this new flag:
-XX:-OmitStackTraceInFastThrow."
.NET 4.5-be sem veletlenul kerult bele a ExceptionDispatchInfo.
https://connect.microsoft.com/VisualStudio/feedback/details/633822/allo…
Event-Based Programming without Inversion of Control Philipp Haller and Martin Odersky:
- A hozzászóláshoz be kell jelentkezni
Az, hogy valami drága (megint csak mihez képest drága, egy i++-hoz nyilván), nem jelent semmit. A probléma akkor van, ha egy lassú művelet sokszor lefut. Exception viszont normális esetben nem fut le gyakran. Természetesen lehet olyan corner-case-t találni, amikor ez gondot okozhat, de a tipikus java fejlesztések 99.999999%-ban nem az exception kezelés fog bármiféle problémát okozni.
Cserébe ott van a normális hibakezelésbeni nyereség, amivel mérnökórák 100-ait lehet megspórolni.
Viszont ez a numerikus kód kernel, ez érdekelne... ez micsoda?
- A hozzászóláshoz be kell jelentkezni
Az hogy mi szamit hibanak, feladata valogatja. Nem minden esetben a rendszer teljes "ateresztokepessege" a celfuggveny, egyre gyakrabban az alacsony es mindemellett garantalt maximalis valaszido szamit (wcet). Egy stack backtrace kibanyaszasa pedig eleg ritkan fog garantalt valaszidon belul tortenni. A numerikus kod kernel a program legmagasabb frekvenciaval vegrehajtott resze(i).
Az esetek nagy reszeben jo megoldas az exceptionkezeles, vagy meginkabb az option type hasznalata, de egyik sem univerzalis, mindenre jo megoldas.
- A hozzászóláshoz be kell jelentkezni
Egy GC alapú rendszernél hogyan tudsz garantált válaszidőt biztosítani? Ahhoz realtime rendszer kellene, nem?
- A hozzászóláshoz be kell jelentkezni
soft realtime megoldasnal el lehet erni az alacsony kesleltetest "allocationless programming" technikaval, igy nincs szukseg gc-re. A memoria elore lefoglalva, aztan manualisan van kezelve, a treadmill-hez hasonlo hatassal. A hard real-time mar kemenyebb dio, de arra is szuletett mar par megoldas.
Henry G. Baker: The Treadmill: Real-Time Garbage Collection Without Motion Sickness:
http://www.pipeline.com/~hbaker1/NoMotionGC.html
- A hozzászóláshoz be kell jelentkezni
Realtime tulajdonságot továbbra sem értem hogy lehet biztositani egy nem RT oprendszer és VM alatt...
- A hozzászóláshoz be kell jelentkezni
realtime tulajdonsagot sehogy, ellenben a kiszamithato es alacsony kesleltetest egeszen jol lehet kozeliteni
van egyebkent real-time es safety-critical java is, es nem veletlen a scopedmemory sem benne
- A hozzászóláshoz be kell jelentkezni
Igen, ezt már nézegettem,de szerintem a java projekteknek ez megint egy nagyon kicsinyke része.
- A hozzászóláshoz be kell jelentkezni
csak egy pelda volt, nem csak java programozasi nyelv letezik, a real-time "tulajdonsagot" pedig sokszor nem abszolut ido ertelemben hasznaljak, hanem algoritmus szintjen nyujtjak a "garanciakat'. nyilvan messze nem tokeletes, de ki lehet probalni ki mit tud garantalni. Az igazi hard real-time egeszen mas alapokon es celfuggvennyel mukodik, pl.:
http://www.jopdesign.com/publications.html
- A hozzászóláshoz be kell jelentkezni
Azt esetleg elmondanád hogy milyen témában dolgoztok, ahol ilyen problémák jönnek elő?
- A hozzászóláshoz be kell jelentkezni
mindenhol elojon ahol "tomeg" is van (adat, felhasznalok, esemenyek, stb), de kesleltetesre vonatkozo merheto sla-t mar nagyon kevesen szandekoznak nyujtani
- A hozzászóláshoz be kell jelentkezni
--
--
The Net is indeed vast and infinite...
http://gablog.eu
- A hozzászóláshoz be kell jelentkezni
Szép megoldás, csak sajnos nem túl jól dokumentált.
- A hozzászóláshoz be kell jelentkezni
"
...része nevesített pattern implementációkból áll, a lényeg meg nem látszik tőle.
"
Like, hanyok mar ettol.
- A hozzászóláshoz be kell jelentkezni
hehe, gombhoz a kabatot kicsit :-)
--
NetBSD - Simplicity is prerequisite for reliability
- A hozzászóláshoz be kell jelentkezni
Amíg nem megy az olvashatóság / karbantarthatóság rovására.
a patterneknek / konvencióknak nem épp az a lényege / értelme h könnyebben / egységesebben olvasható / karbantartható legyen / ne legyen?
~~~~~~~~
deb http://deb.metaltux.tk/ wheezy yazzy repack
- A hozzászóláshoz be kell jelentkezni
vagy meginkabb programozasi nyelvi hianyossag elfedesere szolgal?
"The Expression Problem is a new name for an old problem.[2][3] The goal is to define a datatype by cases, where one can add new cases to the datatype and new functions over the datatype, without recompiling existing code, and while retaining static type safety (e.g., no casts)."
- A hozzászóláshoz be kell jelentkezni
egy reszuk igen
--
NetBSD - Simplicity is prerequisite for reliability
- A hozzászóláshoz be kell jelentkezni
"The Expression Problem is a new name for an old problem. The goal is to define a datatype by cases, where one can add new cases to the datatype and new functions over the datatype, without recompiling existing code, and while retaining static type safety (e.g., no casts)." - Philip Wadler
http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Laemmel-A…
- A hozzászóláshoz be kell jelentkezni
De, csak egyesek szerint ez tobb kod (mert megprobal felkesziteni a kovetkezo problemara is a pattern), es akkor jajuristen mi van itt...
Amugy annak, aki nem ismeri a patternt es, hogy miert kell neha 1-2 plusz absztrakcios reteget bevezetni, annak elsore tenyleg olvashatatlanabb. Csak erre nem az a megoldas, hogy egy ronda hackel kikeruljuk a problemat, mondvan "igy is mukodik", hanem a patterneket kellene inkabb megtanitani/a konvencioknak kell utananezni normalisan.
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
David Wheeler: "All problems in computer science can be solved by another level of indirection, except of course for the problem of too many indirections."
- A hozzászóláshoz be kell jelentkezni
Ezek a nyavajak nem csak az olyan biszbaszokhoz kellenek , mint amilyen pl. a C++?
--
Python, mert csak
- A hozzászóláshoz be kell jelentkezni
Errm, nem.
--
Ki oda vágyik, hol száll a galamb, elszalasztja a kincset itt alant:
()=()
('Y') Blog | @hron84
C . C Üzemeltető macik
()_()
- A hozzászóláshoz be kell jelentkezni
Tény, hogy legtöbbször az OOP patternekről megy a diskurzus, de általában (na jó, jobb esetben) minden API és nyelv hoz magával valamilyen konvenciógyűjteményt, hogy hogyan használd.
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
A SOLID idetartozik? :)
- A hozzászóláshoz be kell jelentkezni
(x) Egyeb: egyik valasz sem igazan talalo. Patterneket akkor hasznalom, amikor szukseg van ra, os ott, ahol szukseg van ra. A konvenciokat pedig szinte mindig, kiveva ha nyomos ok van a konvenciotol valo elteresre.
- A hozzászóláshoz be kell jelentkezni
ott a pont.
- A hozzászóláshoz be kell jelentkezni
+1
Még annyi, hogy az évek alatt az elhelyezett logok mennyisége nőtt meg egy nagyságrendet, ami az üzemeltethetőséghez nagy segítség és már hobbi projektben sem csinálnám máshogy.
- A hozzászóláshoz be kell jelentkezni
+1
nem tudtam jelölni, ez van a legközelebb hozzám
- A hozzászóláshoz be kell jelentkezni
+1, annyival kiegészítve, hogy és természetesen azokat a konvenciókat követem, amit az adott projekt csapata megkövetel, nem azokat, amiket én üdvösnek vizionálok az aktuális héten
- A hozzászóláshoz be kell jelentkezni
Hat, ez csak akkor lehet igaz, ha a projektbol egyaltalan kiderulnek ezek az infok. A kodformazast en is igyekszem igazitani, de sokszor nincs erdemi tampont a tobbire.
--
Ki oda vágyik, hol száll a galamb, elszalasztja a kincset itt alant:
()=()
('Y') Blog | @hron84
C . C Üzemeltető macik
()_()
- A hozzászóláshoz be kell jelentkezni
"Amíg nem megy az olvashatóság / karbantarthatóság rovására" - patternek pont ezeknek a javitasara szolgalnak, hogy mehet ezeknek a rovasara?
- A hozzászóláshoz be kell jelentkezni
Pl. feleslegesen használt pattern.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
subs
--
blogom
- A hozzászóláshoz be kell jelentkezni
Mindenki patternekben programozik, mert az agyunk programozás közben is mintákban működik. Elég ritka, hogy valaki valami alapvetően új és egyedi megoldással jöjjön elő. (Persze sokan azt hiszik, pedig csak az egójuk látja olyan szépnek a saját bűzös kódjukat.)
Az a kérdés persze h ki fekteti le a patterneket és hány van belőle. Cowboy script kiddie is patternekkel tolja, meg a lyukkártya lyukasztó is.
--
The Net is indeed vast and infinite...
http://gablog.eu
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Ez amúgy úgy hülyeség ahogy van, hacsak nem szimpla CRUD alkalmazásod van. Ha bejön bármilyen business logic, ott már kell a layerelés.
- A hozzászóláshoz be kell jelentkezni
De azert hatarokat kell szabni.
Kulonben meg, a legtobb alkalmazas csak egy tulbonyolitott CRUD app... #troll
--
Ki oda vágyik, hol száll a galamb, elszalasztja a kincset itt alant:
()=()
('Y') Blog | @hron84
C . C Üzemeltető macik
()_()
- A hozzászóláshoz be kell jelentkezni
Határok kellenek, de az nyilvánvaló, hiszen KISS :)
Egyébként a CRUD szerintem egyre kevésbé igaz a webappok elterjedésével, de egy átlag portál valószínleg még mindig egy "túlbonyolított CRUD app" :)
- A hozzászóláshoz be kell jelentkezni
Addig tarom amíg nem lesz túl közeli a leadási határidő.
- A hozzászóláshoz be kell jelentkezni