Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Obhajoba - test

735 views

Published on

Published in: Education
  • Be the first to comment

  • Be the first to like this

Obhajoba - test

  1. 1. Libor Fischmeistr ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE FAKULTA ELEKTROTECHNICKÁ
  2. 2. „TRANSFORMACE“  Nalézt často dělané chyby  Oprava špatně (nehezky) a neoptimálně napsaného kódu  Implementovat transformační pravidla za účelem zjednodušení a zpřehlednění kódu psaného v Javě  Naučit začínající programátory, že lze něco naprogramovat lépe 25.6.2009 Zjednodušení kódu v Javě s využitím transformačního systému Armada 2
  3. 3.  Nejde o chyby ovlivňující funkčnost aplikace  Nemusí vždy být chybné  Mohou používat více prostředků než je nutné  Příklad: správný kód, ale lze napsat lépe String getResult(){ if(isMethod()) return "Valid"; else return "Invalid"; String getResult(){ } return isMethod() ? "Valid" : "Invalid"; } 25.6.2009 Zjednodušení kódu v Javě s využitím transformačního systému Armada 3
  4. 4.  Zbytečné deklarace proměnných  Špatně: integer void setHeight(int a){ int b = a; globalHeight = b + 5; }  Správně: integer void setHeight(int a){ globalHeight = a + 5; } 25.6.2009 Zjednodušení kódu v Javě s využitím transformačního systému Armada 4
  5. 5.  Vytváření již existujících objektů znovu a znovu (typicky Scanner) … System.out.print(„Zadejte velikost strany čtverce: “); int size = new Scanner(System.in).nextInt(); … System.out.print(„Zadejte poloměr kružnice: “); int radius = new Scanner(System.in).nextInt(); … 25.6.2009 Zjednodušení kódu v Javě s využitím transformačního systému Armada 5
  6. 6.  Špatné porovnávání Stringů String a = "fel"; ... if("fel" == a) { ... String a = "fel"; ... if("fel".equals(a)) { ... 25.6.2009 Zjednodušení kódu v Javě s využitím transformačního systému Armada 6
  7. 7.  Jazyk TXL  Specializovaný na transformace  Tvorba gramatiky i pravidel  Transformační nástroj FreeTXL  Umožňuje aplikovat transformační pravidla na zdrojový kód 25.6.2009 Zjednodušení kódu v Javě s využitím transformačního systému Armada 7
  8. 8.  Oprava zbytečně složitě implementované metody s jednoduchým tělem  Prohřešky programátora  Nová deklarace již existující lokální proměnné  Přiřazení proměnné na samostatném řádku 25.6.2009 Zjednodušení kódu v Javě s využitím transformačního systému Armada 8
  9. 9. Špatně zapsaný kód: double getNumber(int multiplier){ double x; x = 5 * multiplier; return x; } Správně napsané: double getNumber(int multiplier){ return 5 * multiplier; } 25.6.2009 Zjednodušení kódu v Javě s využitím transformačního systému Armada 9
  10. 10. Implementace pravidla v jazyce TXL: rule SimpleReturn replace [repeat declaration_or_statement] Variable [local_variable_declaration] Statement1 [statement] Statement2 [statement] deconstruct Variable _ [repeat modifier] _ [type_specifier] Declarator [variable_declarators] ’; deconstruct Declarator ID1 [id] deconstruct Statement1 Unary [unary_expression] ’= Assignment [assignment_expression] ’; deconstruct Unary ID2 [id] deconstruct Statement2 ’return Expression [expression] ’; deconstruct Expression ID3 [id] where ID1 [= ID2 ] where ID1 [= ID3 ] by ’return Assignment ’; end rule 25.6.2009 Zjednodušení kódu v Javě s využitím transformačního systému Armada 10
  11. 11. TRANSFORMACE 25.6.2009 Zjednodušení kódu v Javě s využitím transformačního systému Armada 11
  12. 12. Podařilo se  naimplementovat pravidla pro většinu nalezených chyb  nalézt příčinu vzniku chyb  vytvořit bázi pro další práce v oblasti opravy kódu 25.6.2009 Zjednodušení kódu v Javě s využitím transformačního systému Armada 12

×