NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Vakos
Tvůrce
Avatar
Vakos:17.2.2018 12:36

Ahoj, chtěl bych se zeptat jak se to s používáním statických metod a instancí?

Jedná se mi například o třídu na zmenšení obrázků a následné uložení. Mají být metody v této třídě static, nebo vytvořit instanci objektu a pracovat s tím. Co je lepší?

Budu rád, když mi odpoví někdo zkušený. Rozdíl ve volání znám, ale není mi úplně jasné kdy použít jaký způsob.

Díky.

Odpovědět
17.2.2018 12:36
"Jediný způsob, jak dělat skvělou práci, je milovat to, co děláte. Pokud jste to ještě nenašli, hledejte dál. Ne...
Avatar
Odpovídá na Vakos
Michal Štěpánek:17.2.2018 12:50

Statiku používej jen v nejnutnějších případech. Skoro všechno se dá vyřešit bez statiky.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
17.2.2018 12:50
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Roman
Člen
Avatar
Odpovídá na Vakos
Roman:17.2.2018 12:59

Ja pouzivam jen v pripade "rychlych" nastroju kde neni zapotrebi vytvaret celou instanci. Napriklad mam program pro praci s jednim HW, ze ktereho doluju data pomoci SNMP protokolu. Trida implementuje SNMP + OID. Kdyz potrebuju dostat napriklad teplotu tak je zbytecne vytvaret instanci tridy - zavolam jen statikckou metodu.

 
Nahoru Odpovědět
17.2.2018 12:59
Avatar
Odpovídá na Vakos
Marian Benčat:17.2.2018 15:07

Neposlouchej nikoho, kdo ti bude tvrdit bez podrobnosti, ze nemáš používat statiku, nebo ji mas používat pouze v nejnutnejsich případech, takový člověk je pravdepodobne svázány OOP dogmaty, což je v tak skvělém multiparadigma­tickem jazyku jako je c# velká škoda.

Statické metody jsou dobré, umožňují ti využít naplno funkcionální přístup tam kde se hodí a je to vesměs jediná možnost jak udělat skutečně správně a efektivnine doménový DAL. Statické metody ti obzvláště ve formě extension methods dávají ohromnou moc.

Editováno 17.2.2018 15:08
Nahoru Odpovědět
17.2.2018 15:07
Totalitní admini..
Avatar
Odpovídá na Marian Benčat
Michal Štěpánek:17.2.2018 15:58

A právě proto, že statika dává ohromnou moc, by se měla využívat jen tam, kde je to nutné. Při neopatrném použití se programátor dostane do "sjaček" poměrně rychle a dost blbě se pak z toho bude dostávat...

Editováno 17.2.2018 15:58
Nahoru Odpovědět
17.2.2018 15:58
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Petr Čech
Tvůrce
Avatar
Petr Čech:17.2.2018 16:07

Statika je skvělá třeba na helper metody, třeba když potřebuješ v celé aplikaci specificky formátovat datum a pod.
Myslím, že obecně se dá říct, že se dá v pohodě používat na menší pomocné celky bez závislostí.
Rozhodně není dobrý nápad ji používat na struktury, co uchovávají nějaká data.

Nahoru Odpovědět
17.2.2018 16:07
the cake is a lie
Avatar
Odpovídá na Petr Čech
Marian Benčat:17.2.2018 18:10

Bože, jak můžete říkat takové hlouposti. Hrajete si tu na SW architekty a DDD a stejně 95% vas ma v projektu Servisy, genericky repositare a service-locator UOW z anemickeho modelu... Tak jen pro informaci, právě ty metody z tech vašich service, jsou vhodné pro to existovat jako nějaká statická metoda. Třeba klidně jako extension metoda.

Editováno 17.2.2018 18:10
Nahoru Odpovědět
17.2.2018 18:10
Totalitní admini..
Avatar
Marian Benčat:17.2.2018 18:21

Mimochodem jeste jedna věc.. V clean codeu jdou třeba ještě tak daleko, ze mutace jsou jen statické metody, proto aby to byly pure metody..

Nahoru Odpovědět
17.2.2018 18:21
Totalitní admini..
Avatar
Vakos
Tvůrce
Avatar
Odpovídá na Marian Benčat
Vakos:17.2.2018 21:01

Jak bys tedy řešil zmenšování obrázků a jeho ukládání, nebo třeba že zadaných hodnot vypočítání nějaké číslo. Metody by byly statické, nebo objektové?

Nahoru Odpovědět
17.2.2018 21:01
"Jediný způsob, jak dělat skvělou práci, je milovat to, co děláte. Pokud jste to ještě nenašli, hledejte dál. Ne...
Avatar
Odpovídá na Vakos
Marian Benčat:17.2.2018 21:10

Neočekáváš, že ti dám univerzální odpověď, že ne?

Třeba pokud by šlo o nějaký SW zaměřený na matematiku, třeba nějaký renderer, 2D/3D grafika, tak bych šáhnul po operátoru..

U matematických operací je to jednoduché, protože máš VŽDY 2 immutable hodnoty a vzniká ti 3. nová immutable hodnota.. nic bys nikdy neměl měnit, takže nějaká statická metoda je u matematických operací poměrně jasná volba a je jedno jestli je to klasická statická metoda, nebo třeba operátor.

klasické použití.-. vynásobení nějakého vektoru číslem atd..

C# má statické metody nad Math třeba pro různé matematické výpočty...

Pro zmenšování, zvětšování obrázků, opět zase nějaké statické metody na třídě Image2D atd.

Ono.. statické metodě předáš instanci v prvním parametru,,.. instanční metodě, se předá ta reference na instanci v prvním hidden parametru také.


je to rozhodně případ od případu a nikdo ti nedá jasný návod "používej tento přístup, nebo tento". neomezuj se, pokud nemusíš.

Nahoru Odpovědět
17.2.2018 21:10
Totalitní admini..
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.