|
|
循环,模块化,两者都是代码重用。不过我一直比较纳闷,他们似乎一样,又似乎不一样...
例:
generate a url
download the page by the url
filter the page
output{...} filtered result
假设这里的download是确定的, 而其他3个动词都是可变的,即:
如何generate, 如何filter, 如何output
这里为了方便,上面4句可以合并成
output{...} the filtered page downloaded by the url generated
作为例子,我们写下面的代码:
output1{...} the filtered1 page downloaded by the url generated1
output2{...} the filtered2 page downloaded by the url generated2
output3{...} the filtered3 page downloaded by the url generated3
(A) 循环。
我们假设 output1{...} == output{...}(1) , 其他一样, 那么
for n = 1 to 3
output{...}(n) the filtered(n) page downloaded by the url generated(n)
next
(B) 模块化。
首先,我们假设 output1{...} == output2{...} == output3{...}
那么, 我们可以统统用 myoutput 代替这三个代码段
myoutput the filtered1 page downloaded by the url generated1
myoutput the filtered2 page downloaded by the url generated2
myoutput the filtered3 page downloaded by the url generated3
接着,我们假设 filtered1 == filtered(1), 以及 generated1, 则
for n = 1 to 3
myoutput the filtered(n) page downloaded by the url generated(n)
next
我们看到, 模 块 化 可 以 减 少 本 身 的 代 码, 但 不 能 减 少 其 他 代 码 |
|