Tại sao lại nói như thế? Trước tiên hãy nói về việc đặt tên cho con.
Cha mẹ đặt tên cho con từ xưa đến nay có nhiều khuynh hướng:
- Đặt tên xấu để không bị thế lực nào đó bắt. Đó là lâu rồi, bây giờ chắc không còn nữa
- Đặt tên theo nguyện vọng của cha mẹ: Thái Bình, Thống Nhất, Hòa Bình, ... hoặc hơi xấu nhưng rất trông mong: Giàu, Dư, Thừa, Đủ, ...
- Đặt tên theo nghệ danh của đào hát cải lương, hoặc nghệ sĩ ca sĩ mà cha mẹ đang thần tượng: Thanh Nga, Kim Cương, Hùng Cường, Khánh Ly, ...
- Đặt tên theo sách (thường là sách chữ Nho của Khổng Mạnh) như Quốc Thái, Dân An, hoặc ngắn hơn nhưng cả chuỗi thì Nhân, Lễ, Nghĩa, Trí, Tín hoặc Nhân, Trí, Dũng
- Xu hướng hay nhất theo tôi đánh giá là đặt tên dựa trên kỳ vọng vào tương lai của con (sẽ đạt được gì, sẽ làm gì cho gia đình, cho đất nước).
Quay lại việc đặt tên trong lập trình: tên biến, tên thủ tục (sub), tên hàm (function).
Theo tôi, mỗi tên biến phải có ý nghĩa của giá trị mà nó chứa. Ý nghĩa dài quá thì nên viết tắt, nhưng viết tắt đủ để còn đọc hiểu.
Tên thủ tục và tên hàm nên đặt cho khớp với công việc mà thủ tục thực hiện, hoặc kết quả mà hàm trả về. (Vẫn có thể viết tắt chút đỉnh)
Nếu tiếng Việt không dấu (VBA nó ứ chịu dấu tiếng Việt) có thể gây khó hiểu hoặc gây nhầm lẫn, thì nên đặt tên bằng tiếng Anh
Nói thì đơn giản vậy, nhưng vẫn có chút vấn đề khi viết hàm người dùng sẽ sử dụng trên sheet viết trong công thức. Đây là ý kiến riêng của tôi, và có lẽ cũng phù hợp:
- Tên hàm để dùng được trên sheet cũng phải có ý nghĩa, và thêm 1 điều quan trọng cho việc dùng thường xuyên, đó là tên ngắn thôi. Người ta gõ công thức sẽ cảm thấy khó chịu khi phải gõ công thức =tachsochuoi(A1) hay =docsothanhchu(B5). Chưa kể hàm có vài ba tham số, tên tham số đọc chả hiểu cần điền gì , kể cả khi nhấn nút fx.
- Tên hàm nếu có thể, đặt bằng ý nghĩa mang tính khái quát để khi cải tiến hàm, không phải đổi tên vì tên không còn phù hợp với việc mở rộng phạm vi tính toán của hàm.
Thí dụ tôi viết hàm tách 1 chuỗi gồm cả ký tự số và ký tự chữ cái nhằm chỉ lấy các ký số. Tôi đặt tên hàm là TachSo.
Sau đó tôi cần tách 1 chuỗi như trên, nhưng lại lấy chữ cái, không lấy số, tôi nghĩ chả lẽ viết hàm mới là TachChu? Nếu cải tiến hàm TachSo thêm 1 đối số 1/ 2 gì đó để khi điền 1 thì tách lấy số, 2 thì tách lấy chữ cái thì quá đẹp. Tôi nghĩ vậy và làm vậy. Sau đó người dùng chửi: Tao tách chuỗi lấy ký tự chữ cái mà bắt tao dùng hàm TachSo, thấy ghét! mặc dù vẫn xài tốt.
Vậy thì sao? Vậy thì ngay từ đầu thay vì đặt tên TachSo, hãy nghĩ kỹ tương lai mình có thể mở rộng hàm kiểu gì, rộng đến đâu. Rồi chọn 1 cái tên chung hơn, rộng hơn như TachChuoi hoặc rộng hơn là TachKytu.
Đơn cử như hàm đọc số thành chữ (rất nhiều trên diễn đàn mình, và trong rất nhiều tool cá nhân, tool miễn phí hoặc có thu phí của trang web hội nhóm này kia, và cả các tool thương mại) không đặt như ý tôi trình bày trên.
Khi những người tiên phong viết lần đầu, thời thế khác, kinh tế khác, chỉ đọc số tiền, và chỉ có tiền Việt, không có hoặc có rất ít ngoại tệ; bèn đặt tên hàm là vnd (hoặc vndxx với xx là tên mình cho oai). Kết quả chỉ có 1 kiểu là "đồng Việt Nam" hoặc ngắn ngủn "đồng". Hết. Quy định tiền Việt nộp báo cáo nhà nước không có số thập phân, nên bỏ qua không viết code cho phần thập phân.
Thời thế thay đổi, có kinh doanh xuất nhập khẩu, đồng tiền thanh toán chủ yếu là đô la Mỹ. Cũng những người tiên phong này, bây giờ viết thêm hàm đọc số tiếng Anh, có 2 số thập phân (cũng quy định của nhà nước), đặt tên hàm là usd
Tiếp sau đó là kinh tế thị trường, mở rộng thương mại quốc tế, đủ thứ ngoại tệ. Bèn viết mở rộng ra thêm 1 đối số là "loại tiền tệ", thế là hàm vnd có thể đọc số thành chữ tất cả các loại tiền tệ. Không thấy ai thắc mắc tại sao tao đọc tiền Đô la Mỹ, ký hiệu quốc tế là USD (usd) mà kêu tao xài hàm vnd là "đồng Việt nam"! Mà sản phẩm lỡ chia sẻ/ bán cả chục năm, người dùng quen tay mất rồi, đổi tên rồi phải nói sao với hàng ngàn ngưới dùng đây!
Tương tự với đọc số tiếng Anh. Hàm usd cải tiến đọc đủ thứ tiền, kể cả tiền Việt! Cũng không ai thắc mắc "tao đọc tiếng Anh số tiền EURO mà phải xài hàm usd, tiền Việt trong hợp đồng tiếng Anh cũng phải đọc ra tiếng Anh, vậy mà tao phải dùng hàm usd để đọc vnd"
Cũng như trên, không thể đổi tên hàm khi người ta đã dùng quen chục năm rồi. Mà cũng chả cần đổi, vì chẳng ai thắc mắc.
Đó là các tiền bối đi tiên phong. Những người đi sau, giỏi hơn, dùng phiên bản lập trình mới hơn, viết lại mới hoàn toàn các hàm đọc số, nhưng vẫn theo lối mòn, vẫn đặt tên hàm là vnd và usd như những người lỡ đi trước. Họa chăng là thêm vài ký tự tên mình cho oai.
Tôi thấy rất ít người đặt tên hàm chung kiểu docsoVie, docsoEng, hay ToWordVi, ToWordEn, ... Vì bản chất công việc là ĐỌC SỐ THÀNH CHỮ TIẾNG VIỆT, ĐỌC SỐ THÀNH CHỮ TIẾNG ANH. Không phải chỉ đọc tiền Việt ra tiếng Việt, đọc tiền đô ra tiếng Anh. Rồi khi đọc ra tiếng Pháp, thì nên đặt tên hàm docsoFrc, đừng có đặt hàm frf.
Chưa nói trong các văn bản còn có việc đọc trọng lượng, thể tích, chiều cao, ... đủ loại đơn vị tính chứ không chỉ đọc số tiền. Kèm theo nó là đủ kiểu số thập phân: 1 con, 2 con, 3, 4 con.
Như vậy, so sánh việc đặt tên hàm VBA với đặt tên con mình đẻ ra, kỳ vọng nó mở mang rộng lớn ra chứ không bị bó buộc bởi thời thế, bởi thể chế, ... cũng là so sánh hợp lý.
Các bạn cho ý kiến thêm, hoặc phản biện, hoặc mắng, tôi đều xin nghe.
Cha mẹ đặt tên cho con từ xưa đến nay có nhiều khuynh hướng:
- Đặt tên xấu để không bị thế lực nào đó bắt. Đó là lâu rồi, bây giờ chắc không còn nữa
- Đặt tên theo nguyện vọng của cha mẹ: Thái Bình, Thống Nhất, Hòa Bình, ... hoặc hơi xấu nhưng rất trông mong: Giàu, Dư, Thừa, Đủ, ...
- Đặt tên theo nghệ danh của đào hát cải lương, hoặc nghệ sĩ ca sĩ mà cha mẹ đang thần tượng: Thanh Nga, Kim Cương, Hùng Cường, Khánh Ly, ...
- Đặt tên theo sách (thường là sách chữ Nho của Khổng Mạnh) như Quốc Thái, Dân An, hoặc ngắn hơn nhưng cả chuỗi thì Nhân, Lễ, Nghĩa, Trí, Tín hoặc Nhân, Trí, Dũng
- Xu hướng hay nhất theo tôi đánh giá là đặt tên dựa trên kỳ vọng vào tương lai của con (sẽ đạt được gì, sẽ làm gì cho gia đình, cho đất nước).
Quay lại việc đặt tên trong lập trình: tên biến, tên thủ tục (sub), tên hàm (function).
Theo tôi, mỗi tên biến phải có ý nghĩa của giá trị mà nó chứa. Ý nghĩa dài quá thì nên viết tắt, nhưng viết tắt đủ để còn đọc hiểu.
Tên thủ tục và tên hàm nên đặt cho khớp với công việc mà thủ tục thực hiện, hoặc kết quả mà hàm trả về. (Vẫn có thể viết tắt chút đỉnh)
Nếu tiếng Việt không dấu (VBA nó ứ chịu dấu tiếng Việt) có thể gây khó hiểu hoặc gây nhầm lẫn, thì nên đặt tên bằng tiếng Anh
Nói thì đơn giản vậy, nhưng vẫn có chút vấn đề khi viết hàm người dùng sẽ sử dụng trên sheet viết trong công thức. Đây là ý kiến riêng của tôi, và có lẽ cũng phù hợp:
- Tên hàm để dùng được trên sheet cũng phải có ý nghĩa, và thêm 1 điều quan trọng cho việc dùng thường xuyên, đó là tên ngắn thôi. Người ta gõ công thức sẽ cảm thấy khó chịu khi phải gõ công thức =tachsochuoi(A1) hay =docsothanhchu(B5). Chưa kể hàm có vài ba tham số, tên tham số đọc chả hiểu cần điền gì , kể cả khi nhấn nút fx.
- Tên hàm nếu có thể, đặt bằng ý nghĩa mang tính khái quát để khi cải tiến hàm, không phải đổi tên vì tên không còn phù hợp với việc mở rộng phạm vi tính toán của hàm.
Thí dụ tôi viết hàm tách 1 chuỗi gồm cả ký tự số và ký tự chữ cái nhằm chỉ lấy các ký số. Tôi đặt tên hàm là TachSo.
Sau đó tôi cần tách 1 chuỗi như trên, nhưng lại lấy chữ cái, không lấy số, tôi nghĩ chả lẽ viết hàm mới là TachChu? Nếu cải tiến hàm TachSo thêm 1 đối số 1/ 2 gì đó để khi điền 1 thì tách lấy số, 2 thì tách lấy chữ cái thì quá đẹp. Tôi nghĩ vậy và làm vậy. Sau đó người dùng chửi: Tao tách chuỗi lấy ký tự chữ cái mà bắt tao dùng hàm TachSo, thấy ghét! mặc dù vẫn xài tốt.
Vậy thì sao? Vậy thì ngay từ đầu thay vì đặt tên TachSo, hãy nghĩ kỹ tương lai mình có thể mở rộng hàm kiểu gì, rộng đến đâu. Rồi chọn 1 cái tên chung hơn, rộng hơn như TachChuoi hoặc rộng hơn là TachKytu.
Đơn cử như hàm đọc số thành chữ (rất nhiều trên diễn đàn mình, và trong rất nhiều tool cá nhân, tool miễn phí hoặc có thu phí của trang web hội nhóm này kia, và cả các tool thương mại) không đặt như ý tôi trình bày trên.
Khi những người tiên phong viết lần đầu, thời thế khác, kinh tế khác, chỉ đọc số tiền, và chỉ có tiền Việt, không có hoặc có rất ít ngoại tệ; bèn đặt tên hàm là vnd (hoặc vndxx với xx là tên mình cho oai). Kết quả chỉ có 1 kiểu là "đồng Việt Nam" hoặc ngắn ngủn "đồng". Hết. Quy định tiền Việt nộp báo cáo nhà nước không có số thập phân, nên bỏ qua không viết code cho phần thập phân.
Thời thế thay đổi, có kinh doanh xuất nhập khẩu, đồng tiền thanh toán chủ yếu là đô la Mỹ. Cũng những người tiên phong này, bây giờ viết thêm hàm đọc số tiếng Anh, có 2 số thập phân (cũng quy định của nhà nước), đặt tên hàm là usd
Tiếp sau đó là kinh tế thị trường, mở rộng thương mại quốc tế, đủ thứ ngoại tệ. Bèn viết mở rộng ra thêm 1 đối số là "loại tiền tệ", thế là hàm vnd có thể đọc số thành chữ tất cả các loại tiền tệ. Không thấy ai thắc mắc tại sao tao đọc tiền Đô la Mỹ, ký hiệu quốc tế là USD (usd) mà kêu tao xài hàm vnd là "đồng Việt nam"! Mà sản phẩm lỡ chia sẻ/ bán cả chục năm, người dùng quen tay mất rồi, đổi tên rồi phải nói sao với hàng ngàn ngưới dùng đây!
Tương tự với đọc số tiếng Anh. Hàm usd cải tiến đọc đủ thứ tiền, kể cả tiền Việt! Cũng không ai thắc mắc "tao đọc tiếng Anh số tiền EURO mà phải xài hàm usd, tiền Việt trong hợp đồng tiếng Anh cũng phải đọc ra tiếng Anh, vậy mà tao phải dùng hàm usd để đọc vnd"
Cũng như trên, không thể đổi tên hàm khi người ta đã dùng quen chục năm rồi. Mà cũng chả cần đổi, vì chẳng ai thắc mắc.
Đó là các tiền bối đi tiên phong. Những người đi sau, giỏi hơn, dùng phiên bản lập trình mới hơn, viết lại mới hoàn toàn các hàm đọc số, nhưng vẫn theo lối mòn, vẫn đặt tên hàm là vnd và usd như những người lỡ đi trước. Họa chăng là thêm vài ký tự tên mình cho oai.
Tôi thấy rất ít người đặt tên hàm chung kiểu docsoVie, docsoEng, hay ToWordVi, ToWordEn, ... Vì bản chất công việc là ĐỌC SỐ THÀNH CHỮ TIẾNG VIỆT, ĐỌC SỐ THÀNH CHỮ TIẾNG ANH. Không phải chỉ đọc tiền Việt ra tiếng Việt, đọc tiền đô ra tiếng Anh. Rồi khi đọc ra tiếng Pháp, thì nên đặt tên hàm docsoFrc, đừng có đặt hàm frf.
Chưa nói trong các văn bản còn có việc đọc trọng lượng, thể tích, chiều cao, ... đủ loại đơn vị tính chứ không chỉ đọc số tiền. Kèm theo nó là đủ kiểu số thập phân: 1 con, 2 con, 3, 4 con.
Như vậy, so sánh việc đặt tên hàm VBA với đặt tên con mình đẻ ra, kỳ vọng nó mở mang rộng lớn ra chứ không bị bó buộc bởi thời thế, bởi thể chế, ... cũng là so sánh hợp lý.
Các bạn cho ý kiến thêm, hoặc phản biện, hoặc mắng, tôi đều xin nghe.
Lần chỉnh sửa cuối: