nauci-go-sa-testovima

module
v0.0.0-...-a204e96 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 25, 2021 License: MIT

README

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

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 Каква звезда!

Directories

Path Synopsis
arrays
v1
v2
v3
v4
v5
v6
v7
command-line
v1
v2
v3
concurrency
v1
v2
v3
context
v1
v2
v3
di
v1
v2
for
v1
v2
vx
hello-world
v1
v2
v3
v4
v5
v6
v7
v8
http-server
v1
v2
v3
v4
v5
integers
v1
v2
io
v1
v2
v3
v4
v5
v6
v7
v8
v9
json
v1
v2
v3
v4
v5
v6
maps
v1
v2
v3
v4
v5
v6
v7
math
vFinal/clockface
Package clockface provides functions that calculate the positions of the hands.
Package clockface provides functions that calculate the positions of the hands.
vFinal/clockface/clockface
Writes an SVG clockface of the current time to Stdout.
Writes an SVG clockface of the current time to Stdout.
vFinal/clockface/svg
Package svg produces an SVG clockface representation of a time.
Package svg produces an SVG clockface representation of a time.
mocking
v1
v2
v3
v4
v5
pointers
v1
v2
v3
v4
q-and-a
reflection
v1
v10
v2
v3
v4
v5
v6
v7
v8
v9
roman-numerals
v10
v11
select
v1
v2
v3
structs
v1
v2
v3
v4
v5
v6
v7
v8
sync
v1
v2
time
v1
v2
v3
websockets
v1
v2

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL