Đọc nhận xét code review bằng tiếng của bạn
Hình minh họa

Đọc nhận xét code review bằng tiếng của bạn

Code thì bằng tiếng Anh. Nhận xét của bạn thì không cần. Cách đọc nhận xét bằng một trong 25 ngôn ngữ ngay trên máy, và vì sao ghim ngôn ngữ lại quan trọng.

Teodor Deleanu3 tháng 9, 202610 phút đọc

Có một giả định thầm lặng được nướng sẵn vào phần lớn công cụ dành cho lập trình viên: code bằng tiếng Anh, vậy thì lập trình viên cũng phải vậy. Từ khoá tiếng Anh. Tên thư viện tiếng Anh. Thông báo lỗi tiếng Anh. Và thế là, theo lối lập luận đó, công cụ đọc chính tả cho lập trình viên có thể chỉ hỗ trợ tiếng Anh mà chẳng ai phiền.

Code review phá vỡ giả định đó ngay lập tức. Một nhận xét review không phải là code. Nó là một câu nói gửi tới một con người, và ở rất nhiều đội, con người đó dùng chung tiếng mẹ đẻ với bạn. Một đội người Romania review một dịch vụ Rust sẽ viết nhận xét bằng tiếng Romania về những định danh tiếng Anh. Một đội Ba Lan làm y như vậy bằng tiếng Ba Lan, một đội Đức bằng tiếng Đức. Code vẫn là tiếng Anh; cuộc trò chuyện về code thì không.

Đọc chính tả hợp một cách khác thường với nhận xét review, vì review là hoạt động đọc và việc gõ phím thì cắt ngang việc đọc. Nhưng nó chỉ hợp nếu nó chạy được đúng thứ tiếng mà nhận xét thực sự dùng. Bài này nói về cách làm cho điều đó chạy được: Keebye hỗ trợ những ngôn ngữ nào ngay trên máy, việc ghim ngôn ngữ hoạt động ra sao, và các mép giới hạn nằm ở đâu. Nếu bạn muốn lập luận vì sao chuyện này đáng quan tâm, đọc chính tả cho lập trình viên không nên chỉ có tiếng Anh nói điều đó; đây là phần tiếp nối thực hành.

Vì sao nhận xét review là mục tiêu lý tưởng của đọc chính tả

Một nhận xét review có ba tính chất khiến nó hợp với giọng nói hơn gần như mọi loại chữ khác của lập trình viên.

Nó ngắn. Phần lớn nhận xét dài một đến ba câu. Đó là một hơi thở, một lần giữ phím tắt, một lần phát ngôn.

Nó là văn xuôi. Khác với một commit message có định dạng cứng nhắc hay một file cấu hình đòi cú pháp chính xác, nhận xét review chỉ đơn giản là cách bạn sẽ giải thích vấn đề bằng miệng. "Chỗ này retry mãi nếu socket không bao giờ trả lời; đặt giới hạn đi." Bản nói và bản gõ gần như y hệt nhau.

Nó xảy ra khi mắt bạn đang bận. Bạn đang đọc một diff. Khoảnh khắc bạn dừng lại để gõ, bạn mất chỗ đang đọc. Đọc chính tả cho phép bạn tiếp tục đọc và nói nhận xét vào cái ô mà bạn đã bấm vào từ trước.

Giờ thêm chiều ngôn ngữ vào. Nếu đội bạn review bằng tiếng Ba Lan, một công cụ chỉ có tiếng Anh buộc bạn phải chọn: review bằng tiếng Anh (không tự nhiên, và đồng nghiệp có thể đọc chậm hơn) hoặc gõ tay (mất luôn cái lợi). Chẳng cái nào là thứ bạn muốn.

Keebye thực sự hỗ trợ những gì

Có hai engine chạy trên máy đáng nói ở đây, và nên nói cho chính xác.

Engine mặc định được tinh chỉnh cho tiếng Anh. Nó nhanh, nó là cái phần lớn mọi người dùng, và nó không phải cái bạn muốn dùng cho một nhận xét review tiếng Ba Lan. Chĩa vào lời nói không phải tiếng Anh, nó sẽ cho ra thứ tiếng Anh nghe hợp lý về mặt ngữ âm nhưng không phải điều bạn nói.

Engine thứ hai, Canary, bao đúng 25 ngôn ngữ: tiếng Bulgaria, Croatia, Séc, Đan Mạch, Hà Lan, Anh, Estonia, Phần Lan, Pháp, Đức, Hy Lạp, Hungary, Ý, Latvia, Litva, Malta, Ba Lan, Bồ Đào Nha, Romania, Nga, Slovakia, Slovenia, Tây Ban Nha, Thuỵ Điển và Ukraina. Nó là tuỳ chọn bật thêm, tải về một lần, và sau đó chạy ngoại tuyến như mọi thứ khác trong Keebye. Không phải một trăm ngôn ngữ; hai mươi lăm, liệt kê rõ, và nếu tiếng của bạn không có trong danh sách thì bài này chưa giúp được bạn.

Cũng có tuỳ chọn dùng bộ nhận dạng giọng nói gốc của Apple làm engine, kèm theo phạm vi ngôn ngữ riêng của nó trên máy Mac của bạn. Đó là một hướng riêng với đặc tính khác; phần còn lại của bài này nói về Canary.

Hãy ghim ngôn ngữ; đừng để nó đoán

Thiết lập quan trọng nhất cho việc review không bằng tiếng Anh là ghim ngôn ngữ.

Tự động nhận diện nghe có vẻ là mặc định đúng, nhưng với lập trình viên thì đó là mặc định sai. Nhận xét review đặc kín định danh tiếng Anh: tên hàm, tên gói, những chữ như "null", "async", "callback". Một nhận xét tám mươi phần trăm tiếng Romania và hai mươi phần trăm token tiếng Anh đưa cho bộ nhận diện ngôn ngữ đúng cái tín hiệu pha trộn mà nó xử lý tệ nhất. Nó sẽ lật giữa câu, hoặc quyết định cả câu là tiếng Anh, và bạn nhận được một bản ghi sai một cách tự tin. Ghim ngôn ngữ đọc chính tả của bạn mô tả kiểu hỏng này chi tiết.

Với Canary, Keebye cho phép bạn đặt ngôn ngữ một cách rõ ràng. Ghim tiếng Romania thì mô hình giải mã theo tiếng Romania; các định danh tiếng Anh nằm trong câu được xử lý như từ mượn chứ không phải bằng chứng rằng bạn đã đổi ngôn ngữ. Việc nhận ra một định danh lạ vẫn có thể chưa hoàn hảo, nhưng bản thân ngôn ngữ thì thôi không còn là chuyện tung đồng xu.

Một chi tiết hành vi đáng biết: ngôn ngữ đã ghim được đọc cho lần phát ngôn kế tiếp. Đổi ghim thì lần đọc bạn sắp thực hiện sẽ dùng nó; lần bạn vừa thả phím thì không được ghi lại. Trong thực tế nghĩa là: đổi trước, rồi mới nói. Nếu trong ngày bạn review bằng hai thứ tiếng, việc đổi rất rẻ. Khay ở thanh menu bày sẵn danh sách ngắn 11 ngôn ngữ để đổi nhanh, còn phần Cài đặt bày đủ cả 25.

Một phiên review, đọc bằng miệng

Đây là một phiên làm việc ở đội review bằng tiếng Romania.

Bạn mở pull request. Khay đã hiện tiếng Romania được ghim từ hôm qua, nên chẳng phải làm gì. Bạn đọc file đầu tiên. Đến hunk thứ ba, một vòng retry không giới hạn. Bấm vào ô nhận xét, giữ Command phải, nói nhận xét bằng tiếng Romania, thả ra. Chữ rơi xuống, chỗ "ừm" và một lần bắt đầu hụt đã bị phần dọn dẹp theo quy tắc loại đi, còn định danh reconnectSocket vẫn nguyên vì tuần trước bạn đã thêm nó vào từ điển tuỳ chỉnh.

File tiếp theo. Nhận xét bạn muốn để lại là một đề xuất code, không phải văn xuôi. Cái đó bạn gõ tay; đọc chính tả một cái diff là trải nghiệm tệ ở mọi ngôn ngữ.

Lát sau, một người đóng góp từ đội khác nhảy vào luồng và viết bằng tiếng Anh. Bạn muốn trả lời bằng tiếng Anh. Bấm vào khay, chọn tiếng Anh trong danh sách ngắn, và lần phát ngôn kế tiếp được giải mã theo tiếng Anh. Trả lời xong thì đổi lại.

Chẳng phần nào trong đó cần một cửa sổ. Keebye ở lại thanh menu; phím tắt hoạt động trong ứng dụng nào đang có tiêu điểm, dù đó là một tab trình duyệt chứa bản review, một Git client trên máy, hay một terminal đang chạy công cụ review dạng CLI.

Những giới hạn thành thật

Hai mươi lăm ngôn ngữ, không phải tất cả. Nếu bạn review bằng tiếng Thổ Nhĩ Kỳ, tiếng Nhật, tiếng Ả Rập hay bất kỳ ngôn ngữ nào ngoài danh sách Canary, engine thứ hai không bao được. Engine gốc của Apple thì có thể, tuỳ vào hỗ trợ ngôn ngữ của hệ thống bạn, nhưng đó là engine khác với hành vi khác.

Danh sách ngắn ở khay có mười một ngôn ngữ. Tiếng Anh, Romania, Pháp, Đức, Tây Ban Nha, Ý, Bồ Đào Nha, Hà Lan, Ba Lan, Nga và Ukraina cách bạn hai cú bấm. Mười bốn ngôn ngữ còn lại nằm trong Cài đặt. Nếu cặp ngôn ngữ hằng ngày của bạn gồm, chẳng hạn, tiếng Séc và tiếng Phần Lan, thì một bên phải đi qua Cài đặt.

Định danh thì vẫn là định danh. Một mô hình giọng nói ở bất kỳ ngôn ngữ nào cũng vất vả với snake_case_names. Từ điển giúp với những cái lặp đi lặp lại; phần còn lại bạn sửa tay. Hãy đọc lại nhận xét trước khi đăng.

Không có nhận dạng trực tiếp. Canary chuyển giọng thành chữ khi thả phím, theo từng lô. Bạn sẽ không thấy chữ hiện ra trong lúc nói. Với một nhận xét review dài một đến ba câu, điều này gần như không đáng kể.

Phần đánh bóng là tuỳ chọn và mặc định giữ nguyên văn. Nếu bạn bật phần đánh bóng bằng LLM cục bộ trên máy, nó sẽ gọn lại cấu trúc câu, và một chốt chặn độ trung thực sẽ quay về bản ghi thô khi kết quả cho thấy mất token nặng, phình ra hoặc lặp. Chốt chặn đó là một phép suy đoán; nó không kiểm tra xem ý bạn còn nguyên hay không. Với nhận xét review, nơi một phủ định bị lật làm đổi cả kết luận, hầu hết mọi người để tắt phần đánh bóng và để phần dọn dẹp theo quy tắc làm việc.

Chỗ đứng của chuyện này

Nếu ghim ngôn ngữ là tính năng bạn quan tâm nhất, Keebye vs Wispr Flow so sánh hai bên ở chỗ giọng nói được xử lý ở đâu và ngôn ngữ được xử lý ra sao, kể cả chỗ Wispr Flow hợp hơn. Với trường hợp rộng hơn là đọc chính tả trong lúc tay đang ở trên diff, hướng dẫn cho lập trình viên nói về chuyện hằng ngày, còn hướng dẫn cho Mac nói về phần cài đặt.

Cái giả định rằng lập trình viên chỉ dùng tiếng Anh chưa bao giờ đúng. Nó chỉ tiện cho các công cụ thôi. Review bằng tiếng của chính mình, bằng giọng nói, với lời nói không bao giờ rời khỏi máy, không phải một yêu cầu ngách. Đó là điều một phần lớn những người viết phần mềm sẽ làm, nếu công cụ cho phép.

Review bằng thứ tiếng bạn đang nghĩ

Bắt đầu bản dùng thử miễn phí, ghim ngôn ngữ của bạn, và đọc một nhận xét review đúng như cách bạn sẽ nói với đồng nghiệp.

Start free trial

Early access: we'll email you the moment the macOS build is ready — your 14 days start when you first sign in from the app.

Đọc tiếp