面试题答案
一键面试代码示例
假设使用Ruby语言,以下是设计该方法的示例:
def process_user_request(request_source: nil, user_preferences: {})
# 根据不同的请求来源和用户偏好设置进行不同处理
if request_source == 'mobile'
# 移动端处理逻辑
if user_preferences[:theme] == 'dark'
# 处理深色主题偏好
end
elsif request_source == 'desktop'
# 桌面端处理逻辑
end
end
优势
- 代码维护:通过使用方法参数默认值,使方法调用者在不需要传递特定参数时更简洁。关键字参数增强了代码的可读性,即使参数较多,也能清晰看出每个参数的作用,降低维护成本。例如在团队协作中,其他开发人员能快速理解方法所需参数及其用途。
- 扩展性:当需要新增请求来源或用户偏好设置时,只需在方法内部增加相应处理逻辑,调用者无需改变现有代码结构,除非需要利用新参数。如新增
tablet
请求来源,只需在方法内部增加对tablet
的处理逻辑即可。
参数验证和错误处理
- 参数验证:可以在方法内部进行参数验证,例如验证
request_source
是否为预期的值。
def process_user_request(request_source: nil, user_preferences: {})
valid_sources = ['mobile', 'desktop']
unless valid_sources.include?(request_source)
raise ArgumentError, "Invalid request source: #{request_source}"
end
# 处理逻辑
end
- 错误处理:对于参数验证失败,抛出
ArgumentError
异常。调用者可以使用begin - rescue
块捕获异常并进行相应处理,例如记录错误日志或向用户返回友好的错误提示。
begin
process_user_request(request_source: 'invalid_source', user_preferences: {})
rescue ArgumentError => e
puts "Error: #{e.message}"
end