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

1,026 views

Published on

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

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,026
On SlideShare
0
From Embeds
0
Number of Embeds
464
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

×