Bài viết
Kho tài liệu và bài viết được chia sẻ, đánh giá bởi cộng đồng
Nội dung bài viết
- Giới thiệu
- CỤ THỂ
- 1. Sử dụng tên thể hiện rõ ý đồ
- 2. Tránh thông tin sai lệch (dis-information: trạng thái như đọc tên biến nhưng nó không chứa thông tin nào)
- 3. Tạo sự khác biệt có nghĩa
- 4. Sử dụng tên có thể phát âm
- 5. Sử dụng tên có thể tìm kiếm
- 6. Tên Class
- 7. Tên Method
- 8. Đừng dễ thương - dại khờ
- 9. Chọn một từ đại diện cho mỗi Concept
- 10. Đừng chơi chữ
- 11. Thêm context có ý nghĩa
Giới thiệu
Tên xuất hiện ở tất cả mọi nơi trong 1 chương trình. Chúng ta đặt tên cho Biến, Hàm, Đối số, Class, Packages… vân vân và mây mây, do đó chúng ta nên đặt tên theo những nguyên tắc sau đây để có 1 “TÊN TỐT”.
CỤ THỂ
1. Sử dụng tên thể hiện rõ ý đồ
Thay vì đặt tên:
Hãy đặt tên như sau, để không phải comment nữa:
Hoặc đoạn code không đầu đuôi sau đây:
Thật khó để biết đoạn code đang làm gì phải không?
1. theList là cái GIỀ thế?
2. tại sao lại là x[0] => có gì quan trọng à?
3. “số 4” đại diện cho cái gì?
4. Sử dụng cái List đã được trả về như thế nào?
Đáp án không được thể hiện trong code ví dụ, nhưng đáng lẽ phải có. Giả sử chúng ta đang lập trình game Mine Sweeper (dò mìn á). Danh sách các cell được gọi là theList (trong tiếng anh, khi có từ THE đằng trước 1 danh từ, nó ám chỉ rằng cái cả người viết & người đọc đều biết) => theList cái danh sách mà cả bạn và tôi đều biết. giờ đổi tên theList thành gameBoard
Thấy không, cấu trúc hàm, số lượng các phần tử không thay đổi, nhưng mà dễu hiểu hơn rồi.
Giờ nếu bạn đã có kiến thức cơ bản, hãy tìm cách nâng cao. Viết một số thứ thêm nữa; cách viết tôi ko nêu ở đây nhé (extention method cho Cell).
2. Tránh thông tin sai lệch (dis-information: trạng thái như đọc tên biến nhưng nó không chứa thông tin nào)
Đừng đánh đồng giữa Nhóm của một object nào đó với List. Ví dụ như: có một nhóm account => ta nên đặt tên thành: accountGroup; bunchOfAccounts; hoặc đơn giản là accounts. Chỉ đặt tên accountList trong trường hợp nó đúng là 1 List nhé.
Một điển hình đó là dùng chữ cái “i” viết hoa, “L” viết thường hoặc “o” viết hoa để đặt tên cho biến. Đọc đuối luôn.
3. Tạo sự khác biệt có nghĩa
Nếu names buộc phải viết khác đi, thì nó PHẢI có nghĩa khác.
Hiểu không? Xoắn não thì đọc lại nha.
4. Sử dụng tên có thể phát âm
Method trên COPY cái nào vào cái nào nhỉ? Đọc xuôi xong đọc ngược mới hiểu. Giờ viết lại 1 chút thôi.
Dễ rồi. Hàm copy mảng nguồn => đích.
Đặt tên có thể hiểu & dễ phát âm. Tuy nhiên đặt tên như ví dụ sau là chết đây nè:
Rồi xong, giờ thì gọi cái nào ra để dùng? Lại cần đến comment à?
Ví dụ tiếp:
Nên chuyển thành:
5. Sử dụng tên có thể tìm kiếm
Cùng xem 1 ví dụ như sau:
Nên chuyển thành:
“sum” có thể chưa hoàn toàn chuẩn, nhưng mà ít ra cũng “TÌM ĐƯỢC”.
6. Tên Class
Các Class và Object nên là một danh từ hoặc một cụm danh từ
kiểu như Customer, Wikipage, Account, AddressParser.
Tránh những từ như
Manager, Proccessor, Data, Info
trong tên của class.
Tên của Class không nên có động từ (chúng ta cũng nên đặt tên bằng tiếng anh hơn là bằng tiếng việt vì vừa có thể học thêm 1 số từ cũng như để cho chuyên nghiệp, mạch lạc hơn)
7. Tên Method
Khác với tên Class hay Object, Method chỉ một hành động cho chương trình thực hiện nên
tên của nó nên là một (hoặc một cụm) động từ
kiểu như PostPayment, DeletePage, Save,...
Đặt tên với tiền tố Get đối với method có giá trị trả về, Set đối với method gán dữ liệu, Is đối với method hoặc property kiểm tra.
Khi overload (nạp chồng) constructor, Sử dụng extension method:
8. Đừng dễ thương - dại khờ
Đừng đặt tên theo kiểu “ĐÙA NGHỊCH”, đoạn này tôi sẽ dùng các ví dụ tiếng việt để làm sinh động thêm ý muốn truyền tải:
- Kiểm tra đối tượng
thì không nên dùng
- Thực thi hành động với một nhân vật (game chẳng hạn)
thì không nên dùng
9. Chọn một từ đại diện cho mỗi Concept
Đặt các tiền tố loạn xì ngầu lên: fetch, retrieve, get …. Cho cùng chung một mục đích lấy dữ liệu là không khôn ngoan.
10. Đừng chơi chữ
Method “Add” dường như đã quá quen thuộc phải không? Vậy bây giờ nếu muốn thêm một phần tử vào đối tượng của bạn, hãy viết method Add –Thêm vào – cho nó nhé, đừng viết Append – để ám chỉ mục đích Add, bởi lẽ Append là chèn thêm phần tử vào cuối một danh sách. Dùng từ linh tinh có ngày vỡ mồm vì debug không nổi.
11. Thêm context có ý nghĩa
Đọc firstName, lastName, state, province, street, houseNumber người ta có thể dễ dàng biết đó là ĐỊA CHỈ CỦA CÁ NHÂN, nhưng nếu chỉ có mỗi “state” đứng 1 mình em (trúc xinh @@!!) thì lúc này bạn còn nghĩ đó là đang ám chỉ địa chỉ của 1 người không?
Nên sẽ có những lúc phải thêm “BỐI CẢNH - Context” cho một biến để biến đó trở nên có ý nghĩa hơn. Ví dụ: addrfirstName, addrLastName, addrState, addrProvince, addrStreet, addrHouseNumber.
PS: Không có gì là CHUẨN NHẤT, chỉ có cái thuận tiện giúp mình viết code dễ đọc hơn thôi.
Bài viết dựa trên sách CleanCode, ai cần thì tìm đọc bản gốc nhé.
Nội dung bài viết
- Giới thiệu
- CỤ THỂ
- 1. Sử dụng tên thể hiện rõ ý đồ
- 2. Tránh thông tin sai lệch (dis-information: trạng thái như đọc tên biến nhưng nó không chứa thông tin nào)
- 3. Tạo sự khác biệt có nghĩa
- 4. Sử dụng tên có thể phát âm
- 5. Sử dụng tên có thể tìm kiếm
- 6. Tên Class
- 7. Tên Method
- 8. Đừng dễ thương - dại khờ
- 9. Chọn một từ đại diện cho mỗi Concept
- 10. Đừng chơi chữ
- 11. Thêm context có ý nghĩa