Questions tagged «type-safety»

20
静态类型值得权衡吗?
我主要是在没有类型安全性的地方开始使用Python进行编码,然后转移到存在C#和Java的地方。我发现我可以用Python更快地工作并且减轻头痛,但是再说一次,我的C#和Java应用程序的复杂性要高得多,所以我从未想过要对Python进行真正的压力测试。 Java和C#阵营听起来好像没有适当的类型安全性,大多数人会碰到各种可怕的错误,这比它的价值还要麻烦。 这不是语言比较,因此请不要解决编译与解释之类的问题。类型安全是否值得在开发速度和灵活性方面受到打击?为什么? 对于想要一个例子的人来说,动态打字速度更快: “在开发过程中使用动态类型的语言。它可以为您提供更快的反馈,周转时间和开发速度。” - http://blog.jayway.com/2010/04/14/static-typing-is-the-root-of-all-evil/

3
C ++强类型typedef
我一直在尝试一种声明强类型typedef的方法,以在编译阶段捕获某些类的错误。通常,我会将int类型定义为几种类型的id,或者将矢量类型化为位置或速度: typedef int EntityID; typedef int ModelID; typedef Vector3 Position; typedef Vector3 Velocity; 这可以使代码的意图更加清晰,但是经过一整夜的编码之后,人们可能会犯一些愚蠢的错误,例如比较不同类型的id或在速度上增加位置。 EntityID eID; ModelID mID; if ( eID == mID ) // <- Compiler sees nothing wrong { /*bug*/ } Position p; Velocity v; Position newP = p + v; // bug, meant p + v*s but …
49 c++  c++11  type-safety 

8
类型系统的安全益处是什么?
在道格拉斯·克罗克福德(Douglas Crockford)的《JavaScript:The Good Parts》中,他在继承章节中提到: 经典继承的另一个好处是它包括类型系统的规范。这主要使程序员不必编写显式的转换操作,这是一件非常好的事情,因为在转换时,类型系统的安全性丧失了。 那么首先,安全到底是什么?防止数据损坏,黑客或系统故障等? 类型系统的安全益处是什么?是什么让类型系统与众不同,才能提供这些安全优势?


3
为什么XML类型安全?
他们为什么说XML提供类型安全性,以及它如何在XML本身中表达? 与JSON(例如,据我所知)不是类型安全的JSON有何不同?
30 xml  type-safety 

2
是否可以在Haskell中“将维度转换为类型”?
假设我想编写一个处理向量和矩阵的库。是否可以将维度烘焙为类型,以使不兼容的维度的操作在编译时产生错误? 例如,我希望点积的签名类似于 dotprod :: Num a, VecDim d => Vector a d -> Vector a d -> a 其中d类型包含单个整数值(代表这些Vector的维)。 我想可以通过为每个整数定义一个单独的类型并将其分组为一个名为的类型类来实现VecDim。是否有某种机制可以“生成”此类类型? 还是一些更好/更简单的方法来实现同一目标?

5
在C ++中为所有对象使用对象(而不是原始类型)是否有意义?
在我最近从事的项目中,我不得不使用很多看起来像这样的函数: static bool getGPS(double plane_latitude, double plane_longitude, double plane_altitude, double plane_roll, double plane_pitch, double plane_heading, double gimbal_roll, double gimbal_pitch, double gimbal_yaw, int target_x, int target_y, double zoom, int image_width_pixels, int image_height_pixels, double & Target_Latitude, double & Target_Longitude, double & Target_Height); 所以我想重构它看起来像这样: static GPSCoordinate getGPS(GPSCoordinate plane, Angle3D planeAngle, Angle3D gimbalAngle, PixelCoordinate …


3
使用静态类型检查来防止业务错误
我非常喜欢静态类型检查。它可以防止您犯以下愚蠢的错误: // java code Adult a = new Adult(); a.setAge("Roger"); //static type checker would complain a.setName(42); //and here too 但这并不能阻止您做出如下愚蠢的错误: Adult a = new Adult(); // obviously you've mixed up these fields, but type checker won't complain a.setAge(150); // nobody's ever lived this old a.setWeight(42); // a 42lb adult would …

2
为什么Scala编译器不能为未密封的类/特征给出模式匹配警告?
如果我使用未密封的trait或abstract class在Scala中使用模式匹配,我想知道,编译器是否不知道在编译时针对该特定模式匹配,可以使用此特性/类的哪些可能的实现?所以,如果这样做,会不给模式匹配的警告,即使是在trait/ abstract class不密封,因为他知道哪些类型可以被使用,通过检查所有可能的依赖性/进口? 例如,如果我有一个,Option[A]并且我只为Some[A]但不为进行模式匹配None,则编译器会抱怨,因为Option是密封的。 如果编译器无法知道/解决该问题,那为什么不呢?如果编译器(理论上)可以做到这一点,那么在Scala中不使用它的原因是什么?还有其他支持这种行为的语言吗?

1
更改方法签名以在PHP中实现类
有没有关于PHP缺少泛型的体面工作,这些泛型允许静态代码检查以检测类型一致性? 我有一个抽象类,我想对其进行子类化,并且还强制其中一种方法从采用一种类型的参数更改为采用作为该参数的子类的参数。 abstract class AbstractProcessor { abstract function processItem(Item $item); } class WoodProcessor extends AbstractProcessor { function processItem(WoodItem $item){} } PHP不允许这样做,因为它正在更改不允许的方法签名。使用Java样式泛型,您可以执行以下操作: abstract class AbstractProcessor<T> { abstract function processItem(T $item); } class WoodProcessor extends AbstractProcessor<WoodItem> { function processItem(WoodItem $item); } 但是很明显,PHP不支持这些功能。 谷歌针对这个问题,人们建议使用instanceof在运行时检查错误,例如 class WoodProcessor extends AbstractProcessor { function processItem(Item $item){ if …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.