Skip to content

揭示隐藏的逻辑

可预测性

如果函数或组件的名称、参数、返回值中存在未明确表达的隐藏逻辑,那么与你合作的同事可能会难以预测其行为。

📝 代码示例

下面的代码是一个名为 fetchBalance 的函数,用于查询用户的账户余额。每次调用函数时,都会隐式地启动名为 balance_fetched 的日志函数。

typescript
async function fetchBalance(): Promise<number> {
  const balance = await http.get<number>("...");

  logging.log("balance_fetched");

  return balance;
}

👃 闻代码

可预测性

仅根据 fetchBalance 函数的名称和返回类型,无法得知是否会记录名为 balance_fetched 的日志。因此,即使在不需要日志记录的地方,也可能会触发日志记录。

另外,如果日志记录逻辑出错,获取账户余额的功能也可能突然失效。

✏️ 尝试改善

请仅在实现部分保留可以通过函数名、参数和返回类型来预测的逻辑。

typescript
async function fetchBalance(): Promise<number> {
  const balance = await http.get<number>("...");

  return balance;
}

请将日志记录的代码单独分离出来。

tsx
<Button
  onClick={async () => {
    const balance = await fetchBalance();
    logging.log("balance_fetched");

    await syncBalance(balance);
  }}
>
  更新账户余额
</Button>