为何要挑剔一个搞起来高端的IDE而不是最容易上手的工具?不论是PHP还是python还是JAVA,本质上讲它们不都在为人类完成我们难以忍受的一遍遍重复而机械的工作吗?为什么人们更喜欢分辨率高到按钮小的蚂蚁一样的笔记本,而不喜欢拥有舒适键盘手感的电脑?
不知不觉自己从丝毫不懂编程到使用python完成工作任务已经有一年半的时间。我倒现在也不敢称自己是“程序员”,因为我并写不出什么拥有诸多优良特性的程序。但我却曾把自己写的这些“带有错误捕捉的脚本”搞得很复杂。然而,随着阅读了一些英文的技术博客,我却意识到?为什么我们喜欢让自己的工作“看起来”更高大上,而不是很好了解呢?
定义那么多复杂的类,却不关心里面有多少方法是重复的,是冗余的。就像一年前我去面试,别人问我代码写了多少行,却没问我代码能实现的功能,到底与其行数匹配不匹配。
当大佬讨论能否用500行代码写出一个工具的时候(500 lines more or less),我们很多技术群中却讨论PHP到底是不是最好的语言,搞java的有没有必要转python。就像前篇文章中stackoverflow那位小哥给我的建议:于其去问怎么用区块链,不如研究一些细节问题。
言归正传,我认为我在使用python这门编程语言的过程中,学习到更多的是,如何快速实现一项功能,并能让一个只编写过shell脚本的运维人员能快速知道你的代码想做什么事。上升到一点哲学的层面,就好像以前学习知识,是把书从薄读到厚然后又读到薄的过程。那么就由我记录一下,自己对编写pythonic代码的一点理解吧。
1,变量名写长一点没关系,多换几行没关系,但一定要描述精确。
比如我之前经常会写个ic,rres之类的,鬼知道是个什么东西,而改成influx_client或者raw_result,会更易懂一些。
2,名称除了能描述精确,还能大致让人知道是什么类型的变量。
在py2中,经常需要一些验证变量类型的方法,当然这个问题在py3中会有一些改观。所以在变量中,不妨用xxx_number,is_source_available来让reviewer一眼就知道其是什么类型的变量。
*匈牙利命名法
给来源相同的对象添加父类标识的前缀。
3,在golang的代码的头部,会有import (...) const(...) type ...等一系列内容,把这个文件中出现的常量、变量、定义的struct都写到一起。这是一个好习惯,在编写python代码时候也应该学习这个习惯:
def worker():
list = []
demand = []
...
4,注重逻辑关联。
比如返回代码与返回内容,可以以元组的形式一起返回,因为这两者在逻辑上是关联的(这样并不会带来混杂)。比如在我之前翻译pika的用法示例中的consumer\producer sample,类中有很多方法,但它们都是逻辑独立的。
如果不想获取某个内容,可以使用_ 来忽略不想要的返回值。 code, _ = getResult()
5,避免多层判断
如果是js,多层判断那个括号看着都头疼。在python过多的判断也会导致缩进影响编码与可读性。可以使用提前结束的手段,比如
def do_jobs(self,*args,**kwargs):
if not self.handler:
return
...继续执行任务...
6,过于复杂的逻辑判断
一句话,用函数来代替判断。比如在类中添加一些分支逻辑判断函数,特别是这种判断出现了不止一次的情况下。
网友评论