gpt4 book ai didi

optimization - 避免编写两次代码,同时保持正确的编码方式?

转载 作者:行者123 更新时间:2023-12-03 17:17:52 35 4
gpt4 key购买 nike

我正在尝试创建一个函数 getInput(prompt, number) , 其中 prompt是将在用户输入前打印的文本(例如 >Choose a password: )和 number是一个 bool 值,它告诉输入应该是数字还是任何类型。

这是我写的函数:

function getInput(prompt, number)
if number then
while not input do
io.write(prompt)
input = tonumber(io.read())
end
else
io.write(prompt)
input = io.read()
end
return input
end

但是,我重复了很多代码。
我有 io.write(prompt)写了两次,我也有 input = io.read()两次与 tonumber()围绕其中一个电话。
我基本上只是重复同样的事情两次,一次在 while循环,一旦不在其中。

这是我做的一个小解决方法:
function getInput(prompt, number)
while not input do
io.write(prompt)
input = io.read()
if number then
input = tonumber(input)
end
end
return input
end

这个版本只有 io.write()io.read()写一次,但它不是那个“正确”的代码。
我正在使用 while即使没有必要循环(当 number 为假时)。
我也在做 if number检查每一轮 while循环(当 number 为真时)。

我应该使用第一个代码,还是有办法改进第二个代码更“正确”?

最佳答案

通常,重复一段非常简单的单行代码,类似于 io.write(prompt)不被认为是“代码重复”。此外,重复检查相同的简单条件通常不会造成性能危害。两种方式都具有同等的可读性,因此任何一种都可以,具体取决于您的喜好。

一种可能的改进是将函数分成两部分,并删除 number标志,像这样:

function getInput(prompt)
io.write(prompt)
return io.read()
end
function getNumericInput(prompt)
while not input do
io.write(prompt)
input = tonumber(io.read())
end
return input
end

但是,这在输入类型在运行时决定的情况下可能是 Not Acceptable ,并且必须通过变量进行控制。

关于optimization - 避免编写两次代码,同时保持正确的编码方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16486391/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com