Nejlepší odpověď
Procedurální abstrakce je, když víme, co metoda nebo procedura dělá nebo co chceme dělat, ale nevíme jak to dělá.
Právě teď zadávám tuto odpověď v Quora a když kliknu na Odeslat, očekávám, že se objeví v mém zdroji. Vím, že existují metody, které moji odpověď přijmou, někam ji uloží. Ale opravdu netuším o tom, jak je implementováno.
Pokud to aplikujeme na Javu, použijete spoustu metod z různých balíčků Java. Například pokud chci vytisknout podřetězec řetězce
String str=”Hello world”
String s1=str.substring(0,6);
Nyní ve výše uvedeném kódu chci, aby mi metoda podřetězce vrátila část z řetězce od začátku do 6. znaku. Ale jak metoda Subring implementuje tuto funkcionalitu, opravdu o ní nemám ponětí, ani to pro mě není důležité.
Odpověď
abstrakce je obecný koncept, který pokrývá mnoho různých věcí .
HTML je základní jazyk, a pokud potřebujete vývoj webových aplikací, musíte se ho naučit, pokud neplánujete vytvářet stránky pro všeobecné použití s velmi malou funkční schopností.
V určitém okamžiku časem se budete muset podívat na HTML a zjistit, co vaše abstrakce udělala špatně.
abstrakce (obecně):
- Dělají věci pomaleji, abstrakční vrstvy mají tendenci mít náklady na rychlost zpracování.
- Pro mnoho to nemusí být velký problém, ale může se to začít rychle sčítat.
- Jednou jsem přepsal aplikaci napsanou v Ruby, která byla taková abstrahoval, že načtení seznamu trvalo hodiny (doslova), přepsal jsem to v Javě a proměnil jsem to asi na 3 minuty, přidal jsem některé klíče do databáze a na pár sekund jsem to snížil.
- A PHP stránka, jejíž načtení trvalo 2 minuty, po jeho přepsání do PHP to trvalo 3–4 sekundy, potíže s databází to snížily na 2 sekundy. (90\% doby načítání byl rámec poté, což znamená špatný rámec).
- Společný faktor, významně snižuji úroveň abstrakce. Python je skriptovaný jazyk, jako je PHP, což znamená, že musí pokaždé znovu vytvářet abstrakční vrstvy, což může být nákladné.
- může ladění a sledování věcí ztížit. Abstrakce obecně usnadňuje sledování jednotky (tříd nebo metod), ale je těžší vidět, jak se váží k celku (Integrace), protože takové chyby mají tendenci se pohybovat a najít je těžší.
- plus, chyby jsou méně pravděpodobné. I když mají tendenci být působivější, když jsou nalezeny.
- Má tendenci zrychlovat vývoj (do určité míry), avšak příliš mnoho může vývoj zpomalit, těžké rámce jako Zend framework (PHP), Spring (Java) jsou skvělými příklady těžkopádných rámců, které jsou v zásadě nadměrně navrženy.
Doufám, že vám to dá nějakou představu.