空的不可为 null 的字符串或 null 且可为 null 的字符串哪个更好?
What's better, an empty non-nullable string or a null and nullable string?
可以设置是选择空的可空容器还是空的不可空容器。
使用相同的论据似乎更难回答类似的问题。很可能这两个选项都是开放的。
因此,要回答这个问题,您可以选择 三个 个职位之一。
我们都熟悉(在 C++ 中,Java,..)链表中指针的概念。指针必须可以为空。这是我们到达列表末尾的信号。
在 Dart 的语法中,我们会写成 Item? next
。 “指针”next
然后可以为 null,并将指向 sequel。重要的是,如果有 none(在列表的末尾),值 null
被用作合法且非常明确的信号量来指示。
甚至 更简单 的情况,即简单 String
的情况呢?空的不可为 null 的字符串优于 null 和可为 null 的字符串是否总是很清楚?反过来是真的吗?这个问题很可能是基于意见的,这本身就是一个答案。 (但这需要争论。)很可能在某些情况下一种情况更好,而在其他情况下另一种情况更好。
像往常一样,最好讨论具体的代码。任何其他事情都很容易成为浪费时间。开始了。
每个Employee
都有名字,但不一定是老板。至少 CEO 没有。
然后我们有两个选择。我们可以在使用 String?
时捏住鼻子,并通过编写 String boss
来尽量减少它的使用
class Employee {
String name;
String boss;
}
但这意味着 boss
有时会是一个空字符串。
或者我们可以使用 String?
class Employee {
String name;
String? boss;
}
并捏我们的鼻子继续使用 null
表示缺少老板。
空的不可为 null 的字符串或 null 且可为 null 的字符串哪个更好?这是一个可以通过某种方式解决的风格问题吗?
你应该使用 null
来指示可选的数据,这样你就可以让 Dart 类型系统帮助你确保你不会在没有首先检查值是否已定义的情况下直接使用该值。
使用空字符串并不明智,因为您会在某个时候忘记检查空字符串并在您的应用程序中出现运行时错误(或未定义的行为),这本可以通过使用可为空的类型。
通常应该重复:null
的使用完全没问题。 Dart 中的空安全与摆脱 null
无关,而是跟踪 null
在哪里是可能的值,并帮助我们确保在重要的地方检查 null
和只有在实际可行的地方。
可以设置是选择空的可空容器还是空的不可空容器
使用相同的论据似乎更难回答类似的问题。很可能这两个选项都是开放的。
因此,要回答这个问题,您可以选择 三个 个职位之一。
我们都熟悉(在 C++ 中,Java,..)链表中指针的概念。指针必须可以为空。这是我们到达列表末尾的信号。
在 Dart 的语法中,我们会写成 Item? next
。 “指针”next
然后可以为 null,并将指向 sequel。重要的是,如果有 none(在列表的末尾),值 null
被用作合法且非常明确的信号量来指示。
甚至 更简单 的情况,即简单 String
的情况呢?空的不可为 null 的字符串优于 null 和可为 null 的字符串是否总是很清楚?反过来是真的吗?这个问题很可能是基于意见的,这本身就是一个答案。 (但这需要争论。)很可能在某些情况下一种情况更好,而在其他情况下另一种情况更好。
像往常一样,最好讨论具体的代码。任何其他事情都很容易成为浪费时间。开始了。
每个Employee
都有名字,但不一定是老板。至少 CEO 没有。
然后我们有两个选择。我们可以在使用 String?
时捏住鼻子,并通过编写 String boss
class Employee {
String name;
String boss;
}
但这意味着 boss
有时会是一个空字符串。
或者我们可以使用 String?
class Employee {
String name;
String? boss;
}
并捏我们的鼻子继续使用 null
表示缺少老板。
空的不可为 null 的字符串或 null 且可为 null 的字符串哪个更好?这是一个可以通过某种方式解决的风格问题吗?
你应该使用 null
来指示可选的数据,这样你就可以让 Dart 类型系统帮助你确保你不会在没有首先检查值是否已定义的情况下直接使用该值。
使用空字符串并不明智,因为您会在某个时候忘记检查空字符串并在您的应用程序中出现运行时错误(或未定义的行为),这本可以通过使用可为空的类型。
通常应该重复:null
的使用完全没问题。 Dart 中的空安全与摆脱 null
无关,而是跟踪 null
在哪里是可能的值,并帮助我们确保在重要的地方检查 null
和只有在实际可行的地方。