Psaní kodu, jak na to? – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Psaní kodu, jak na to? – Java – Fórum – Programujte.comPsaní kodu, jak na to? – Java – Fórum – Programujte.com

 

Darex
~ Anonymní uživatel
3 příspěvky
20. 1. 2014   #1
-
0
-

Zdravím,

Potřeboval bych se zeptat na pár věcí, učím se programovat v javě.

Dejme tomu že mám část kodu (převzáno z webu)

    public void buttonClicked(View button) {
    int age = getAge();
    if(age < 0){
    informAboutInvalidAge();
    } else{
    startAgeActivity(age);
    }
    }


a teď potřebuji implementovat metody getAge,
informAboutInvalidAge atd...

Jak vím, že to dělám všechno správně? Pracuji v eclipse.Kdyžtřeba v layoutu zadávám "android." vyhodí mi to další nabídku a díky ní vím, že jsem třeba nenapsal něco blbě.Protože mám možnost pak pokračovat "android.layout. bla bla bla"

Ale podle návodu podle kterého se snažím učit, ta implementace vypadala pak takto

    protected int getAge(){
    EditText ageInput = ((EditText)findViewById(R.id.edittext));
    String ageStr = ageInput.getText().toString();
    int age = -1;
    try{
    age = Integer.parseInt(ageStr);
    }catch(NumberFormatException e){
    }
    return age;
    }

Ztrácím se v té úpravě, když to píšu podle návodu, vím logicky co jak mám napsat.Ale dejme tomu, že bych toto navrhoval sám.Tak jak mám vědět, jakou má mít ten kód "konstrukci"? Jak vím, že tam má být třeba { závorka? Jako psat jednoduché řádky, které odkazují do strings, umím.Ale u těch složitějších nevím, jak to mám udělat bez návodu.

Hodila by se mi nějaká příručka, kde je třeba napsané, že když mám "něco." tak to má pak pokračovat buď "takto", nebo "jinak".A to "takto" pak má možnosti "toto" a "tadytoto".

Nahlásit jako SPAM
IP: 80.188.74.–
Matrix17
~ Anonymní uživatel
300 příspěvků
21. 1. 2014   #2
-
0
-

To, co hledáš asi neexistuje. Nejblíž tomu ale má naučení se syntaxe daného jazyka. Je to jako když se učíš cizí jazyk. Taky pro něj platí slovosled a nějaký zákonitosti (syntaxe, gramatika). U programovacích jazyků je to to samý.

Tj. musíš se naučit a zapamatovat jak se deklaruje proměnná, jak funkce. Z čeho se skládá blok podmínky...

Zbytek už je tvůřčí čínnost. TY musíš vymyslet, jak tyhle věci poskládat aby ses dostal k řešení svého problému. Případně využít nějaký knihovny abys pořád dokola neobjevoval kolo.

Nahlásit jako SPAM
IP: 83.240.19.–
Flowy0
Věrný člen
21. 1. 2014   #3
-
0
-

http://docs.oracle.com/javase/tutorial/java/index.html

pis si poznamky a potom to bude davat zmysel ... zaroven sa snaz dodrzovat pravidla pre velkosti pismen (hoci dane objekty mozes v eclipse rozlisit podla farby ale ak si zvyknes na velkosti tak to bude vsetko lahsie) ... btw ak nieco zacnes pisat (a je to logicky spravne) tak ti eclipse tie moznosti dokoncenia ukaze aj ked stlacis control+space

Nahlásit jako SPAM
IP: 95.102.43.–
https://github.com/Flowy
Kit+15
Guru
21. 1. 2014   #4
-
0
-

#1 Darex
Prostou úpravou do čitelnějšího kódu 

protected int getAge() {
    EditText ageInput = ((EditText)findViewById(R.id.edittext));
    String ageStr = ageInput.getText().toString();
    try {
        return Integer.parseInt(ageStr);
    } catch (NumberFormatException e) {
        return -1;
    }
}

vidím, že to psal někdo, kdo nerespektuje Démeteřin zákon a to poměrně hrubým způsobem. Najdi si jinou učebnici. Tohle s OOP nemá nic společného.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Flowy0
Věrný člen
21. 1. 2014   #5
-
0
-

#4 Kit
takto sa bezne pise kod pre android ... co presne sa ti nepaci?

Nahlásit jako SPAM
IP: 95.102.43.–
https://github.com/Flowy
Kit+15
Guru
21. 1. 2014   #6
-
0
-

#5 Flowy
Porušování zapouzdření objektů.

Také bych ocenil aspoň náznak DI.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Flowy0
Věrný člen
21. 1. 2014   #7
-
0
-

ziadne porusenie tam nevidim ... pouzije metodu pre najdenie daneho objektu a z tohto si potom zoberie text (tak isto cez metodu)

Nahlásit jako SPAM
IP: 95.102.43.–
https://github.com/Flowy
Kit+15
Guru
21. 1. 2014   #8
-
0
-

#7 Flowy
Správně by mu ta metoda pro hledání objektu měla dodat ten požadovaný text.

Pokud bych jen udělal další elementární úpravy těch původních metod, dostanu tohle:  

public void buttonClicked(View button) {
    try {
        startAgeActivity(getAge());
    } catch (NumberFormatException e) {
        informAboutInvalidAge(e);
    }
}

protected int getAge() throws NumberFormatException {
    EditText ageInput = ((EditText)findViewById(R.id.edittext));
    String ageStr = ageInput.getText().toString();
    return Integer.parseInt(ageStr);
}

Proč to všichni píší tak nesmyslně složitě? Všimni si, že mi úplně zmizela proměnná "age" i její konstanta "-1" a také if...

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Flowy0
Věrný člen
21. 1. 2014   #9
-
0
-

ta metoda findView funguje tak ze prejde cele resources a najde tam objekt s id edittext ... tak isto moze mat nazov edittext hocico ine (definuje sa to cez xml) ... preto tam musel volat co presne chce lebo metoda moze vratit rozne druhy objektov (neviem presne aka podskupina to je)

to co si spravil je chytre ale vazne chces aby getAge vracalo numberformatexception? ak dostanem od metody getage takuto ex tak vobec nebudem tusit o co ide ... a prave toto porusuje zapuzdrenost - neriesi si to to co ma ale povinnosti predava dalej

ak uz to chces takto zjednodusovat tak by som namiesto neuplneho skusania parseInt radsej vratil string ktory dostanem od editboxu a nech si uz s tym stringom niekto poradi ... kazdopadne taketo predavanie povinnosti neni pekne

co je DI?

Nahlásit jako SPAM
IP: 95.102.43.–
https://github.com/Flowy
Kit+15
Guru
21. 1. 2014   #10
-
0
-

#9 Flowy
co je DI?

Nevidím tam, odkud vzal objekt R. A protože je to vytrženo z kontextu, tak vůbec netuším, zda je to instanční objekt nebo co.

Ano, vážně chci, aby getAge vracelo NumberFormatException. Vždyť s ním dál pracuje. Proč se místo přehledné výjimky vrací nesmyslná hodnota -1 ? To má být věk? Věk přece nemůže být záporný. Takové číslo tam vůbec nepatří.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Flowy0
Věrný člen
21. 1. 2014   #11
-
0
-

R su resources v androide ... zoznam objektov vytvorenych na obrazovke

ano suhlasim ze pouzitie -1 je znacne obmedzujuce ... ale tak isto pouzivat vynimku pre bezne fungovanie sa mi nezda spravne ... v tomto pripade by tvoje riesenie davalo zmysel kedze exception tam uz je priamo zakomponovany ale stale to neni idealne riesenie

Nahlásit jako SPAM
IP: 95.102.43.–
https://github.com/Flowy
Kit+15
Guru
21. 1. 2014   #12
-
0
-

#11 Flowy
Když má někdo nesmyslný věk, tak to není běžné fungování, ale výjimka. Proto tam výjimka patří. Nikde není stanovena, že výjimka musí být ošetřena tam, kde vznikla. Naopak je to zpravidla nežádoucí a je mnohem výhodnější hromadně ošetřit výjimku nějakého celku.

Suplovat výjimky nějakými konstantami "-1" je úplný nesmysl.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Flowy0
Věrný člen
21. 1. 2014   #13
-
0
-

nemyslim si ze povodny kod bol uplne zly ... v tomto pripade sa pouzitie vynimky priamo ponuka ale pouzivanie exception v beznom programovani neni uplne idealne (viazanost na to ze sa nebude menit ... hladanie v docs co presne znamena - v tomto pripade by si to ani nezistil ak by si nevedel co presne robi dana metoda - porusenie zapuzdrenosti) ... a hlavne v tomto pripade ak sa len preposle tak dana vynimka nedava zmysel pre pozadovanu hodnotu cize by som ju minimalne premenoval ... ale asi radsej pouzil Integer a v pripade exception vratil null ... no a toto by sa dalo zjednodusit vratenim nezmyselnej hodnoty ako napr -1 ...

Nahlásit jako SPAM
IP: 95.102.43.–
https://github.com/Flowy
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 28 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý