Thứ Năm, 2 tháng 12, 2010

Đặt tên và ký tự gạch dưới

Thực ra chúng ta không có quá nhiều lựa chọn trong việc đặt tên, nhất là khi cần viết thư viện cho người khác sử dụng. Ở đâu quen đó. Bạn dùng ngôn ngữ nào thì nên tuân theo chuẩn được quy định của ngôn ngữ đó để người sử dụng có cảm giác xuyên suốt và thống nhất. Dưới đây là tóm lược quy ước của các ngôn ngữ thông dụng:

  • Java, Haskell: PascalCaseClass.camelCaseMethod()
  • C#: PascalCaseClass.PascalCaseMethod()
  • C++: underscore_separated_class::underscore_separated_method()
  • Ruby, Python: PascalCaseClass::underscore_separated_method()
  • Lisp: lisp-loves-hyphens
Mới đầu tôi khá hài lòng với quy ước viết hoa so le của Java. Nhưng càng về sau tôi càng cảm thấy thích sử dụng ký tự gạch ngang hoặc gạch dưới hơn, ít nhất là với tư cách người đọc code. Vì lý do nào đó tôi cảm thấy khó chịu khi đọc code có quá nhiều chữ cái viết hoa. Dù sao đây cũng chỉ là sở thích cá nhân nhưng tôi biết mình không phải là người duy nhất có cảm giác này.

Vấn đề bây giờ là ký tự gạch dưới tuy dễ đọc nhưng lại khó viết. Nó đem lại cho ngón tay út của bàn tay trái một cơn ác mộng khi cứ phải với ra nhấn/nhả Shift quá nhiều lần.

Từ đây tôi nghĩ ra một giải pháp đơn giản: ta sẽ bắt editor phải cho ra ký tự gạch dưới khi gõ ký tự gạch ngang trong các bối cảnh phù hợp. Một thuật toán tôi hiện sử dụng và khá thỏa mãn: nếu ký tự ngay trước đó là chữ cái hoặc chữ số thì mình biến gạch ngang thành gạch dưới và ngược lại.

Điều này rõ ràng không khó đối với đa số editor và IDE thông dụng. Ở đây tôi chia sẻ plugin tôi viết sẵn cho 2 editor ưa thích của mình: VimSublime Text.
Cập nhật: Sửa lại imap thành inoremap, sử dụng <expr> (thanks to anh Hoàng) và hỗ trợ tự động bật/tắt theo ngôn ngữ cho Vim plugin