Thực hiện các phương pháp hay nhất: Bạn nên sử dụng một phương pháp hay một hàm?

Một trong những quyết định quan trọng khi xây dựng chương trình cờ vây, trong số nhiều quyết định khác, làcách tổ chức chức năng chương trình.

Đặc biệt, trong bài viết này tôi sẽ giải thíchkhi nào bạn nên sử dụng một phương thức và khi nào bạn nên sử dụng một hàm.

Hai tùy chọn khá giống nhau trong định nghĩa của chúng. Sự khác biệt duy nhất là một phương thức được đính kèm với một loại:

// function
func something(s string) {}

//methods func (MyType) something(s string) {} func (*MyType) something(s string) {}

Nếu bạn đến từ một ngôn ngữ hướng đối tượng như Ruby, Python hoặc PHP hiện đại, bạn có thể bị cám dỗ để xây dựng tất cả mã của mình xung quanh các kiểu và phương thức, vì đó là cách mà những ngôn ngữ đó buộc bạn phải suy nghĩ. Không có gì bên ngoài các đối tượng và phương thức.

Nếu bạn đến từ mộtJavaScriptnền bạn có thể coi các phương thức là phương thức nguyên mẫu đối tượng, mà tôi nghĩ là một so sánh tốt nếu bạn đến từ JavaScript tiền lớp cũ tốt, trong khi các hàm chỉ là các hàm.

Đó là một vấn đề của trạng thái

Các chức năng không phụ thuộc vào trạng thái theo bất kỳ cách nào.

Theo định nghĩa toán học, một hàm được cung cấp một số tham số đầu vào, các giá trị đầu ra sẽ luôn giống nhau.

Mặt khác, các phương thức được liên kết chặt chẽ với kiểu mà chúng được gắn vào, vì chúng xác định hành vi của nó và sử dụng giá trị của nó.

Chúng nhận được một số giá trị từ kiểu chúng được định nghĩa chống lại và nếu chúng có bộ thu con trỏ, chúng sẽ thao túng trạng thái của nó.

Nếu các phương thức của bạn không phụ thuộc vào trạng thái, chúng có thể nên được định nghĩa là các hàm.

Tín dụng

Lấy cảm hứng từ bài nói chuyện của Steve Francia “7 lỗi thường gặp trong cờ vây và cách tránh chúng”: