Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update refactoring.md #1504

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/basic-practice/refactoring.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
- **单一且庞大的函数**。对于 `minigrep` 程序而言, `main` 函数当前执行两个任务:解析命令行参数和读取文件。但随着代码的增加,`main` 函数承载的功能也将快速增加。从软件工程角度来看,一个函数具有的功能越多,越是难以阅读和维护。因此最好的办法是将大的函数拆分成更小的功能单元。
- **配置变量散乱在各处**。还有一点要考虑的是,当前 `main` 函数中的变量都是独立存在的,这些变量很可能被整个程序所访问,在这个背景下,独立的变量越多,越是难以维护,因此我们还可以将这些用于配置的变量整合到一个结构体中。
- **细化错误提示**。 目前的实现中,我们使用 `expect` 方法来输出文件读取失败时的错误信息,这个没问题,但是无论任何情况下,都只输出 `Should have been able to read the file` 这条错误提示信息,显然是有问题的,毕竟文件不存在、无权限等等都是可能的错误,一条大一统的消息无法给予用户更多的提示。
- **使用错误而不是异常**。 假如用户不给任何命令行参数,那我们的程序显然会无情崩溃,原因很简单:`index out of bounds`,一个数组访问越界的 `panic`,但问题来了,用户能看懂吗?甚至于未来接收的维护者能看懂吗?因此需要增加合适的错误处理代码,来给予使用者给详细友善的提示。还有就是需要在一个统一的位置来处理所有错误,利人利己!
- **使用错误而不是异常**。 假如用户不给任何命令行参数,那我们的程序显然会无情崩溃,原因很简单:`index out of bounds`,一个数组访问越界的 `panic`,但问题来了,用户能看懂吗?甚至于未来接手的维护者能看懂吗?因此需要增加合适的错误处理代码,来给予使用者详细、友善的提示。还有就是需要在一个统一的位置来处理所有错误,利人利己!

## 分离 main 函数

Expand Down Expand Up @@ -426,4 +426,4 @@ fn main() {

呼,一顿书写猛如虎,回头一看。。。这么长的篇幅就写了这么点简单的代码??只能说,我也希望像很多国内的大学教材一样,只要列出定理和解题方法,然后留下足够的习题,就万事大吉了,但是咱们不行。

接下来,到了最喜(令)闻(人)乐(讨)见(厌)的环节:写测试代码,一起来开心吧。
接下来,到了最喜(令)闻(人)乐(讨)见(厌)的环节:写测试代码,一起来开心吧。