由于编写Kotlin代码时,通常会有更长的调用链需要说明。在此链中添加评论的最佳位置是什么?
val map = javaClass.getResourceAsStream("/response.csv")
.reader() //commentLocation1
.readLines()
.drop(1)
// commentLocation2
.map { it.split(",") }
.map {
// commentLocation3
it.first().toInt() to it[2]
}
.toMap()
答案 0 :(得分:3)
我没有在StringIO()
object中找到任何有关此的提示,但是我更喜欢commentLocation1和commentLocation3。但是请记住,表达代码意图的更可取的方法是添加具有好名字的函数。因此,如果您觉得有必要添加注释以描述某些映射,过滤等的业务价值,则最好使用对函数的引用,用名称来解释。
答案 1 :(得分:2)
这只是个人喜好,但我不喜欢文档外的注释,恕我直言,它减少了在代码中保留过时注释的机会,因此,我建议将代码包装到具有所需解释的函数中:
/**
* This function does something very useful =)
*/
fun function(){
}
答案 2 :(得分:0)
通常,我认为想在链条中间发表评论是一个信号,表明您的链条过长。如果将其分解,则可以使用变量名称添加很多“自我文档”。
val responseReader = javaClass.getResourceAsStream("/response.csv").reader()
val linesWithoutHeader = responseReader.readLines().drop(1)
val splitLines = linesWithoutHeader.map{it.split(","))}
val map = splitLines.map(firstAndThirdColumns).toMap()
def firstAndThirdColumns(...
这还具有为错误消息提供更精确位置的优点,并允许您插入类型注释以在中间仔细检查某些内容。当某人稍后进行维护时,他们也许可以不用中间变量名,而不必从链的开头重新构造头部的整个状态。在最坏的情况下,如果您仍然觉得需要注释,可以将其设为常规的注释,看起来并不那么尴尬。