Online IDE pro Javu s možností debugování

dustin

Re:Online IDE pro Javu s možností debugování
« Odpověď #300 kdy: 08. 08. 2016, 10:41:33 »
Díky, to je přesně ono. A pokud mají potomci T různé parametry konstruktoru, stačilo by pár podmínek T instanceof ... a volat konkrétní konstruktory potomků bez reflexe. Není to samozřejmě objektově čisté, ale v některých případech to má smysl.


gamer

Re:Online IDE pro Javu s možností debugování
« Odpověď #301 kdy: 08. 08. 2016, 11:17:34 »
Díky, to je přesně ono. A pokud mají potomci T různé parametry konstruktoru, stačilo by pár podmínek T instanceof ... a volat konkrétní konstruktory potomků bez reflexe. Není to samozřejmě objektově čisté, ale v některých případech to má smysl.

To je další věc, která nejde v Jave rozumně udělat, přitom na to stačí variadic template:
Kód: [Vybrat]
#include <memory>
#include <string>

struct Factory
{
    template<typename T, typename... Args>
    static std::shared_ptr<T> create(const Args&... args)
    {
        return std::make_shared<T>(args...);
    }
};

struct A
{
    A(int a) {}
};

struct B
{
    B(const std::string& str, double a) {}
};

int main()
{
    auto a = Factory::create<A>(1);
    auto b = Factory::create<B>("hello", 2.1);
    return 0;
}

pietro

Re:Online IDE pro Javu s možností debugování
« Odpověď #302 kdy: 08. 08. 2016, 13:01:29 »
C# rulez. Kto jeste dnes pouziva javu?  :o

Tuxik

  • *****
  • 1 473
    • Zobrazit profil
    • E-mail
Re:Online IDE pro Javu s možností debugování
« Odpověď #303 kdy: 08. 08. 2016, 13:22:48 »
C# rulez. Kto jeste dnes pouziva javu?  :o
No to je rada nad zlato... z bláta do louže :D

gl

Re:Online IDE pro Javu s možností debugování
« Odpověď #304 kdy: 08. 08. 2016, 13:28:44 »
C# rulez. Kto jeste dnes pouziva javu?  :o

Javaman se aspoň snaží argumentovat.


Re:Online IDE pro Javu s možností debugování
« Odpověď #305 kdy: 08. 08. 2016, 13:31:54 »
C# rulez. Kto jeste dnes pouziva javu?  :o

Javaman se aspoň snaží argumentovat.

 ;D  ;D  ;D
Tak ten je dobrej, ten si někam napíšu.


Tuxik

  • *****
  • 1 473
    • Zobrazit profil
    • E-mail
Re:Online IDE pro Javu s možností debugování
« Odpověď #307 kdy: 08. 08. 2016, 13:37:43 »
Tady je argumentu hromada:
http://programmers.stackexchange.com/questions/125712/for-what-reasons-should-i-choose-c-over-java-and-c
A já nějak pořád žil v domnění, že použitý programovací jazyk se odvíjí i od toho, co potřebuji dělat...

Kit

Re:Online IDE pro Javu s možností debugování
« Odpověď #308 kdy: 08. 08. 2016, 13:50:27 »
Tady je argumentu hromada:
http://programmers.stackexchange.com/questions/125712/for-what-reasons-should-i-choose-c-over-java-and-c

Neřekl bych, že to zrovna vyznívá pro C#. Properties jsou zlo. Reflexí se snažíme vystříhat, neboť znepřehledňují aplikaci. Natož v generikách. Nepochopil jsem, jakou výhodu představuje using před import. Výjimky má Java na lepší úrovni, protože pokud ji chci nechat propadnout, musím ji deklarovat. To snižuje množství chyb. Integrace s Windows je naopak škodlivá.

Jak je vidět, psal to zastánce C# a tudíž nemá smysl se tím déle zabývat.

pietro

Re:Online IDE pro Javu s možností debugování
« Odpověď #309 kdy: 08. 08. 2016, 14:43:54 »
no jako jasne, java nemusi byt zla. jenomze na windows bych jedoznacne doporucil C#. Proc Javu, kdyz C# je pro windows to nejlepsi.

PS: Proc jsou property zlo???  :o

Kit

Re:Online IDE pro Javu s možností debugování
« Odpověď #310 kdy: 08. 08. 2016, 15:54:50 »
no jako jasne, java nemusi byt zla. jenomze na windows bych jedoznacne doporucil C#. Proc Javu, kdyz C# je pro windows to nejlepsi.

PS: Proc jsou property zlo???  :o

Zde se věnujeme Windows spíše okrajově, takže je snad jasné, že ani C# tu nebude mít dost prostoru.

Property svádí programátory k tomu, aby nepracoval s objekty jako celky, ale aby manipuloval s jednotlivými atributy. Tento přístup značně omezuje práci s polymorfismem, který je jedním ze základů OOP. Navíc pokud někdo pracuje s property, umisťuje své algoritmy mimo objekt, čímž porušuje jeho zapouzdření, které je dalším pilířem OOP.

Java z důvodu čistoty jazyka property nezavedla, místo toho si však programátoři vymysleli accesory, které dokonce protlačili i do svých oblíbených IDE. Pro IDE je to jednoduchou záležitostí, pro aplikace pohromou. Sám programuji bez property, bez accesorů a výhradně s privátními atributy (kromě přepravek). Jakákoli myšlenka na vybočení z těchto kolejí je pro mne varovným signálem, že je někde chyba v návrhu.

pietro

Re:Online IDE pro Javu s možností debugování
« Odpověď #311 kdy: 08. 08. 2016, 16:00:25 »
jak by jste teda resili takove databinding? napr. vo Windows Presentation Foundation jsou properties pro databinding nezbytnou soucasti.

Kit

Re:Online IDE pro Javu s možností debugování
« Odpověď #312 kdy: 08. 08. 2016, 16:34:52 »
jak by jste teda resili takove databinding? napr. vo Windows Presentation Foundation jsou properties pro databinding nezbytnou soucasti.

Databinding řeším pomocí již uvedeného vzoru Messenger. Objekty totiž mezi sebou komunikují prostřednictvím zpráv a právě tento vzor vystihuje podstatu výměny dat mezi nimi. Properties vlastně jen vpašovávají tuto přepravku dovnitř některého z objektů a tím porušují několik dalších principů OOP.

V Javě se takový Messenger musí napsat, ale například v PHP či Pythonu je již součástí jazyka a velmi snadno se používá. Tuším, že v Haskellu tuto funkci plní některé z monád, což přispívá k eleganci toho jazyka.

Samozřejmě pokud některá systémová třída vyžaduje databinding, musím si na to napsat patřičnou proxy, se kterou pak už komunikuji standardním způsobem.

Anonymous

Re:Online IDE pro Javu s možností debugování
« Odpověď #313 kdy: 08. 08. 2016, 18:20:18 »
Čím přesně property v C# porušují OOP? Jde jen o syntaktický cukr a přeloženy jsou jako standartní get/set funkce.

Kit

Re:Online IDE pro Javu s možností debugování
« Odpověď #314 kdy: 08. 08. 2016, 18:29:27 »
Čím přesně property v C# porušují OOP? Jde jen o syntaktický cukr a přeloženy jsou jako standartní get/set funkce.

Property porušují zapouzdření objektu. Programátor jejich prostřednictvím manipuluje s atributy objektu mimo ten objekt místo toho, aby ty algoritmy byly zapouzdřeny uvnitř toho objektu společně s daty.

Metody get/set nejsou standardní, do OOP nepatří.