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.

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

1,494 views

Published on

Talk about programming in C for FI MUNI Brno. Topics: Uni

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

  1. 1. Ať se z kódu nepráší! Juraj Michálek 7 5. 2012 - FI MUNI - Brno . http:/ /georgik.sinusgear.com http:/ witter.com/sinusgear /t
  2. 2. Niečo o mne
  3. 3. Čo nás čakáTestovanie v CKvalita kódu, open source a projektyC vo svete Applu, Objective-C
  4. 4. 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!
  5. 5. Háá! Chybáá!
  6. 6. Testovaniežiadnemanuálneautomatické
  7. 7. Žiadne testovanie
  8. 8. Ľudová múdrosťBez testů do vývoje nelez!
  9. 9. Manuálne - black boxSpustíme a aplikácia ...
  10. 10. Manuálne - debuggerKdyž něco rozeberem, tak leda debuggeremhttp://georgik.sinusgear.com/2010/09/19/zaznam-z-prednasky-kdyz-neco-rozeberem-tak-leda-debuggerem/
  11. 11. Prečo automatizovať?Som vývojár alebo debuggrista?
  12. 12. Automatizované testy Záchranná sieť pre vývojárov Živá dokumentácia Lepší dizajn Viac času na vývoj
  13. 13. Typy testovUnit testing - jednotkové testyIntegračné testyAkceptačné testyRegresné testy
  14. 14. Test Driven Devel.Testy prvéPotom kód
  15. 15. Unit Testingizolácia setUp - príprava prostredia test - samotný test tearDown - upratanie prostredia
  16. 16. Príklad testuint a=41;a++;assert( a == 42, “Universe should be ok”);
  17. 17. MinunitMinimalist Unit Testing Framework for Chttp://www.jera.com/techinfo/jtns/jtn002.html
  18. 18. 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;
  19. 19. mu_runtestmu_runtest( test_currency );mu_runtest( test_accounting );
  20. 20. mu_assertmu_assert(“Should not be null”, state == null);
  21. 21. Spusteniegcc *.c -o test./test ALL TEST PASSED Tests run: 2
  22. 22. gcc - c99for (int i=0; i<42; i++) error: ‘for’ loop initial declaration used outside C99 modezmena normy parametrom: gcc -std=c99
  23. 23. Check frameworkhttp://check.sourceforge.net/Inštalácia ./configure make make install
  24. 24. Organizácia testovTest Case testovaný prípadTest Suite sada Test CaseTest Runner
  25. 25. Test Fixturesvoid setup();void teardown();
  26. 26. Kontrólne fciefail_if ( employee->age != 43, “Problem”);fail_unless( employee->age == 43,"Incorrect age.");
  27. 27. Kompiláciagcc -lcheck test.c -o test
  28. 28. Spustenie testu./testPríklad: Running suite(s): Employee testing 0%: Checks: 1, Failures: 1, Errors: 0 main.c:45:F:Core tests:test_age:0: Incorrect age.
  29. 29. Ďalšie frameworkyC/C++ CxxTest: http://cxxtest.com/ Boost: http://boost.org
  30. 30. Continuous Integration Jenkins http://ci.sinusgear.com
  31. 31. Open sourceProjektyLicencie
  32. 32. Code_swarmOrganic soft ware visualization ofproject repositorieshttp://code.google.com/p/codeswarm/
  33. 33. Gourcehttp://code.google.com/p/gource/
  34. 34. Ohloh.nethodnotenie open source projektov
  35. 35. Lynda.comDobrý zdroj znalostí
  36. 36. se-radio.net
  37. 37. Kvalita kóduKód sa viackrát číta, než sa píše.Review kódu
  38. 38. Ot vorenie kóduGitHub.com Social Coding fork
  39. 39. LicencieFree soft ware GNU/GPL, LGPLOpen source BSD, MIT, Apache business friendly
  40. 40. Čí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.
  41. 41. Čí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.
  42. 42. Objective-Cprogramovací jazyk vychádzajúci z Cobjektové princípy zo Smalltalku
  43. 43. Objective-C1983 - Brad Cox a Tom Love zakladajú StepStone1988 - Steve Jobs - NeXT licencuje Objective-C od StepStone rozširuje GCC, vyt vára AppKit
  44. 44. Objective-C1996 - Apple ohlásil akvizíciu NeXT 429 mil. $Cocoa framework
  45. 45. Apple a CMac OS 10.7 Xcode 4 Command Line Tools for Xcode http://developer.apple.com
  46. 46. Xcode 4Nutné: Mac OS X 10.7
  47. 47. Objective-CSyntax: cammelCasePrefix: NS (od NextStep)
  48. 48. Hello FI MUNI! Command + R
  49. 49. NSStringNSString *who = @”FI MUNI”;NSLog(“Hello %@!”, who);
  50. 50. BooleanBOOL isFIBest = YES;BOOL isCBoring = NO;
  51. 51. 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.
  52. 52. Retain Counteralokácia - zvýšenie počítadladealokácia - zníženie počítadla
  53. 53. PravidláAk objekt vlastníš, musíš ho uvoľniť.Ak objekt nevlastníč, nesmieč ho uvoľniť.
  54. 54. Vlastnenie objektualloc, new, retain, copyKaždý ANRC musí mať release!
  55. 55. Alokácia - new
  56. 56. Alokácia a inicializácia Preferovaný spôsob
  57. 57. Rozdelenie kódurozhranie (interface) - *.himplementácia - *.m
  58. 58. Interface@interface Employee : NSObject {@private NSString *name; NSString *surname; NSDate *age;}@end
  59. 59. Implementácia@implementation Employee- (void) myMethod { NSLog(@"Hello");}@end
  60. 60. Znak pred metódou- (void) myMethodznak mínus - metóda inštancieznak plus - statická metóda
  61. 61. Prístup k zdrojomNSURLNSURL *myURL = [NSURLfileURLWithPath:path];file:/ /Users/georgik/file.txt /
  62. 62. Prečo používať NSURL? Pretože to tak Apple povedal. rýchlejšie na iOS zachytenie chyby v prípade zlého formátu omnoho mocnejšie
  63. 63. Allegropodpora aj pre iPhone
  64. 64. Ať se z kódu nepráší! Juraj Michálek 7 5. 2012 - FI MUNI - Brno . http:/ /georgik.sinusgear.com http:/ witter.com/sinusgear /t

×