今天看到一篇推送的技术文章,说IntelliJ推出了一个语法检查插件Grazie,但它不是用于检查面向编译器的语法,而是用于检查面向人类的语法,比如引号里的字符串、注释语句里的语法,等等。我认为在当前的环境下,它没有意义——除非在一个有着严格要求(或者非常自律)的团队里,否则这种功能只能用来“折腾自己”,而不可能改善大家整体的代码状况。
Grazie的功能是什么?例如下图,你在字符串里写了一句话“This are an simple ...” 显然这里的 are 是有语法错误的,应该是 is,此时Grazie就会提示有错:
文章来源:https://www.codelast.com/
从Grazie的简介看,使用它的时候会针对设置的language,下载对应的模型到本地使用。因此,Grazie应该也是基于机器学习技术的插件。
这个功能虽然很好,但我认为,在当前的编程环境下,这个插件没有现实意义。
举个例子来说,像语法超级严格的Golang,不允许左花括号另起一行,如果你这么写就会被判定为语法错误。这样的限制,让很多开发者没办法随心所欲地按自己的喜好来写代码,同时也在一定程度上保证了大家的代码规范统一。但是,对某些没有被定义成“语法错误”,仅仅是影响“观感”的问题,Golang就不管了,比如 func main() {,你把 ) 和 { 之间的空格去掉,也是能编译过的,只不过这种不规范,会让人很不爽而已。
所以Go推出了 gofmt 这个代码格式化工具,来让代码统一到完全一致的风格,但是如果团队里没有人使用它的话,这玩意有个鬼用?除非把它整合在持续集成的系统里,当开发者提交代码的时候,不100%符合规范的代码,直接报错,不允许提交到代码库,否则 gofmt 就只能是个虚的角色。靠自觉?太不现实了。
我之前短暂地开发过一段时间的Golang程序,讲真心话,就算在Golang这么严格的语法要求下,team里的其他人还是各种不遵守规范(那些可以通过编译的“不规范”),并且还是把代码提交到了repo里,真让人无语。
文章来源:https://www.codelast.com/
再拿规范超级不严格的Python来说,那问题就更多了。什么结尾没有newline,各种换行不对齐之类的的问题,根本就不会被判定为语法问题,现在随便去GitHub上看很多知名library的代码都会发现这样的情况,这些问题在开发者中都已经普遍得不得了了,根本没有多少Python开发者关心。所以,连这些问题都不关心的开发者们,还能要求他们去关注自然语言里的语法错误那些“微不足道”的破事吗?我觉得根本不现实。
在PyCharm里格式化Python代码使之符合PEP8编码规范,只是按一个快捷键就能做到的事,就这么简单,很多人都不愿意去做,所以,如果上了Grazie的“紧箍咒”,岂不要了大家的命了?所以,还是算了吧...
文章来源:https://www.codelast.com/
最后,有追求的人请安装Grazie,就算学学英文语法也是不错的:
文章来源:https://www.codelast.com/
➤➤ 版权声明 ➤➤
转载需注明出处:codelast.com
感谢关注我的微信公众号(微信扫一扫):