【发布时间】:2021-03-01 17:57:25
【问题描述】:
我已经声明了一个字符串扩展方法来解码 Base64 字符串,例如:
public static string DecodeFromBase64String(this string base64String)
{
return Encoding.UTF8.GetString(Convert.FromBase64String(base64String));
}
现在有一个异步函数,它可以上传文件并返回其 id 的 base64 编码值。 如果我只是在参数中使用 await 传递这个函数是否可以,例如:
// Approach 1
var fileId = StringExtensions.DecodeFromBase64String( await uplodFile(FilePath) );
或者我应该只做一个两步过程,首先获取base64 id,然后在下一步解码它。这需要我声明两个具有有意义名称的变量,或者只是重用相同的变量
// Approach 2
var base64fileId = await uploadFile(FilePath);
var fileId = StringExtensions.DecodeFromBase64String(base64fileId);
// Approach 3
var fileId = await uploadFile( Filepath); // at this step file Id doesn't make much sense, but reduces need of extra variable
fileId = StringExtensions.DecodeFromBase64String(fileId);
考虑到设计原则,您认为哪种方法最好。 我还在学习 C#,所以请原谅我的任何错误。
【问题讨论】:
-
我的偏好是方法 2:a) 如果您需要对代码进行故障排除,将其拆分为两个表达式可以更轻松地单步执行调试器; b) C# 字符串是immutable - “fileId”和“base64fileId”将始终是独立且不同的 CLR 对象,因此您不妨给它们起不同的名称。
标签: c# .net-core design-principles