Đặt tên hàm tự tạo khi lập trình như thế nào? Nên giống như đặt tên con mình sinh ra!

Liên hệ QC

ptm0412

Bad Excel Member
Thành viên BQT
Administrator
Tham gia
4/11/07
Bài viết
13,797
Được thích
36,301
Donate (Momo)
Donate
Giới tính
Nam
Nghề nghiệp
Consultant
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.
 
Lần chỉnh sửa cuối:
Trước khi nói chuyện đặt tên thì phải biết mình theo trường phái đặt tên nào.
Ở dưới đây, từ "đối tượng" được dùng để chỉ hằng, biến, hàm.

1. Trường phái Hung-ga-ri
- 2 ký tự đầu tiên cho biết đối tượng là loại gì. Ví dụ in là integer, lg là long, tx là text...
- Trường phái này về sau rất ít người theo, vì sự nổi lên của LTHĐT.

2. Trường phái lạc đà:
- Tên hàm: mọi từ đều viết hoa ký tự đầu.
- Tên biến: mọi từ đều viết hoa ký tự đầu, trừ từ đầu tiên
- Tên hằng: mọi từ đều viết hoa tất cả ký tự. Nếu cần phân biệt từ thì dùng dấu gạch dưới "_"

3. Trường phái phân biệt biến nội, biến ngoại và tham số:
- Thường thì biến nội được dẫn đầu bằng hai dấu gạch dưới.

4. Các trường phái khác, có thể còn tùy theo ngôn ngữ.
 
Upvote 0
Trước khi nói chuyện đặt tên thì phải biết mình theo trường phái đặt tên nào.
Bài 1 tôi viết dài dòng vậy nhưng chủ yếu là tên hàm và ý nghĩa của hàm (kết quả trả về). Tên biến thì tôi không có thí dụ nào để chê trách, vì dù sao nó cũng chạy ngầm ở dưới, người sử dụng không biết để mà la lên. Tên hàm sử dụng trong công thức sheet thì người dùng họ thấy rõ ràng và họ có thể la lên.
 
Upvote 0
Với function có argument thì xuất hiện biến/ hằng rồi. Khi đó nó sẽ xuất hiện ở: Hướng dẫn sử dụng, gợi ý khi dùng UDF (nhấn ctrl + shift + A).
Cái đó có đề cập rồi

1690277776125.png

Nói chung bài 1 chủ yếu nói về tên đặt phản cảm đối với người dùng
 
Upvote 0
...
Nói chung bài 1 chủ yếu nói về tên đặt phản cảm đối với người dùng
Dân chuyên lập trình chia code ra hai loại:
1. Loại chính chắn, sử dụng lâu dài. Loại này mới cần tên cho đúng đắn.
2. Loại chữa cháy, chỉ dùng 1-2 lần rồi bỏ. Loại này người ra có cách đặt tên riêng của mình. Thường thì dân Unix khoái hai cái tên Foo và Bar, tôi thì thích ToTiTe.

Chú thích: muoons đặt tên Tây cũng nên cẩn thận. Thấy có mấy người ở đây đặt cái tên buồn cười muốn chết. Cũng có khi dùng tĩnh/động tự không đúng, nó có nghĩa khác.
 
Upvote 0
Đó là 1 cách đặt tên theo phim ảnh rồi. Có người còn đặt tên theo cầu thủ bóng đá, ca sĩ, danh nhân, ...
Ở đây (GPE) có tên Trần Hưng Đạo là oai nhất :)
mọi từ đều viết hoa tất cả ký tự. Nếu cần phân biệt từ thì dùng dấu gạch dưới "_"
Không có dấu gạch phân cách từ dễ gây hiểu sai. Tôi thường viết hoa đầu từ, dài quá thì viết tắt cũng phải phân từ ra. Mình đọc còn không hiểu thì ai mà hiểu.
 
Upvote 0
Web KT
Back
Top Bottom