+2

[Programming 101] Return 1: Con số "biết nói" trong thế giới dòng lệnh

1. Ý nghĩa nguyên thủy: 1 = True (Sự thật)

Trong hầu hết các ngôn ngữ lập trình lâu đời (như C) hoặc các ngôn ngữ không có kiểu Boolean (true/false) rõ ràng, con số 1 đại diện cho giá trị Đúng (True), và 0 đại diện cho Sai (False).

Khi anh em viết một hàm kiểm tra điều kiện, ví dụ như is_admin(), việc return 1 giống như một cái gật đầu xác nhận: "Đúng rồi, ông này là Admin đấy!".

2. "Cú lừa" mang tên Exit Codes (Mã thoát hệ thống)

Đây là nơi mà anh em mới vào nghề rất dễ bị tẩu hỏa nhập ma. Trong lập trình hệ thống (C/C++), Shell Script (Linux), hoặc khi anh em viết một tiến trình chạy ngầm (Background Process):

  • return 0: Lại có nghĩa là Thành công (Success).
  • return 1 (hoặc một số khác 0): Có nghĩa là Thất bại (Failure/Error).

Tại sao lại ngược đời như vậy?

Vì trong hệ thống, "Thành công" chỉ có một trạng thái duy nhất (mọi thứ đều ổn), nhưng "Thất bại" thì có muôn hình vạn trạng. Người ta dành con số 0 cho sự hoàn hảo, và dùng các con số từ 1 trở đi để đánh mã lỗi (Error Code). Nếu chương trình của anh em return 1, nó đang báo cho hệ điều hành rằng: "Tôi bị lỗi rồi, và đây là lỗi loại 1 (General Error)".

3. return 1 trong thuật toán và đệ quy

Trong các bài toán thuật toán (như trên LeetCode hay HackTheBox), return 1 thường đóng vai trò là điểm dừng (Base Case) hoặc đánh dấu một trạng thái đã tìm thấy kết quả.

  • Tính giai thừa: if (n == 0) return 1; (Giai thừa của 0 là 1).
  • Tìm kiếm trong cây/đồ thị: Nếu tìm thấy phần tử cần tìm, ta return 1 để báo hiệu lên các lớp phía trên rằng "Đã tìm thấy!".

4. "Cái bẫy" Magic Number và nghệ thuật Clean Code

return 1 rất ngắn gọn, nhưng trong một dự án lớn, nó bị liệt vào hàng ngũ Magic Numbers (Những con số ma thuật không rõ nguồn gốc).

Nếu anh em viết:

if ($status == 'active') {
    return 1;
}

Người đọc code sau này (hoặc chính anh em 3 tháng sau) sẽ gãi đầu: "Ủa, 1 là Active? Hay 1 là Success? Hay 1 là nam giới?".

Giải pháp của các "Pro": Thay vì dùng số 1 trần trụi, hãy dùng Hằng số (Constants) hoặc Enums.

// Cách "sạch" hơn nhiều
const STATUS_ACTIVE = 1;

if ($status == 'active') {
    return self::STATUS_ACTIVE;
}

5. Ứng dụng trong SQL và Database

Anh em làm Backend chắc chắn đã từng thấy (hoặc viết) những câu query kiểu: SELECT 1 FROM users WHERE email = '...' LIMIT 1;

Ở đây, chúng ta không quan tâm dữ liệu trong bảng là gì, chúng ta chỉ muốn biết bản ghi đó có tồn tại hay không. Nếu có, database sẽ return 1. Đây là một kỹ thuật tối ưu hóa hiệu năng cực tốt vì database không cần phải tốn công load toàn bộ các column dữ liệu lên.

Lời kết

Con số 1 tuy nhỏ bé nhưng lại mang trên mình những trọng trách khác nhau tùy theo "mảnh đất" mà nó đứng. Hiểu rõ khi nào 1 là đúng, khi nào 1 là lỗi sẽ giúp anh em kiểm soát luồng dữ liệu của mình một cách chắc chắn hơn.

Anh em thì sao? Anh em thích dùng return true/false cho rõ ràng hay vẫn trung thành với phong cách return 1/0 của các cụ ngày xưa? Cùng chia sẻ quan điểm ở dưới comment nhé!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí