Language agnostic 你如何处理特殊情况

Language agnostic 你如何处理特殊情况,language-agnostic,Language Agnostic,这通常是一种情况,但这里有一个最新的例子: 公司有各种联系方式(地址、电话号码、电子邮件……),当他们发布招聘广告时,他们会在复选框中选择联系方式。它基本上是描述性数据。用户在阅读广告时会看到类似“您可以通过邮件,亲自申请…”的内容,除非是“通过门户网站”或“通过电子邮件”,因为此时应显示相应的按钮。这些选项存储在数据库中,客户端(网站所有者,而不是制作广告的公司)可以更改这些选项(例如,他们可以添加“通过心灵感应”或其他方式),但如果他们篡改“电子邮件”和“web门户”选项,他们就会破坏网站

这通常是一种情况,但这里有一个最新的例子:

公司有各种联系方式(地址、电话号码、电子邮件……),当他们发布招聘广告时,他们会在复选框中选择联系方式。它基本上是描述性数据。用户在阅读广告时会看到类似“您可以通过邮件,亲自申请…”的内容,除非是“通过门户网站”或“通过电子邮件”,因为此时应显示相应的按钮。这些选项存储在数据库中,客户端(网站所有者,而不是制作广告的公司)可以更改这些选项(例如,他们可以添加“通过心灵感应”或其他方式),但如果他们篡改“电子邮件”和“web门户”选项,他们就会破坏网站


所以,我应该如何处理所有行为都相同的数据,除了“this thing”以这种方式行为,以及“this thing”以其他方式行为,并且数据本身是活动的,应该由客户端进行编辑

您已经将您的问题标记为“语言不可知论”,并且并非所有语言都明确支持多态性,但这是我处理此问题的方式

每个选项都有一些类型,不同的类型需要设置不同的属性。但是,每种类型都支持某种“渲染”方法,可以根据需要显示contact方法。由于属性(电话号码或web地址等)是特定于类型的,因此您可以在创建这些“对象”时验证管理员的输入,以确保提供了必要的数据并且有效。由于实现了呈现方法,而不是吐出用户提供的HTML,因此可以确保呈现的页面是正确的。它不太灵活,但更安全,更友好


在数据库中,您可以有一个稀疏填充的表,用于保存所有类型的联系人的数据,也可以有一个具有公共属性的“父”表和具有特定类型属性的子表。这取决于你有多少种类型,它们有多不同。在任何一种情况下,您都会有某种类型的指示器,这样您就可以知道数据应该绑定到的对象的类型。

首先,您真的需要它吗。原因很简单。您应该服务于特定的需求,而输入数据是提供该服务的一种手段。如果数据不适合现有服务,那么它的价值是什么?谁是该特定信息的消费者


有两种可能的答案:你正在扩大你的客户群,或者因为需求的变化,你需要改变现有的服务。在这两种情况下,您都需要从业务模型的开发开始。如果你描述了你需要什么样的服务以及它应该提供什么样的信息,那么你就可以避免很多特定的数据,并提供易于在软件中实现的明确要求。

好吧,如果只是你有两个特别的选项,然后其他任何选项都以同样的方式处理,那么就把你的选项存储为字符串,如果列表中出现两个特殊项中的任何一个,则显示该特殊项的相应内容

只需检查您的两个特殊项目列表。没什么特别的。

写一篇非常简单的文章。您可以使用开箱即用的实现,也可以使用自己的实现。由于您的案例看起来很简单,我倾向于使用我自己的,因为这意味着更少的依赖关系(YMMV)。

基于提到的数据库,我建议使用。上面的链接对此进行了描述,但实际上比听起来简单得多。您编写了一个数据库查询,返回所有可能的选项(例如,您可能使用UNION或JOIN(取决于您的模式)一起读取标准选项和自定义选项)-然后,COALESCE SQL关键字可用于查找不为NULL的选项值的第一个“解析”