Dev Owns Quality

  1. Dev owns quality means better codes.
  2. Dev owns quality means find bug easily.
  3. Dev owns quality means find bug early, much earlier. We know the later you find a bug, the more expensive to fix.
  4. Dev owns quality means reduce the hand off, more efficient and more fast.
  5. Dev owns quality means test ability. When dev owns quality, dev has to think about how to test it when write code. They can’t be tested manually. Test automation is the only way to go, otherwise, he is not going to have time to write new codes any more but doing manual testing all the time :)

译:

  1. 开发对质量负责,意味着质量更高的代码;
  2. 开发对质量负责,意味着更容易定位BUG;
  3. 开发对质量负责,意味着尽可能的发现BUG。越迟发现BUG,修复它所产生的成本就越高。
  4. 开发对质量负责,意味着减少不必要的相互接口,具有更高的开发效率和更快的响应;
  5. 开发对质量负责,意味着具有更好的可测性。当开发有更高的质量意识时,开发之前他就会考虑到如何对自己的代码进行充分的测试。开发是会进行手工测试的。自动化测试时唯一可行的方法,开发人员是不情愿为了测试增加新代码和进行手动测试的。

Here,you might think this is TDD. Dev owns quality means use TDD. 

Well, not exactly.  My experience with TDD is more in the ideally world. I don’t see any team yet use pure TDD. 

Most teams use what we called delay TDD. You still write code first, and then write test, then do the refactoring, in the end submit both code and test at the same time. 

译:

读到这里,也许你会认为这是测试驱动开发(TDD)。开发人员对质量负责的软件开发确实需要使用TDD。

然而,这种观点也不确切。我的TDD经验告诉我,TDD可能过于理想化。你可能找不到纯粹使用TDD的团队。

更多的团队使用着他们所认为的TDD:开发人员会先写代码,然后再写测试代码,再然后重构代码,最后提交代码和测试同步进行。

This is more nature way to develop software and achieve the same goal of TDD, meanwhile it’s much easy to adopt vs pure TDD which is completely opposite of what you came along. furthermore, dev owns quality can be extended to owning functional testing, i.e not only making sure  unit works by unit testing, but also make sure component works by functional testing.

译:

这是理所应当的软件开发过程,也可以获得和TDD同样的目的,同时也非常容易被抵触纯粹TDD开发的团队所接受。开发负责质量可以进位扩展到负责功能测试。比如,不仅仅为了单元测试而编写单元测试,同时可以考虑编写子模块内部的功能测试代码。




<think>首先,用户的问题是:“owns_lock在c++中使用”,意思是“owns_lock在C++中的使用”。我需要用中文回答问题。 关键点是“owns_lock”,这在C++中与互斥锁相关。在C++标准库中,std::unique_lock和std::shared_lock等类有一个成员函数叫owns_lock(),它返回一个布尔值,表示当前锁是否被拥有(即是否已锁定)。 所以,我应该解释owns_lock()的作用和使用场景。 回答结构: 1. 解释owns_lock是什么。 2. 描述它在C++中的使用方式。 3. 提供一个简单的代码示例来演示。 代码示例应该用C++,因为用户提到了C++。用户提供了示例格式,其中有Python代码,但这里应该用C++。 在回答末尾,我必须提出3-5个相关问题。第一行必须是“§§相关问题§§”,然后列出问题,用数字标记,如1. 2. 3. 等。不能换行分散。 相关问题应该基于用户的问题和我的回答。用户的问题是“owns_lock在c++中使用”,所以相关问题应该围绕C++的锁机制、owns_lock的细节等。 可能的回答内容: - 解释owns_lock:owns_lock()是std::unique_lock和std::shared_lock的成员函数,返回bool,表示锁是否被当前对象拥有。 - 使用场景:在锁定和解锁操作后检查锁的状态,避免双重锁定或解锁。 - 代码示例:一个简单的例子,使用std::mutex和std::unique_lock。 代码示例: ```cpp #include <iostream> #include <mutex> int main() { std::mutex mtx; std::unique_lock<std::mutex> lock(mtx, std::defer_lock); // 延迟锁定 if (lock.owns_lock()) { std::cout << "锁已被拥有。\n"; } else { std::cout << "锁未被拥有。\n"; } lock.lock(); // 手动锁定 if (lock.owns_lock()) { std::cout << "现在锁已被拥有。\n"; } lock.unlock(); // 手动解锁 if (!lock.owns_lock()) { std::cout << "锁已被释放。\n"; } return 0; } ``` 在代码中,我使用了std::defer_lock来延迟锁定,以便演示owns_lock()的变化。 现在,对于相关问题,我需要提出3-5个。基于主题: 1. std::unique_lock和std::lock_guard有什么区别? 2. 在C++中,如何避免死锁? 3. owns_lock()在多线程环境中的重要性是什么? 4. 如果owns_lock()返回false,尝试解锁会怎样? 5. C++17引入了哪些新的锁特性? 确保3-5个问题。 最后,输出格式: - 先回答问题。 - 然后“§§相关问题§§” - 然后问题列表。 所有内容必须符合规则。</think>### 在C++中使用`owns_lock`的解释 `owns_lock`是C++标准库中`std::unique_lock`和`std::shared_lock`类的成员函数,用于检查当前锁对象是否拥有锁(即是否已成功锁定)。它返回一个布尔值: - `true`:表示锁已被当前对象拥有(例如,在调用`lock()`后)。 - `false`:表示锁未被拥有(例如,在构造时使用`std::defer_lock`延迟锁定,或调用`unlock()`后)。 #### 使用场景 - 在多线程编程中,避免双重锁定(double locking)或无效解锁(unlocking when not locked)。 - 常用于条件变量(`std::condition_variable`)的等待操作中,确保锁状态正确。 #### 示例代码 ```cpp #include <iostream> #include <mutex> int main() { std::mutex mtx; // 使用std::defer_lock延迟锁定 std::unique_lock<std::mutex> lock(mtx, std::defer_lock); // 检查初始状态 std::cout << "初始状态: owns_lock = " << lock.owns_lock() << "\n"; // 输出0 (false) lock.lock(); // 手动锁定 std::cout << "锁定后: owns_lock = " << lock.owns_lock() << "\n"; // 输出1 (true) lock.unlock(); // 手动解锁 std::cout << "解锁后: owns_lock = " << lock.owns_lock() << "\n"; // 输出0 (false) return 0; } ``` **输出示例**: ``` 初始状态: owns_lock = 0 锁定后: owns_lock = 1 解锁后: owns_lock = 0 ``` 在代码中,`owns_lock()`用于验证锁状态,确保线程安全操作。如果尝试在`owns_lock() == false`时解锁,会抛出`std::system_error`异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值