NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
IT rekvalifikace s podporou uplatnění. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Avatar
Energy
Člen
Avatar
Energy:11.6.2012 7:35

V posledním znaku { mi to hází 2 chyby nevíte čím by to mohlo být?

 
Odpovědět
11.6.2012 7:35
Avatar
David Jančík
Vlastník
Avatar
Odpovídá na Energy
David Jančík:11.6.2012 7:39

Můžeš nám poslat zdrojový kód se zvýrazněným řádkem, kde je chyba?

Nahoru Odpovědět
11.6.2012 7:39
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Energy
Člen
Avatar
Energy:11.6.2012 7:45

Chybu už jsem vyřešil.

 
Nahoru Odpovědět
11.6.2012 7:45
Avatar
David Jančík
Vlastník
Avatar
Odpovídá na Energy
David Jančík:11.6.2012 7:52

Mohl by jsi sem alespoň poslat kód a říci jak jsi chybu vyřešil? Teď je toto vlákno naprosto zbytečné. Poděl se s uživateli, když někdo bude řešit stejný problém, tak jej odkážeš na toto vlákno...

Nahoru Odpovědět
11.6.2012 7:52
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Energy
Člen
Avatar
Energy:11.6.2012 13:56

Problém byl jen v umístění bloků {} měl jsem tam jeden který nikde nekončil.

 
Nahoru Odpovědět
11.6.2012 13:56
Avatar
David Jančík
Vlastník
Avatar
Odpovídá na Energy
David Jančík:11.6.2012 14:30

Když píšu v PHPčku a používám jen editor, taky se mi občas stane, že mi někde přebývá nebo chybí závorka.
Ale VS tohle krásně zobrazuje (dáš kurzor k závorce a on ukáže, kterou závorkou končí a kterou začíná) a vypisuje chyby, takže tady to hned odladíš :)

Nahoru Odpovědět
11.6.2012 14:30
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Jančík
Kit:11.6.2012 14:57

Hlídání párovosti závorek má dnes už asi většina používaných editorů. Například v Lispu by se bez toho už asi nedalo programovat.

Nahoru Odpovědět
11.6.2012 14:57
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:11.6.2012 15:18

David spíš myslel, že IDE ti zařve (protože tomu jazyku rozumí). Editor ti sice pomůže závorky párovat, ale sám tě neupozorní nebo jsem to alespoň neviděl.

Mimochodem, v čem píšeš PHP?

Nahoru Odpovědět
11.6.2012 15:18
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:11.6.2012 15:24

Píšu v editoru Vim. Umí po těch závorkách i skákat.

Nahoru Odpovědět
11.6.2012 15:24
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:11.6.2012 15:38

Já jsem si to myslel, že máš Vim :D Já teď zkoušel NetBeans, v PHP jsem v něm ještě nedělal, ale funguje to docela hezky.

Nahoru Odpovědět
11.6.2012 15:38
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:11.6.2012 17:15

Mně se na těchto IDE nelíbí, že jsou hrozně pomalá. Než se projekt otevře, trvá to celou věčnost. Také jsem na nich pochopil, proč někomu vadí i jen několik set souborů v jednom adresáři. Než se to nalistuje...

Z podobných důvodů jsem přestal používat jinak skvělý program Freemind.

Nahoru Odpovědět
11.6.2012 17:15
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:11.6.2012 17:29

Java no...

Nahoru Odpovědět
11.6.2012 17:29
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:11.6.2012 23:18

Jak jsem si ověřil, Java není pomalá. Pomalé jsou pouze chybně napsané aplikace. Když se dívám na aktuální programátorské poklesky, které se i vyučují, tak se ani nedivím.

Nahoru Odpovědět
11.6.2012 23:18
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:12.6.2012 8:01

Co máš konkrétně na mysli?

Nahoru Odpovědět
12.6.2012 8:01
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:12.6.2012 9:51

Ono je toho víc, ovšem začíná to jednořádkovými gettery a settery. Pokračuje to používáním nevhodných knihoven (například pro umocňování na druhou) a nedodělanými metodami uvnitř tříd. Prostě z objektů se dělá jen pouhé datové skladiště s chybnou delegací funkčnosti.

Zjednodušeně: Pokud je objektem pes, nechci vědět, jak štěká, ale chci, aby zaštěkal.

Nahoru Odpovědět
12.6.2012 9:51
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:12.6.2012 10:03

A jak bys řešil read-only zapouzdření bez getterů?

Nahoru Odpovědět
12.6.2012 10:03
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:12.6.2012 10:38

Jednoduše. Proč se ptám objektu na nějakou vlastnost? protože ji chci použít k nějakému účelu, do nějakého výrazu. Tak ten výraz dám jako další metodu do objektu. Tam už s tou proměnnou zacházím lokálně.

Vznikne vlastně getter, ale už to není ten primitivní zdržující getter. Objekt pak má mnohem lepší funkčnost, jeho volání je mnohem jednodušší a aplikace přehlednější.

To stejné se settery. Většinou si vystačím s parametry konstruktoru, ale typický příklad

objekt.setX(x);
objekt.setY(y);

nahrazuji kratším zápisem.

objekt.setXY(x,y);

Samozřejmě musím napsat další setter, ale ten mě tolik netrápí, jako neustálé volání dvou metod za sebou. Klidně tomu setteru svěřím i parsování stringu a další neošetřená data. Setter si je musí sám ošetřit, zpracovat a uložit do svých vnitřních struktur.

Zjednodušeně řečeno na jednom objektu nikdy nevolám 2 settery za sebou a ani 2 gettery za sebou. Neošetřuji vstupní data a ani dále nemodifikuji výstupní data. To vše je v kompetenci objektu.

Nahoru Odpovědět
12.6.2012 10:38
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:12.6.2012 10:49

To nepochybně, ale občas se getteru stejně nevyhneš. Nemůžeš např. stále modifikovat jeden objekt, protože ho chceš použít jiným způsobem, to bys porušoval komponentový koncept OOP. Objekt by měl být do určité míry univerzální.

Nahoru Odpovědět
12.6.2012 10:49
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:12.6.2012 10:59

Objekt není datové skladiště. Co si představuješ pod pojmem "univerzální"? Univerzální prostředek neexistuje a pokud se budeš snažit dělat univerzální objekty, vznikne paskvil.

Doplňováním dalších metod do objektu koncept OOP rozhodně neporušuji.

Nahoru Odpovědět
12.6.2012 10:59
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:12.6.2012 14:24

Objekt by se měl specializovat na jednu věc a tu umět dobře. Pokud ti rozumím správně, kdykoli budeš potřebovat např. nový vzorec, tak ho přidáš do toho objektu do metody. Tím pádem podle usecase stále ohýbáš objekt a to imho není správné. Objekt by měl být znovupoužitelný a mít jasně definovanou kompetenci, když chci něco nad jeho kompetenci, napíši si to mimo a použiji nějaký jeho getter. Jedině by to šlo zdědit, ale stejně mi připadá špatné zanášet do objektu logiku, která s ním přímo nesouvisí.
Např. si nemyslím, že do objektu autobus patří vzorec pro výpočet nákladů firmy na benzín, to raději udělám getter na spotřebu a třídu, která bude mít v kompetenci výpočty. Autobus jinak nebude znovupoužitelný, protože bude specializovaný na jednu konkrétní firmu. Nebudu ho moci použít v jiném projektu, kde třeba budou chtít počítat zas něco jiného. Jedině ho mohu zdědit, ale stejně mi přijde výhodné mít výpočetní logiku na jednom místě, ve třídě, která je za ni kompetentní.

Nahoru Odpovědět
12.6.2012 14:24
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:12.6.2012 14:44

Jenže když potřebuješ nový vzorec, stejně měníš usecase. Neohýbám, přidávám. Dávám do objektu jen logiku, která s ním přímo souvisí. Pokud je objektem obdélník, může mi poskytnout i svůj obvod a obsah. Totéž s kruhem. Nemusím zjišťovat typ objektu a přesto získám jeho obsah.

Argument znovupoužitelnosti mi zní úplně stejně jako předčasná optimalizace. Když se to přežene, vede to do pekel.

Nahoru Odpovědět
12.6.2012 14:44
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:12.6.2012 15:18

Budeš potřebovat spočítat, kolik se do obdelníku vejde jablek. Opravdu je za toto kompetentní obdelník?

Já si myslím, že pravda je někde uprostřed, ty extrémně přetěžuješ objekty.

Nahoru Odpovědět
12.6.2012 15:18
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:12.6.2012 17:09

Teď jsi mě dostal. Opravdu jsem to tak málem udělal, když jsem potřeboval zjistit vzdálenost dvou objektů. Nakonec jsem udělal kompromis ve stylu

vzdalenost(objekt1.getXY(),objekt2.getXY())

a to snad bude ta pravda někde uprostřed.

Nahoru Odpovědět
12.6.2012 17:09
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
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 23 zpráv z 23.