如何用日志记录编写清晰的代码?

时间:2014-05-22 11:32:29

标签: scala oop haskell functional-programming

记录正在混乱我的“漂亮”干净简单的短代码。 而不是一个简单的

def mymethod = dosomething // scala

我的代码也有所有这些讨厌的日志记录语句,我必须立即向mymethod添加新行和大括号。 现在我不喜欢AOP它只会制作清晰的代码 - >不清楚。 无论如何要克服这个?我有简单的代码变得不那么简单,但我也需要记录。帮助

如何使这段代码简单明了,还有记录?

2 个答案:

答案 0 :(得分:7)

函数式编程的一种典型方法是添加一个高阶记录组合器。

log :: IO a -> String -> IO a 
log f s = do
    v <- f
    print ("My message: " ++ s)
    return v

这样的包装器增加了对日志消息的功能评估。 一般模式是\x y -> .. something with y .. return x

答案 1 :(得分:5)

Kestrel combinator通常用于此:

def mymethod = dosomething.tap(x => log.info(s"I've done ... and got $x"))

如果您需要为任何方法执行此操作,则会进行scala虚拟化,这会允许重载某些语言概念,包括方法调用。另外,有人可能会建议查看宏观,但我没有足够的能力做出这个假设。