flutter - 您是否应该检查 fromJson 函数中变量的 runTimeType 作为最佳实践?
问题描述
非常基本的问题,但想知道最佳实践是什么,并且似乎无法在 SO 或其他地方找到对此的任何引用。
当您解析 fromJson 时,是否应该在尝试存储属性之前检查属性的 runTimeType,即使您确信它不应该是您认为的类型或 null?或者,如果这种极不可能发生的事件发生,我们是否只是接受错误?
谢谢 !
factory SomeClass.fromJson(Map data) {
if (data == null) return null;
String someString = data['someString']; //no runTimeType check
int someInt = data['someInt']; //no runTimeType check
try {
assert(someString != null, 'Some String was null in Some Class Json');
assert(someInt != null,
'Some Int null in Some Class Json');
} catch (e) {
return null;
}
return SomeClass(someString: someString, someInt: someInt);
}
解决方案
检查变量的运行时类型也非常好,因为它可以防止将来更新数据库时任何潜在的应用程序崩溃。
就null
检查而言,我个人传递了一个默认值,例如String
我将一个空字符串存储为默认值,而不是null
.
String someString = data['someString'] ?? '';
即使数据库返回一个null
值,我们的应用程序也应该能够处理这些条件。
我个人遇到的最常见的错误类型是在解析数据期间。类型String
不是 的子类型int
。类似的东西。所以,我想检查从后端返回的值的运行时类型会很好。
推荐阅读
- ssl - MSDeploy 失败并显示“错误:底层连接已关闭:发送时发生意外错误。”
- python - 是否可以在 Flask-WTForms 中设置标签的一部分?
- python - 在python中操作一个n级深度列表列表中的每个元素
- sql - 在 Sql Server Azure 上执行操作的用户权限不足
- c++ - 使用 LoadImage() 函数加载位图时出现问题
- owin - 使用 Azure AD B2C OP 进行 OWIN 身份验证:从外部 iFrame 调用 SIGnOut 时不会删除 Cookie
- python - 为什么将变量设置为 {} 会创建 dict 而不是 set?
- javascript - 压缩后将图像上传到 MongoDB,并从 Multer 上传目录中删除图像
- function - 尝试定义一个从文件创建列表并使用 random.choices 从加权列表中选择一个元素的函数
- python - Python openpyxl 读取浮点值不正确