NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Gascripe

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:26.9.2012 21:40

Zvenku hezké, chválím věci jako kontrolu jeslti neuzavírám neuložený skript atd. Zevnitř nějaké rozdělení do tříd, kód jsem důkladně nezkoumal. Mícháš zobrazení a logiku, všechny věci jako práce se soubory a výpočty by mělo být v jiných třídách, než věci jako showdialog atd. Podívej se na tutoriály tady.

Určitě by se hodilo zvýraznění textu, David Jančík tu psal teď tutoriál - http://www.itnetwork.cz/…highlighteru

Odpovědět
26.9.2012 21:40
New kid back on the block with a R.I.P
Avatar
matesax
Tvůrce
Avatar
Odpovídá na David Hartinger
matesax:26.9.2012 22:04

Já bych rád - dřív jsem se s tím piplal, ale problém je s použitím. Tedy nemám přístup k prvkům, do kterých chci vkládat data. Tedy musel bych psát návratové metody - a kód by tím byl mnohem delší - kdyby se jednalo o výpočet čísla algoritmem, bez problému hodím algiritmus do sólo třídy, vložím parametr při zavolání a co mi vyflusne někam uložím,... Ale když potřebuji nastavit určitou hodnotu Textboxu (cíleně pro daný element) - a mám to na 3 řádky... Možná se mýlím, tak mě pouč - jak to udělat jednoduše...

Co by jsi chtěl zvýrazňovat?

Přikládám novou verzi...

 
Odpovědět
26.9.2012 22:04
Avatar
matesax
Tvůrce
Avatar
Odpovídá na David Hartinger
matesax:26.9.2012 22:11

Pardon - už chápu to s tím zvýrazňováním - vzal jsem to jako hotovou věc - že jsem to vyřešil tím editorem, kde si lze hrát skoro jako ve wordu - rád se do toho pustím... :)

 
Odpovědět
26.9.2012 22:11
Avatar
matesax
Tvůrce
Avatar
Odpovídá na David Hartinger
matesax:27.9.2012 6:16

Toto jsou nejčastější funkce:

https://gist.github.com/3792112

Tedy jak píši nastavování hodnot elementům formu - to snad ani nejde udělat jako objekt...

 
Odpovědět
27.9.2012 6:16
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na matesax
David Hartinger:27.9.2012 12:41

Těší mě, že máš zájem se zlepšit :)

První věc, teď jsem si teprve všiml toho VAR. Proboha, tohle slouží k něčemu úplně jinému, C# je silně typovaný jazyk, typy používej, tohle je opravdu špatné.

Podívejme se třeba na funkci EditSectionName:

private void EditSectionName()
{
    if (SectionViewer.SelectedNode != null)
    {
        var doc = Interaction.InputBox("Zadej nové jméno sekce.", "Change Name Dialog", Path.GetFileName(actualPath));
        var di = new DirectoryInfo(actualPath);

        if (!String.IsNullOrEmpty(doc))
        {
            var act = di.Parent.FullName + @"\" + doc;

            if (act != actualPath + @"\" + doc)
                di.MoveTo(NoExistName(act));
        }

        SectionViewerActualize();
    }
}

Pracuješ tam s nějakou vizuální komponentou, předpokládám, že tohle je v kódu formu. To je správně. Ale tato část:

var di = new DirectoryInfo(actualPath);

if (!String.IsNullOrEmpty(doc))
{
    var act = di.Parent.FullName + @"\" + doc;

    if (act != actualPath + @"\" + doc)
        di.MoveTo(NoExistName(act));
}

je již přeci logika. Ta bu se neměla míchat se vzhledovou částí aplikace. Uděláš si nějakou třídu, moc nevím jak to přesně funguje, ale tady děláš něco se sekcemi, tak třeba SectionManager? Tam dáš tuto metodu (ty var jsem dal pryč):

public function rename(string doc)
// btw proč se jmenuje nové jméno sekce doc?
{
    DirectoryInfo di = new DirectoryInfo(actualPath);

    if (!String.IsNullOrEmpty(doc))
    {
        string act = di.Parent.FullName + @"\" + doc;

        if (act != actualPath + @"\" + doc)
            di.MoveTo(NoExistName(act));
    }
}

Actualpath se asi používá častěji, bude to prostě atribut té třídy SectionManager. No a teď tohle zavoláš v té zobrazovací části:

private void EditSectionName()
{
    if (SectionViewer.SelectedNode != null)
    {
        string doc = Interaction.InputBox("Zadej nové jméno sekce.", "Change Name Dialog", Path.GetFileName(actualPath));
        sectionManager.rename(doc);
        SectionViewerActualize();
    }
}

Všimni si, že zobrazovací část říká co se má dělat, ale již tam není jak se to má dělat. Logika je schována v další třídě, kam patří.

Odpovědět
27.9.2012 12:41
New kid back on the block with a R.I.P
Avatar
matesax
Tvůrce
Avatar
Odpovídá na David Hartinger
matesax:27.9.2012 13:38

Pokud vím, tak var doplňuje typ podle pravé části - a je pro zkrácení zápisu - tedy proč bych jej neměl využívat?

Ale to je to o čem mluvím - používáš tam SectionViewer­.SelectedNode != null, ale v jiné třídě přeci nebudu k elementu SectionViewer mít přístup... Takže bych buď musel dělat mosty, nebo jak jsem psal, ale tak, či jiným způsobem to propojit - bude to pro mě náročněší...

Třeba zde bych musel udělat "get set" pro SectionViewer, ...

Editováno 27.9.2012 13:38
 
Odpovědět
27.9.2012 13:38
Avatar
matesax
Tvůrce
Avatar
Odpovídá na David Hartinger
matesax:27.9.2012 13:51

Jo takhlen - už tě chápu - no ale i tak - kód tím bude delší... Uvidím sám - jdu na to...

Jo a doc se to jemnuje - jakože dočasný...

Editováno 27.9.2012 13:55
 
Odpovědět
27.9.2012 13:51
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na matesax
David Hartinger:27.9.2012 14:09

Ne, var není ke zkrácení zápisu, tato konstrukce tam byla dodána pro úplně jiné účely, konkrétně pro zjednodušení datových typů při práci s databází. Takhle jen jdeš proti návrhu jazyka.

Odpovědět
27.9.2012 14:09
New kid back on the block with a R.I.P
Avatar
matesax
Tvůrce
Avatar
Odpovídá na David Hartinger
matesax:27.9.2012 15:15

Hotovo... Bude ti vadit projít si to? - mohu poslat jen cílený kód...

 
Odpovědět
27.9.2012 15:15
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na matesax
David Hartinger:27.9.2012 15:29

Pošli sem tu část :)

Odpovědět
27.9.2012 15:29
New kid back on the block with a R.I.P
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 21.