今天看到一个人写的代码,突然想到一个世界观的问题。略记一下。
不会编程的大概也能看懂:
这是一个字典:就是用户的ID映射到用户名。
name_for_userid = {121: 'Mike',
143: 'Sara',
332: 'David'}
然后写一个打招呼的函数greeting(),根据用户ID返回相应的问候语。
def greeting(userid):
if userid in name_for_userid:
return 'Hello %s!' % name_for_userid[userid]
else:
return 'Hello new friend!'
这个函数很简单,就是传入用户ID,检查用户ID是否存在,如果存在,就取得相应的用户名(比如 Mike),打招呼的内容就是:Hello Mike,如果不存在,打招呼的内容就是:Hello new friend!
这个函数还可以有另一个写法:
def greeting(userid):
try:
return 'Hello %s!' % name_for_userid[userid]
except KeyError:
return 'Hello new friend!'
这两个函数的功能是一样的。但逻辑不太一样。第二个函数的逻辑是这样:我给了你用户ID,请把它的用户名告诉我。程序没找到ID的话就会报错,然后我们处理这个错误。
总之。第一种方法,是做事之前先过问,看一下需要的东西有没有。第二种方法,是直接去做,做的过程中发现有问题,再去处理这个问题。
再简化。第一种方法可以叫做:三思而后行。第二种方法是:先斩后奏,先做了再说。
我觉得很多人估计都喜欢第一种方法吧。而我呢,始终是喜欢第二种方法的。
为什么呢?就拿上面的两个函数来说吧,第一个函数的效率要比第二个低,因为它先去查一下ID存不存在,如果存在的话,再去查ID的用户名。实际查了两遍字典。
其他的事情也是这样的。如果你先花很多精力去调查,看能不能做,最后的结论多半是做不了(因为事情的不确定性本来就很高)。于是,你那些调查的精力就白费了。
我真的认识一个朋友,从2014年就说要创业。几年过去,再遇到他,他还是没创过业,聊起来倒是头头是道,讲他调研过多少多少项目。其实我想问一句:这样有意思吗?
我失败过。但不后悔。我并不认为我的失败是因为冲动。因为如果没有冲动,连失败都不会有。也就那样在各种调研和观望中浪费了无数时间。
我也并不是怂恿大家冲动行事。只是表明我比较喜欢第二个函数的逻辑:先去做,遇到问题再说。如果所有的问题都考虑周全,那就不会去做了,考虑的那些时间也就白费了。然后又去考虑下一个,然后又不去做,然后又浪费了。
网友评论