×

Sử dụng or_eq để thay thế cho |= trong C++

Trong ngôn ngữ lập trình C++, các phép toán bitwise là một phần quan trọng của lập trình cấp thấp, giúp tối ưu hóa và thao tác trực tiếp với các bits. Một trong những phép toán này là phép OR bitwise (|=), dùng để gán giá trị sau khi thực hiện phép OR bitwise giữa hai biến.

Ví dụ cơ bản của phép OR bitwise có thể được thấy qua đoạn mã sau:

int a = 5;  // 0101 in binary
int b = 3;  // 0011 in binary
a |= b;     // a becomes 0111 in binary which is 7 in decimal

Trong ví dụ trên, biến a sẽ nhận giá trị mới là 7 sau khi thực hiện phép OR bitwise giữa ab.

Tuy nhiên, kể từ phiên bản C++20, ngôn ngữ này đã giới thiệu các toán tử hợp lý được gọi là "operator keywords". Các từ khóa này làm cho mã nguồn dễ đọc hơn và rõ ràng hơn. Một trong các từ khóa mới được phép sử dụng thay thế cho |=, đó là or_eq.

Bạn có thể viết lại đoạn mã trên bằng cách sử dụng or_eq thay vì |=:

int a = 5;  // 0101 in binary
int b = 3;  // 0011 in binary
a or_eq b;  // a becomes 0111 in binary which is 7 in decimal

Việc thay thế |= bằng or_eq không làm thay đổi hiệu quả của đoạn mã, mà chỉ thay đổi cú pháp. Mặc dù chức năng vẫn giữ nguyên, nhưng việc sử dụng or_eq có thể cải thiện tính đọc của đoạn mã, đặc biệt đối với những người mới học C++ hoặc quen với cú pháp ngôn ngữ tự nhiên hơn.

Dưới đây là một số ví dụ khác để làm rõ sự thay thế này:

Ví dụ 1:

Trước C++20 với toán tử |=:

unsigned int flags = 0b0101;  // Flags initial state
unsigned int mask = 0b0010;   // Mask to set specific bit
flags |= mask;                // Set the bit according to the mask

Sau C++20 với từ khóa or_eq:

unsigned int flags = 0b0101;
unsigned int mask = 0b0010;
flags or_eq mask;

Ví dụ 2:

Sử dụng trong cấu trúc điều kiện và vòng lặp để minh họa thêm:

bool conditionA = true;
bool conditionB = false;
bool result = conditionA;
result |= conditionB;  // result is still true

Chuyển đổi dùng or_eq:

bool conditionA = true;
bool conditionB = false;
bool result = conditionA;
result or_eq conditionB;

Ưu điểm của việc sử dụng operator keywords:

  1. Đọc dễ dàng hơn: Những từ khóa như or_eq làm cho mã nguồn dễ hiểu hơn ngay cả khi người đọc không quen thuộc với các ký hiệu toán tử.
  2. Tránh lỗi khi đánh máy: Sử dụng từ khóa có thể giảm thiểu sự nhầm lẫn với các ký tự tương tự.
  3. Nhất quán hơn: Giúp mã nguồn dễ dàng nhất quán trong các codebase lớn, đặc biệt khi học cú pháp mới và giữ cho việc đọc mã liền mạch hơn.

Dù sao, quyết định sử dụng ký hiệu toán tử truyền thống hay từ khóa mới hoàn toàn phụ thuộc vào phong cách lập trình của cá nhân hay nhóm phát triển. Điều quan trọng là mã nguồn phải được duy trì nhất quán và dễ đọc đối với tất cả mọi người tham gia vào dự án.

Comments