tctcab Cloud2016 没事,我们优先尊重论坛用户自己的选择,如果是自己想删就删吧,我的回复没有上文确实有点突兀,但意思是完整的。
HarryZhu-7harryprince 还是那句话,我认为 glue()
的最大优势在于字符串模板对人眼来说可读性更好,除此之外,我不觉得它有多明显的优势,我相信你的例子用 sprintf()
一样可以改写出来,但
sprintf("select %s from %s;", field, database)
的可读性不如
glue::glue("select {field} from {database};")
当然,我举的例子语句很短,也许没多大差别,当语句很长时,人眼去匹配 sprintf()
中一个个 %s
和后面的变量时就会有点累了,而且也容易写错变量的个数或顺序。
glue 包除了站在台风口,还取了一个很形象的名字(胶水),再加上六边形贴纸的宣传,就深入人心了,这都是些营销手段而已。纯从功能角度来说,它做的事情别人好多年前就做了,比如 whisker 和 brew 包,但这两个包当时没有台风吹,包名又令人费解,还没有六边形贴纸,就悄悄地没落了。
我双手赞成 Tidyverse 对写数据分析代码的效率的积极意义,我也建议大家都学学(见我去年给一本书的推荐序倒数第二段)。问题只是,它过于耀眼,有时候会亮瞎我们的狗眼,如 https://d.cosx.org/d/420476 你说这么诘屈聱牙的代码算不算“tidy”呢?我相信火影中宇智波鼬常念叨的一句话:任何忍术一定都有其缺点。我有个大学同学也有一句话,话糙理不糙,叫:情人眼里出西施,西施眼里出眼屎。无论如何,自己权衡过西施和眼屎就好;不管权衡之后选择哪一方,我觉得都是可以的。