Tạo function sao cho clean code

Hi there ! Em đọc được cái này trên mạng

Em hiểu ý tác giả là nhận tham số theo kiểu Call by value, Cho em hỏi còn trường hợp các method nhận tham số theo kiểu tham chiếu ( call by reference ) thì sao ạ ?

Nguồn https://kipalog.com/posts/function-la-khi-gi-
( em định hỏi chủ topic mà thấy chủ top không còn hoạt động nữa )

Rốt cuộc câu hỏi chính xác của bạn là gì?
1/ Muốn tìm cách tạo Clean Fucntion?
2/ Hỏi về tính đúng sai của thông tin bạn đã đọc?

5 Likes

Em hỏi về tính đúng sai của nhận định này ạ, vì còn trường hợp tham chiếu sẽ làm đổi giá trị của input đó anh.

nhận định này đúng nha :V

hàm mà thay đổi giá trị được cho dễ dẫn tới các “phản ứng phụ”, thông thường bỏ qua được nhưng khi xài đa luồng thì gặp vấn đề ông thread này dẫm chân bà thread kia rất mệt mỏi :V

5 Likes

Thông tin bạn đọc có tính 2 chiều.
1/ Sai trong những trường hợp sau:

  • Customized Constructor
  • Đôi khi một số case cần security, trong file/class cần thay đổi value của variables, nhưng ko muốn variables có thể bị access từ bên ngoài thì variables phải private -> muốn change value của variable thì buộc phải có function mà input là value gì đấy, và function này sẽ change trực tiếp values của các variables của file/class kia mà ko để các variables bị access từ bên ngoài.

2/ Đúng, các case còn lại.

6 Likes

Thuật ngữ nó là “Pure function” nhé bạn :slight_smile:

Bao gồm:

  • Với một tuple tham số luôn trả về duy nhất một kết quả (given parameters only - như Toán)
  • Không có side effect

Như vậy:

  • Pure function mà không có tham số là vô dụng
  • Chương trình dùng toàn pure function là vô dụng :slight_smile:
6 Likes

Một số trường hợp input vào nhiều params, tính ra giá trị mới xong phải gán lại cho các params đó, mình dùng luôn call by reference, đỡ được mấy dòng phép gán :kissing:
Tất nhiên không phải lúc nào cũng dùng, nhưng nếu xác định được tầm ảnh hưởng của nó thì dùng cũng không sao.
Lập trình dựa theo tư duy chứ không phải áp dụng máy móc.
Phải nhìn thẳng vào từng case chứ không phải đem 1 quan điểm áp dụng cho tất cả mọi case.

5 Likes

Trường hợp này nói đến ngôn ngữ lập trình nào nhỉ?

JavaScript thì mình thấy clean code đối với một số lập trình viên đó là function không có tên (anonymous function), thi thoảng có vài đại ca còn dùng đệ quy cho function không tên này nữa. Cái này có thể clean code với người viết, còn với người mới vào nghề, đọc code chắc muốn bỏ cuộc sớm. Nó là vague code chứ không clean code.

6 Likes

Pure function thì lập trình hàm mới dùng nhiều.

Do không có cú pháp cho namespace nên phải giấu tên không lại tên đầy global namespace.

4 Likes

Tác giả này có khác nhiều bài viết hay, bạn nên tìm đọc
Tuy nhiên, đây là tác giả chuyên code js, và ngay cả bài bạn đọc cũng có gắn tag là javascript, nên bài viết sẽ áp dụng cho js
Với JS, pure function đang là trend

4 Likes

(C++) Ngoài call by value ko thay đổi giá trị còn có thể dùng reference kết hợp từ khoá const mà, vừa tránh copy lại ko thay đổi biến truyền vào.

3 Likes

Yêu cầu “không thay đồi giá trị của biến truyền vào” là áp dụng với mọi kiểu truyền (tham trị hay tham chiếu), chứ không giới hạn với “call by value”.

Mà thực ra, suy xét kĩ thì đối tượng nó nhắm đến là “by reference” hơn. Bởi “by value” thì bạn đâu có thay đổi giá trị của biến bên ngoài được.

Ví dụ với một ngôn ngữ compile như sau:

int square(int x)
{
    return x*x;
}

int a = 2;
square(a);

thì hàm square đâu thay đổi giá trị của biến a được.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?