чтобы ответить на вопрос Зачем?. К примеру, возьмём haskell. Казалось бы, бесполезный по сути язык, но он приучает тебя к написанию тестируемого кода. Чистые функции и правда легко тестировать. Пожалуй это одно из главных его преимуществ. Пример:
createNewUser :: RequestBody -> IO (Either Error User)
createNewUser body =
case bodyToUser body of
Left err -> pure . Left $ err
Right (user, pass) -> do
-- Connect to DB:
db <- connectToDb
let
insertSql =
"INSERT INTO table (user_name, password) VALUES (?, ?) returning id"
-- Persist using insert statement:
userId <- query db insertSql (user, pass)
-- Create a response
pure . Right $ User { userName = user, userId = userId }
Функция не идеальна, можно было бы её разить на части, но подход приколный. Такой код легко протестировать.
это описание функции такое?
Обсуждают сегодня