C - 我应该接受哪种类型的参数?(我们什么时候应该铸造?)
C++ - What type of parameters should I accept? (When should we cast?)
我正在使用mysql ,我们需要在其中进行查询,因此在将其发送到MySQL 包装器和数据库之前,有必要进行类型检查。在某些情况下,我们需要类似于int
类型的uid
之类的东西。但是,我也可以接受std::string
,并检查是否可以将其转换为整数号码。在某些解释语言中,没有这样的问题,因为所有类型均以字符串存储,并且您可以轻松地解析并使用int(str)
转换它们。问题是我什么时候应该喜欢转换?从字符串转换为其他类型可能会有一些便利:我可以使用字符串方法并绑定一些检查。但是什么是缺点?
几乎永远不会。具有类型的原因是指定意图或应使用方法的方式。
如果在呼叫链的末尾您需要一个int,则应反映在方法签名中。
铸造和int(str)之间也存在细微的差异。第二个不是铸件,而是涉及字符串的某种解析,以指定字符串是否实际代表数字。
在C 中,您必须尝试将字符串解析为int,检查转换是否成功并从那里继续。当您知道需要INT时,为什么要为此付费?
如果您以某种方式获得字符串,则可以在调用功能之前尝试解析它们。我认为这是这样干净的。
相关文章:
- 如果真的需要std::move,我们应该什么时候声明右值refs
- 当我们push_back元素时,std::vector 什么时候会放大自己?
- 我们什么时候应该在 C++ 中将析构函数声明为 =DELETE
- 我们什么时候应该使用std::enable_shared_from_this
- 我们什么时候需要在纯C 程序中使用结构?在纯C 程序中至关重要
- C - 我应该接受哪种类型的参数?(我们什么时候应该铸造?)
- 我们什么时候应该封装代码才能成为"Class"?
- 我们什么时候打破二进制兼容性
- 我们什么时候可以省略 C++11 lambda 中的返回类型
- 我们什么时候应该使用带括号和不带括号的 sizeof
- 我们什么时候必须在派生类 c++ 中定义析构函数
- 我们什么时候应该使用括号 ( ) 与初始值设定项 { } 语法来初始化 C++11 中的对象
- 我们什么时候实际上需要"明确的x值"?
- 创建线程时,我们什么时候必须使用LPTHREAD_START_ROUTINE
- 我们什么时候使用QMutexLocker重新锁定和解锁
- 我们应该在什么时候使用packsize来指定结构布局
- 我们什么时候需要先#ifdef再#def
- 我们什么时候在使用Connector/c++的代码中释放对象?
- 我们什么时候需要C++中的私有构造函数
- 为什么/什么时候我们应该更喜欢使用 std::swap;swap(a, b) over std::iter_swap(&a, &b)?