AŤ SE Z KÓDUNEPRÁŠÍ!Juraj Michálek6. 5. 2013 - FI MUNI - Brnohttp://georgik.sinusgear.com
NIEČO O MNE
ČO NÁS ČAKÁTestovanie v CC vo svete Applu, krátky úvod do Objective-CKvalita kódu, open source a projekty
OTVORENIE KÓDUGitHub.comSocial Codinghttps://github.com/georgik/fimuni-c-cpp-examples
Když se dívám na svůj kód,tak se musím pochválit.Nevypadá věru zle,zkrátka program jak má být.Před naší, za našíať se z kó...
HÁÁ! CHYBÁÁ!
TESTOVANIEžiadnemanuálneautomatické
ŽIADNE TESTOVANIE
ĽUDOVÁ MÚDROSŤBez testů do vývoje nelez!
MANUÁLNESpustíme a aplikácia ...
DEBUGGERKdyž něco rozeberem, tak leda debuggeremhttp://georgik.sinusgear.com/2010/09/19/zaznam-z-prednasky-kdyz-neco-rozeb...
AUTOMATIZOVANÉTESTYZáchranná sieť pre vývojárovŽivá dokumentáciaLepší dizajnViac času na vývoj
UNIT TESTINGizoláciasetUp - príprava prostrediatest - samotný testtearDown - upratanie prostredia
PRÍKLAD TESTUint a=41;a++;assert( a == 42, “Universe should be ok”);
MINUNITMinimalist Unit Testing Framework for Chttp://www.jera.com/techinfo/jtns/jtn002.html
MINUNIT - CODE/* file: minunit.h */#define mu_assert(message, test) do { if (!(test)) return message; } while (0)#define m...
MU_RUNTESTmu_runtest( test_currency );mu_runtest( test_accounting );
MU_ASSERTmu_assert(“Should not be null”, state == null);
SPUSTENIEgcc *.c -o test./testALL TEST PASSEDTests run: 2
CHECK FRAMEWORKhttp://check.sourceforge.net/Inštalácia./configuremakemake install
ORGANIZÁCIA TESTOVTest Casetestovaný prípadTest Suitesada Test CaseTest Runner
TEST FIXTURESvoid setup();void teardown();
KONTRÓLNE FCIEfail_if ( employee->age != 43, “Problem”);fail_unless( employee->age == 43, "Incorrect age.");
KOMPILÁCIAgcc -lcheck test.c -o test
SPUSTENIE TESTU./testPríklad:Running suite(s): Employee testing0%: Checks: 1, Failures: 1, Errors: 0main.c:45:F:Core tests...
ĎALŠIE FRAMEWORKYC/C++CxxTest: http://cxxtest.com/Boost: http://boost.orghttp://en.wikipedia.org/wiki/List_of_unit_testing...
JENKINSContinuous Integration - https://ci.jenkins-ci.org
http://cppcheck.sourceforge.net/
OBJECTIVE-Cprogramovací jazyk vychádzajúci z Cobjektové princípy zo Smalltalku
OBJECTIVE-C1983 - Brad Cox a Tom Lovezakladajú StepStone1988 - Steve Jobs - NeXTlicencuje Objective-C od StepStonerozširuj...
OBJECTIVE-C1996 - Apple ohlásil akvizíciu NeXT429 mil. $Cocoa framework
APPLE - XCODEMac OS 10.8Xcode 4Command Line Tools for Xcodehttp://developer.apple.com
OBJECTIVE-CSyntax: cammelCasePrefix: NS (od NextStep)
HELLO FI MUNI!Command + R
NSSTRINGNSString *who = @”FI MUNI”;NSLog(“Hello %@!”, who);
BOOLEANBOOL isFIBest = YES;BOOL isCBoring = NO;
SPRÁVA PAMÄTENové verzie Mac OS podporujú auto-garbage collection.Nespoliehajte sa na to!Naučte sa manažovať pamäť.Nefungu...
RETAIN COUNTERalokácia - zvýšenie počítadladealokácia - zníženie počítadla
PRAVIDLÁAk objekt vlastníš, musíš ho uvoľniť.Ak objekt nevlastníš, nesmieš ho uvoľniť.
VLASTNENIE OBJEKTUalloc, new, retain, copyKaždý ANRC musí mať release!
ALOKÁCIA - NEW
ALLOC, INITPreferovaný spôsob
ROZDELENIE KÓDUrozhranie (interface) - *.himplementácia - *.m
INTERFACE@interface Employee : NSObject {@privateNSString *name;NSString *surname;NSDate *age;}@end
IMPLEMENTÁCIA@implementation Employee- (void) myMethod {NSLog(@"Hello");}@end
ZNAK PRED METÓDOU- (void) myMethodznak mínus - metóda inštancieznak plus - statická metóda
PRÍSTUP K ZDROJOMNSURLNSURL *myURL = [NSURL fileURLWithPath:path];file:///Users/georgik/file.txt
PREČO POUŽÍVAŤNSURL?Pretože to tak Apple povedal.rýchlejšie na iOSzachytenie chyby v prípade zlého formátuomnoho mocnejšie
CODESCHOOLLearn by doinglekciachallange, badgeiOS, HTML5, CSS3, Ruby on Rails, AngularJS...
LYNDA.COMDobrý zdroj znalostí
OHLOH.NEThodnotenie open source projektov
SE-RADIO.NET
GOURCEhttp://code.google.com/p/gource/
KVALITA KÓDUKód sa viackrát číta, než sa píše.Review kódu
CURLcurl http://www.fi.muni.cz -o index.htmlhttp://curl.haxx.se/
CURL PROGRAMUJE!curl http://www.fi.muni.cz --libcurl download.cgcc -lcurl download.c download./download
LICENCIEFree softwareGNU/GPL, LGPLOpen sourceBSD, MIT, Apachebusiness friendly
ČÍTAJTE LICENCIECopyright (c) 2002 JSON.orgPermission is hereby granted, free of charge, to any person obtaining acopy of ...
ČÍTAJTE LICENCIECopyright (c) 2002 JSON.orgPermission is hereby granted, free of charge, to any person obtaining acopy of ...
AŤ SE Z KÓDUNEPRÁŠÍ!Juraj Michálek6. 5. 2012 - FI MUNI - Brnohttp://georgik.sinusgear.com
Prochain SlideShare
Chargement dans…5
×

Ať se z kódu nepráší! 2013

1 030 vues

Publié le

Talk at FI MUNI about programming in C. About testing in C language and test automation.

Publié dans : Technologie
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Ať se z kódu nepráší! 2013

  1. 1. AŤ SE Z KÓDUNEPRÁŠÍ!Juraj Michálek6. 5. 2013 - FI MUNI - Brnohttp://georgik.sinusgear.com
  2. 2. NIEČO O MNE
  3. 3. ČO NÁS ČAKÁTestovanie v CC vo svete Applu, krátky úvod do Objective-CKvalita kódu, open source a projekty
  4. 4. OTVORENIE KÓDUGitHub.comSocial Codinghttps://github.com/georgik/fimuni-c-cpp-examples
  5. 5. Když se dívám na svůj kód,tak se musím pochválit.Nevypadá věru zle,zkrátka program jak má být.Před naší, za našíať se z kódu nepráší! Hej!
  6. 6. HÁÁ! CHYBÁÁ!
  7. 7. TESTOVANIEžiadnemanuálneautomatické
  8. 8. ŽIADNE TESTOVANIE
  9. 9. ĽUDOVÁ MÚDROSŤBez testů do vývoje nelez!
  10. 10. MANUÁLNESpustíme a aplikácia ...
  11. 11. DEBUGGERKdyž něco rozeberem, tak leda debuggeremhttp://georgik.sinusgear.com/2010/09/19/zaznam-z-prednasky-kdyz-neco-rozeberem-tak-leda-debuggerem/
  12. 12. AUTOMATIZOVANÉTESTYZáchranná sieť pre vývojárovŽivá dokumentáciaLepší dizajnViac času na vývoj
  13. 13. UNIT TESTINGizoláciasetUp - príprava prostrediatest - samotný testtearDown - upratanie prostredia
  14. 14. PRÍKLAD TESTUint a=41;a++;assert( a == 42, “Universe should be ok”);
  15. 15. MINUNITMinimalist Unit Testing Framework for Chttp://www.jera.com/techinfo/jtns/jtn002.html
  16. 16. MINUNIT - CODE/* file: minunit.h */#define mu_assert(message, test) do { if (!(test)) return message; } while (0)#define mu_run_test(test) do { char *message = test(); tests_run++; if (message) return message; } while (0)extern int tests_run;
  17. 17. MU_RUNTESTmu_runtest( test_currency );mu_runtest( test_accounting );
  18. 18. MU_ASSERTmu_assert(“Should not be null”, state == null);
  19. 19. SPUSTENIEgcc *.c -o test./testALL TEST PASSEDTests run: 2
  20. 20. CHECK FRAMEWORKhttp://check.sourceforge.net/Inštalácia./configuremakemake install
  21. 21. ORGANIZÁCIA TESTOVTest Casetestovaný prípadTest Suitesada Test CaseTest Runner
  22. 22. TEST FIXTURESvoid setup();void teardown();
  23. 23. KONTRÓLNE FCIEfail_if ( employee->age != 43, “Problem”);fail_unless( employee->age == 43, "Incorrect age.");
  24. 24. KOMPILÁCIAgcc -lcheck test.c -o test
  25. 25. SPUSTENIE TESTU./testPríklad:Running suite(s): Employee testing0%: Checks: 1, Failures: 1, Errors: 0main.c:45:F:Core tests:test_age:0: Incorrect age.
  26. 26. ĎALŠIE FRAMEWORKYC/C++CxxTest: http://cxxtest.com/Boost: http://boost.orghttp://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#C
  27. 27. JENKINSContinuous Integration - https://ci.jenkins-ci.org
  28. 28. http://cppcheck.sourceforge.net/
  29. 29. OBJECTIVE-Cprogramovací jazyk vychádzajúci z Cobjektové princípy zo Smalltalku
  30. 30. OBJECTIVE-C1983 - Brad Cox a Tom Lovezakladajú StepStone1988 - Steve Jobs - NeXTlicencuje Objective-C od StepStonerozširuje GCC, vytvára AppKit
  31. 31. OBJECTIVE-C1996 - Apple ohlásil akvizíciu NeXT429 mil. $Cocoa framework
  32. 32. APPLE - XCODEMac OS 10.8Xcode 4Command Line Tools for Xcodehttp://developer.apple.com
  33. 33. OBJECTIVE-CSyntax: cammelCasePrefix: NS (od NextStep)
  34. 34. HELLO FI MUNI!Command + R
  35. 35. NSSTRINGNSString *who = @”FI MUNI”;NSLog(“Hello %@!”, who);
  36. 36. BOOLEANBOOL isFIBest = YES;BOOL isCBoring = NO;
  37. 37. SPRÁVA PAMÄTENové verzie Mac OS podporujú auto-garbage collection.Nespoliehajte sa na to!Naučte sa manažovať pamäť.Nefunguje na mobilných zariadeniach.
  38. 38. RETAIN COUNTERalokácia - zvýšenie počítadladealokácia - zníženie počítadla
  39. 39. PRAVIDLÁAk objekt vlastníš, musíš ho uvoľniť.Ak objekt nevlastníš, nesmieš ho uvoľniť.
  40. 40. VLASTNENIE OBJEKTUalloc, new, retain, copyKaždý ANRC musí mať release!
  41. 41. ALOKÁCIA - NEW
  42. 42. ALLOC, INITPreferovaný spôsob
  43. 43. ROZDELENIE KÓDUrozhranie (interface) - *.himplementácia - *.m
  44. 44. INTERFACE@interface Employee : NSObject {@privateNSString *name;NSString *surname;NSDate *age;}@end
  45. 45. IMPLEMENTÁCIA@implementation Employee- (void) myMethod {NSLog(@"Hello");}@end
  46. 46. ZNAK PRED METÓDOU- (void) myMethodznak mínus - metóda inštancieznak plus - statická metóda
  47. 47. PRÍSTUP K ZDROJOMNSURLNSURL *myURL = [NSURL fileURLWithPath:path];file:///Users/georgik/file.txt
  48. 48. PREČO POUŽÍVAŤNSURL?Pretože to tak Apple povedal.rýchlejšie na iOSzachytenie chyby v prípade zlého formátuomnoho mocnejšie
  49. 49. CODESCHOOLLearn by doinglekciachallange, badgeiOS, HTML5, CSS3, Ruby on Rails, AngularJS...
  50. 50. LYNDA.COMDobrý zdroj znalostí
  51. 51. OHLOH.NEThodnotenie open source projektov
  52. 52. SE-RADIO.NET
  53. 53. GOURCEhttp://code.google.com/p/gource/
  54. 54. KVALITA KÓDUKód sa viackrát číta, než sa píše.Review kódu
  55. 55. CURLcurl http://www.fi.muni.cz -o index.htmlhttp://curl.haxx.se/
  56. 56. CURL PROGRAMUJE!curl http://www.fi.muni.cz --libcurl download.cgcc -lcurl download.c download./download
  57. 57. LICENCIEFree softwareGNU/GPL, LGPLOpen sourceBSD, MIT, Apachebusiness friendly
  58. 58. ČÍTAJTE LICENCIECopyright (c) 2002 JSON.orgPermission is hereby granted, free of charge, to any person obtaining acopy of this software and associated documentation files (the"Software"), to deal in the Software without restriction, including withoutlimitation the rights to use, copy, modify, merge, publish, distribute,sublicense, and/or sell copies of the Software, and to permit persons towhom the Software is furnished to do so, subject to the followingconditions:The above copyright notice and this permission notice shall be includedin all copies or substantial portions of the Software.The Software shall be used for Good, not Evil.
  59. 59. ČÍTAJTE LICENCIECopyright (c) 2002 JSON.orgPermission is hereby granted, free of charge, to any person obtaining acopy of this software and associated documentation files (the"Software"), to deal in the Software without restriction, including withoutlimitation the rights to use, copy, modify, merge, publish, distribute,sublicense, and/or sell copies of the Software, and to permit persons towhom the Software is furnished to do so, subject to the followingconditions:The above copyright notice and this permission notice shall be includedin all copies or substantial portions of the Software.The Software shall be used for Good, not Evil.
  60. 60. AŤ SE Z KÓDUNEPRÁŠÍ!Juraj Michálek6. 5. 2012 - FI MUNI - Brnohttp://georgik.sinusgear.com

×