SlideShare a Scribd company logo
1 of 12
Download to read offline
Libor Fischmeistr
ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE
FAKULTA ELEKTROTECHNICKÁ
„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
   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
    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
    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
    Š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
    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
    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
Š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
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
TRANSFORMACE



25.6.2009        Zjednodušení kódu v Javě s využitím transformačního systému Armada   11
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

More Related Content

Recently uploaded

Project Restart 2024: Lenka Auerová - Budování holistické organizace
Project Restart 2024: Lenka Auerová - Budování holistické organizaceProject Restart 2024: Lenka Auerová - Budování holistické organizace
Project Restart 2024: Lenka Auerová - Budování holistické organizaceTaste
 
Project Restart 2024: Jiří Langr - Mytologie projektů
Project Restart 2024: Jiří Langr - Mytologie projektůProject Restart 2024: Jiří Langr - Mytologie projektů
Project Restart 2024: Jiří Langr - Mytologie projektůTaste
 
Project Restart 2024: Pavel Minář - Procesy pro lepší projekty
Project Restart 2024: Pavel Minář - Procesy pro lepší projektyProject Restart 2024: Pavel Minář - Procesy pro lepší projekty
Project Restart 2024: Pavel Minář - Procesy pro lepší projektyTaste
 
ZWT - co byste měli vědět - studijní program KIZI VŠE
ZWT - co byste měli vědět - studijní program KIZI VŠEZWT - co byste měli vědět - studijní program KIZI VŠE
ZWT - co byste měli vědět - studijní program KIZI VŠEStanislav Vojíř
 
Project Restart 2024: Hana Březinová - Psychologické tipy pro práci s lidmi n...
Project Restart 2024: Hana Březinová - Psychologické tipy pro práci s lidmi n...Project Restart 2024: Hana Březinová - Psychologické tipy pro práci s lidmi n...
Project Restart 2024: Hana Březinová - Psychologické tipy pro práci s lidmi n...Taste
 
Vybrané předměty vyučované KIZI pro studenty informatických oborů FIS VŠE
Vybrané předměty vyučované KIZI pro studenty informatických oborů FIS VŠEVybrané předměty vyučované KIZI pro studenty informatických oborů FIS VŠE
Vybrané předměty vyučované KIZI pro studenty informatických oborů FIS VŠEStanislav Vojíř
 
E-mail Date #2: Jan Krčmář - Retence a RFM: jak pomocí e-mailingu navýšit hod...
E-mail Date #2: Jan Krčmář - Retence a RFM: jak pomocí e-mailingu navýšit hod...E-mail Date #2: Jan Krčmář - Retence a RFM: jak pomocí e-mailingu navýšit hod...
E-mail Date #2: Jan Krčmář - Retence a RFM: jak pomocí e-mailingu navýšit hod...Taste
 
Project Restart 2024: Jan Řezáč - Nahradí AI projektové manažery?
Project Restart 2024: Jan Řezáč - Nahradí AI projektové manažery?Project Restart 2024: Jan Řezáč - Nahradí AI projektové manažery?
Project Restart 2024: Jan Řezáč - Nahradí AI projektové manažery?Taste
 
Project Restart 2024: Karel Smutný - Specializace patří do 19. století
Project Restart 2024: Karel Smutný - Specializace patří do 19. stoletíProject Restart 2024: Karel Smutný - Specializace patří do 19. století
Project Restart 2024: Karel Smutný - Specializace patří do 19. stoletíTaste
 
Project Restart 2024: Martin Vasquez - Inteligence je schopnost reagovat na z...
Project Restart 2024: Martin Vasquez - Inteligence je schopnost reagovat na z...Project Restart 2024: Martin Vasquez - Inteligence je schopnost reagovat na z...
Project Restart 2024: Martin Vasquez - Inteligence je schopnost reagovat na z...Taste
 

Recently uploaded (10)

Project Restart 2024: Lenka Auerová - Budování holistické organizace
Project Restart 2024: Lenka Auerová - Budování holistické organizaceProject Restart 2024: Lenka Auerová - Budování holistické organizace
Project Restart 2024: Lenka Auerová - Budování holistické organizace
 
Project Restart 2024: Jiří Langr - Mytologie projektů
Project Restart 2024: Jiří Langr - Mytologie projektůProject Restart 2024: Jiří Langr - Mytologie projektů
Project Restart 2024: Jiří Langr - Mytologie projektů
 
Project Restart 2024: Pavel Minář - Procesy pro lepší projekty
Project Restart 2024: Pavel Minář - Procesy pro lepší projektyProject Restart 2024: Pavel Minář - Procesy pro lepší projekty
Project Restart 2024: Pavel Minář - Procesy pro lepší projekty
 
ZWT - co byste měli vědět - studijní program KIZI VŠE
ZWT - co byste měli vědět - studijní program KIZI VŠEZWT - co byste měli vědět - studijní program KIZI VŠE
ZWT - co byste měli vědět - studijní program KIZI VŠE
 
Project Restart 2024: Hana Březinová - Psychologické tipy pro práci s lidmi n...
Project Restart 2024: Hana Březinová - Psychologické tipy pro práci s lidmi n...Project Restart 2024: Hana Březinová - Psychologické tipy pro práci s lidmi n...
Project Restart 2024: Hana Březinová - Psychologické tipy pro práci s lidmi n...
 
Vybrané předměty vyučované KIZI pro studenty informatických oborů FIS VŠE
Vybrané předměty vyučované KIZI pro studenty informatických oborů FIS VŠEVybrané předměty vyučované KIZI pro studenty informatických oborů FIS VŠE
Vybrané předměty vyučované KIZI pro studenty informatických oborů FIS VŠE
 
E-mail Date #2: Jan Krčmář - Retence a RFM: jak pomocí e-mailingu navýšit hod...
E-mail Date #2: Jan Krčmář - Retence a RFM: jak pomocí e-mailingu navýšit hod...E-mail Date #2: Jan Krčmář - Retence a RFM: jak pomocí e-mailingu navýšit hod...
E-mail Date #2: Jan Krčmář - Retence a RFM: jak pomocí e-mailingu navýšit hod...
 
Project Restart 2024: Jan Řezáč - Nahradí AI projektové manažery?
Project Restart 2024: Jan Řezáč - Nahradí AI projektové manažery?Project Restart 2024: Jan Řezáč - Nahradí AI projektové manažery?
Project Restart 2024: Jan Řezáč - Nahradí AI projektové manažery?
 
Project Restart 2024: Karel Smutný - Specializace patří do 19. století
Project Restart 2024: Karel Smutný - Specializace patří do 19. stoletíProject Restart 2024: Karel Smutný - Specializace patří do 19. století
Project Restart 2024: Karel Smutný - Specializace patří do 19. století
 
Project Restart 2024: Martin Vasquez - Inteligence je schopnost reagovat na z...
Project Restart 2024: Martin Vasquez - Inteligence je schopnost reagovat na z...Project Restart 2024: Martin Vasquez - Inteligence je schopnost reagovat na z...
Project Restart 2024: Martin Vasquez - Inteligence je schopnost reagovat na z...
 

Featured

Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 

Featured (20)

Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 

Obhajoba - test

  • 1. Libor Fischmeistr ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE FAKULTA ELEKTROTECHNICKÁ
  • 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. 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. 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. 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. Š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. 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. 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. Š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. 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. TRANSFORMACE 25.6.2009 Zjednodušení kódu v Javě s využitím transformačního systému Armada 11
  • 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