KateBu / bot-1.3

BSD 3-Clause "New" or "Revised" License
0 stars 1 forks source link

Вынести catch в отдельную функцию #10

Closed DonDokidon closed 3 years ago

DonDokidon commented 3 years ago

https://github.com/KateBu/bot-1.3/blob/04be57027cfa47804428e1bd90c163b4fcb8b70b/src/API/Wrapper/GetResponseFunctions.hs#L31-L36

Такие сооружения по возможности лучше выносить в where / отдельную функцию

evgeny-osipenko commented 3 years ago

Я лично не согласен в данном конкретном случае - вся функция как раз и состоит только из этого вызова и обёртки; я считаю, если разбить её на части, это только повредит восприятию. С другой стороны, я бы вынес идиому catch (...) (\ex -> BotEx.throwHttpException (ex :: HttpException)) в отдельную функцию (либо приватную, либо в отдельный модуль, если будет полезна где-то ещё), так что получилось бы примерно так:

getResponseMultipart ::
  Maybe (Url 'Https) ->
  [PureStructs.Params] ->
  Option 'Https ->
  IO LbsResponse
getResponseMultipart Nothing _ _ = BotEx.throwOtherException LoggerMsgs.invalidHP
getResponseMultipart (Just url) params options = do
  multipartParams <- WrapFunctions.paramsToMultipartBody params
  withHttpExceptionWrapped $ do
    runReq defaultHttpConfig $ do
      req
        POST
        url
        multipartParams
        lbsResponse
        options

withHttpExceptionWrapped :: IO a -> IO a
withHttpExceptionWrapped = handle BotEx.throwHttpException
DonDokidon commented 3 years ago

Тут согласен, я не воспринял этот вызов как результат работы функции из-за catch, вроде таких вызовов я больше не приметил, так что теперь ишью будет про вынос catch :)

KateBu commented 3 years ago

вынесла в отдельную функцию

DonDokidon commented 3 years ago

https://github.com/KateBu/bot-1.3/blob/1b7296fd3b7b20d6bf503af1fde9bf6113982d28/src/API/Bot.hs#L12-L21 тут тоже