Lỗi khởi tạo biến static

Hồi còn non nghề, tôi có viết code như thế này: // file welcome.h class Welcome { public: static void sayHello(const std::string& name); }; // file welcome.cpp const static std::string hello = "hello"; void Welcome::sayHello(const std::string& name) { std::cout << hello << " " << name << "!" << std::endl; } Test trên máy chạy mình ok, QA test chạy ok trên MacOS, Windows, nhưng khi bắt đầu build cho mobile platform (iOS/Android) thì khi chạy bị crash. Root cause: biến static `hello` chưa được khởi tạo khi hàm `Welcome::sayHello` được gọi. Từ đó trở đi, mỗi lần viết code, đều sẽ chú ý đến các biến static, đánh gía biến này sẽ khởi tạo khi nào, huỷ khi nào. Và nếu không thực sự cần thiết thì không dùng biến static. Sau này khi làm tech lead, mình setup sonar để check coding rules cho từng pull request, những lỗi như này sẽ không bao giờ pass được bước code analysis, nhàn hơn rất nhiều. Case huỷ biến static thì sẽ nói ở bài khác.

Comments