Skip to content

marcetin/nauci-go-sa-testovima

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Научите Го са тестовима

Art by Denise

Build Status Go Report Card

Формати

Преводи

Подржи ме

Поносно нудим овај садржај бесплатно, али ако желите да захвалите:

Зашто

Преглед садржаја

Го основе

  1. Инсталирајте Го - Поставите окружење за рад.
  2. Здраво Свете -Декларишући променљиве, константе, if/else изразе, прекидаче, напишите свој први програм и напишите свој први тест. Синтакса и затварања подтеста.
  3. Цели бројеви - Боље истражите синтаксу декларације функција и научите нове начине за побољшање документације вашег кода.
  4. Понављање - Сазнајте више о for и бенчмаркингу.
  5. Низови и делови - Сазнајте о низовима, парчадима, len, аргументима промењивих, range и покривености теста.
  6. Структуре, методе и интерфејси - Сазнајте о структури (struct), методама, интерфејсу (interface) и тестовима вођеним табелом.
  7. Показивачи и грешке - Сазнајте више о показивачима и грешкама.
  8. Мапе - Сазнајте о складиштењу вредности у структури података мапе.
  9. Dependency Injection - Сазнајте о убризгавању пакета од којих зависи апликација (dependency injection), како се то односи на употребу интерфејса и прајмера на ио.
  10. Mocking - Узмите неки постојећи непроверени код и користите ДИ са лажирањем да бисте га тестирали.
  11. Concurrency - Научите како да пишете истовремени код да бисте убрзали софтвер.
  12. Select - Научите како да елегантно синхронизујете асинхроне процесе.
  13. Reflection - Сазнајте о одразу (reflection)
  14. Синхронизација - Научите неке функције из пакета за синхронизацију, укључујући WaitGroup и Mutex
  15. Контекст - Користите контекстни пакет за управљање и отказивање дуготрајних процеса
  16. Увод у тестове засноване на својствима - Вежбајте ТДД са катама римских бројева и уђите у кратки увод у тестове заснованим на својствима
  17. Математика - Користите пакет math за цртање SVG сата
  18. Читање датотека - Читајте датотеке и обрађујте их

Направите апликацију

Сад кад сте надам се да сте сварили одељак Го основе, имате добар темељ за већину Го-ових језичких карактеристика и како да урадите ТДД.

Овај следећи одељак укључује израду апликације.

Свако поглавље ће поновити претходно, проширујући функционалност апликације онако како налаже наш власник производа.

Биће представљени нови концепти који ће олакшати писање сјајног кода, али већина новог материјала ће научити шта се може постићи из Го-ове стандардне библиотеке.

На крају овога, требали бисте добро схватити како итеративно написати апликацију у Го-у, поткрепљену тестовима.

  • HTTP сервер - Направићемо апликацију која преслушава HTTP захтеве и одговара на њих.
  • JSON, усмеравање и уграђивање - Направићемо крајње тачке врате JSON и истражићемо како се врши рутирање.
  • IO и сортирање - Записаћемо и читати податке са диска и покрићемо сортирање података.
  • Командна линија и структура пројекта - Подржавајте више апликација из једне базе кода и читајте унос из наредбене линије.
  • Време - користећи пакет time за планиране активности.
  • WebSockets - научите како да пишете и тестирате сервер који користи WebSockets.

Питања и одговори

Често налетим на питања на интернетским мрежама попут

Како да тестирам своју невероватну функцију која ради x, y и z

Ако имате такво питање, покрените га као проблем на гитхуб-у, а ја ћу покушати наћи времена да напишем кратко поглавље за решавање проблема. Осећам да је овакав садржај драгоцен јер решава реална питања људи око тестирања.

  • OS exec - Пример како можемо да се обратимо ОС-у за извршавање наредби за преузимање података и одржавање пословне логике на тестирању/
  • Врсте грешака - Пример креирања сопствених типова грешака ради побољшања тестова и олакшавања рада са кодом.
  • Читач који је свестан контекста - Научите како TDD увећавати io.Reader отказивањем. На бази io.Reader са контекстом за Го
  • Поновно посећивање HTTP руковаоца - Чини се да је тестирање HTTP руковаоца проклетство постојања многих програмера. Ово поглавље истражује проблеме око правилног дизајнирања руковаоца.

Мета / Дискусија

  • Why - Погледајте видео снимак или прочитајте зашто су јединствено тестирање и TDD важни
  • Intro to generics - Научите како да напишете функције које узимају генеричке аргументе и како да правите сопствену генеричку структуру података
  • Anti-patterns - Кратко поглавље о TDD-у и јединственом тестирању анти-образаца

Допринос

  • Овај пројекат је у току. Ако желите да дате свој допринос, контактирајте нас.
  • Прочитај contributing.md за смернице
  • Има ли идеја? Направите дебату

Позадина

Имам неко искуство с увођењем Гоа у развојне тимове и испробао сам различите приступе како да од неких људи знатижељних о Гоу развијем високоефикасне ауторе Го система.

Шта није успело

Прочитајте књигу

Приступ који смо покушали је да заузмемо the blue book и сваке недеље разговарамо о следећем поглављу заједно са вежбама.

Волим ову књигу, али она захтева висок ниво посвећености. Књига врло детаљно објашњава концепте, што је очигледно сјајно, али то значи да је напредак спор и стабилан - ово није за свакога.

Открио сам да док је мали број људи читао поглавље X и изводио вежбе, многи људи то нису чинили.

Решите неке проблеме

Кате су забавне, али су обично ограничене у свом обиму за учење језика; мало је вероватно да ћете користити гороутине за решавање кате.

Други проблем је када имате различит ниво ентузијазма. Неки људи само науче језик много више од других, а када демонстрирају шта су урадили, збуњују људе особинама којима другима нису познате.

То на крају чини да се учење осећа прилично неструктурирано и ад хок.

Шта је успело

Убедљиво најефикаснији начин био је полаганим увођењем основа језика читањем go by example, истражујући их на примерима и расправљајући о њима у групи. Ово је био интерактивнији приступ од „читања поглавља x за домаћи задатак“.

Временом је тим стекао чврсте темеље граматике језика, тако да смо могли почети да градимо системе.

Ово ми се чини аналогно вежбању скала приликом покушаја учења гитаре.

Није важно колико уметнички мислите да сте, мало је вероватно да ћете писати добру музику без разумевања основа и вежбања механике.

Шта ми одговара

Када научим нови програмски језик, обично почнем да се петљам у REPL, али на крају, треба ми више структуре.

Оно што волим да радим је да истражујем концепте, а затим идеје учврстим тестовима. Тестови потврђују тачност кода који пишем и документује особину коју сам научио.

Користећи своје искуство учења са групом и свој лични начин, покушаћу да створим нешто што се надам да ће се показати корисним другим тимовима. Учење основа писањем малих тестова, да бисте затим могли да искористите постојеће вештине дизајнирања софтвера и испоручите неке сјајне системе.

Коме је ово намењено

  • Људи који су заинтересовани да науче Го.
  • Људи који већ знају нешто о Го-у, али желе да истраже тестирање са ТДД-ом.

Шта ће вам требати

  • Рачунар!
  • Инсталиран Го
  • Уређивач текста
  • Неко искуство са програмирањем. Разумевање појмова попут if, променљивих, функција итд.
  • Лежерност у коришћењу терминала

Повратна информација

MIT лиценца

Logo is by egonelbre Каква звезда!

About

Learn Go with test-driven development

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Languages

  • Go 99.0%
  • Other 1.0%