关于不会被误解的名字
在看到不会被误解的名字这一章时候想到让自己的代码具有可读性这一理念
在给代码命名的时候的关键思想是:要多问自己几遍,这个名字会被别人解读成其他的含义吗?
如果想更有创意一点,那么可以主动地寻找:"误解点"。这一步可以帮助你发现那些二义性名字并更改。
例子: Filter()
假设你在写一段关于按条件检索数据的代码:
public function filter(array $filter = array(''year <= 2019"))
结果现在包含哪些信息?
* 年份小于或等于2019的对象?
* 年份不小于或等于2019的对象?
这里的问题是 "filter" 是个二义性单词。我们不清楚它的含义到底是 “过滤”,还是“筛选”。所以最好避免使用“filter” 这个名字。
例子: Clip(text,length)
假设你有个函数用来剪切一个段落的内容:
“Hello world”
def clip(text,length):
你可能会想象到clip()的两种行为方式:
* 从尾部删除length的长度
* 截掉最大长度length的一段
第二种方式(截掉)的可能性最大,但还是不能肯定。与其让读者乱猜代码,还不如把函数的名字改成Truncate(text,length)。
然而,参数名length也不太好。如果叫max_length的话可能更清楚。这样也还没有完。就算是max_length这个名字也还是会有多种解读:
* 字节数
* 字符数
* 字数
在这例子中,我们指得是“字符数”,所以不应该用max_length,而要用max_chars。
网友评论