猿问

为什么我不应该用“匈牙利符号”?

为什么我不应该用“匈牙利符号”?

我知道匈牙利语所指的是什么-提供关于变量、参数或类型的信息,作为其名称的前缀。尽管在某些情况下,这似乎是一个好主意,但似乎每个人都疯狂地反对它。如果我觉得有用的信息正在被传授,为什么我不应该把它放在可以得到的地方呢?

另见:人们在现实世界中使用匈牙利命名惯例吗?


蝴蝶刀刀
浏览 526回答 3
3回答

繁星点点滴滴

他说的“申请”信息应该在类型系统中进行编码。..不应该依赖翻转变量名来确保不将不安全的数据传递给需要安全数据的函数。你应该把它变成一个类型错误,所以它是不可能这样做。任何不安全的数据都应该有标记为不安全的类型,这样就不能简单地将其传递给安全函数。要从不安全转换为安全,需要使用某种消毒功能进行处理。乔尔所说的“种类”的很多东西都不是种类,事实上,它们是类型的。然而,大多数语言所缺少的是一种类型系统,它具有足够的表现力来加强这种区别。例如,如果C有一种“强类型的类型”(在这种情况下,类型名称包含基类型的所有操作,但不能转换为基类型),那么许多这些问题就会消失。例如,如果你可以说,strong typedef std::string unsafe_string;引进一种新型unsafe_string无法转换为std:string(因此可以参与重载解决等)。那我们就不需要愚蠢的前缀了。所以,关于匈牙利语对非类型事物的中心说法是错误的。它被用于类型信息。当然,类型信息比传统的C类型信息更丰富;是类型信息编码了某种语义细节来表示对象的用途。但它仍然是类型信息,正确的解决方案一直是将其编码到类型系统中。将其编码到类型系统中是获得规则的正确验证和执行的最佳方法。变量的名字根本不切断芥末。换句话说,目标不应该是“让开发人员看错代码”。应该是“让错误的代码看起来不对”。到编译器".
随时随地看视频慕课网APP
我要回答