
86
|
第
4
章
内部构造
}
// ...
最好把这样的赋值重构到一个函数中,就像下面的代码那样。需要注意的
是,这个函数有一个
user
参数,所以可以把该函数从我们原来定义这个
user
对象的作用域链中移出,同时把
let
绑定改为
const
绑定。当继续往
下阅读代码时,使用
const
的好处就是我们知道该绑定不会改变。如果使
用
let
,就无法确定随着时间的推移该绑定是否会发生变化,也意味着读者
理解算法时要注意的一堆事情中又增加了一件 :
// ...
const website = getUserWebsite(user)
// ...
function getUserWebsite(user) {
if (user.details) {
return user.details.website
}
if (user.website) {
return user.website
}
return null
}
不管你喜欢采用什么样的变量绑定,最好将选择应用状态的那部分代码和
根据所选状态执行操作的逻辑分离开来。采用这种方式,我们就不会在如
何选择状态这件事情上分心,而是专注于应用程序的逻辑试图执行的操作。
如果你希望为程序的某个部分命名而且不添加任何注释,可以创建一个函
数来包含这个功能。这样做不仅为算法所做的事情取了名字,而且使我们
能将这段代码移出来,仅保留对流程的高层描述。