2017-01-05 17 views
5

Nếu một phương thức lớp không dựa vào trạng thái của lớp thì nó có thể là tĩnh. Có thực hành tốt hay xấu để thực hiện các phương pháp tĩnh như vậy trong trường hợp này?Thực hành tốt hay xấu là làm cho các phương pháp không trạng thái tĩnh?

(Tagged as C# nhưng có lẽ áp dụng cho nhiều ngôn ngữ OO nơi phương pháp phải là thành viên lớp.)

+0

Phân trang @JonSkeet, chắc chắn có vẻ như loại câu hỏi của anh ấy. –

Trả lời

4

Visual Studio Phân tích Mã và ReSharper gợi ý để thực hiện những phương pháp tĩnh, bởi vì có một lợi thế hiệu suất nhỏ:

Từ MSDN:

thành viên mà không truy cập vào dữ liệu mẫu hoặc gọi phương pháp dụ có thể được đánh dấu là tĩnh (chung trong Visual Basic). Sau khi bạn đánh dấu các phương thức là tĩnh, trình biên dịch sẽ phát ra các trang gọi không ảo cho các thành viên này. Phát ra các trang web cuộc gọi không ảo sẽ ngăn chặn một kiểm tra tại thời gian chạy cho mỗi cuộc gọi đảm bảo rằng con trỏ đối tượng hiện tại là không null. Điều này có thể đạt được hiệu suất có thể đo lường được đối với mã nhạy cảm với hiệu suất. Trong một số trường hợp, sự thất bại khi truy cập cá thể đối tượng hiện tại đại diện cho một vấn đề chính xác.

Đối với mã không có hiệu suất "nhạy cảm", đây là vấn đề về hương vị. Cá nhân tôi tuân theo lời đề nghị của ReSharper nếu tôi không có lý do chính đáng để không làm như vậy.

+0

Tôi không biết MSDN đã trình bày chi tiết như vậy, điều đó thực sự hữu ích khi biết –

+1

@ Mr.Boy nó không thực sự là MSDN, mà là Phân tích Mã VS, MSDN chỉ trình bày lý do tại sao CA gợi ý nó. –

1

Thực tiễn tốt hay xấu để thực hiện các phương pháp đó tĩnh ở đâu đây là trường hợp?

Thành thật mà nói, không có cách nào để nói rằng 100% đây là thực hành tốt hay xấu. Một số người theo nguyên tắc chung rằng nếu nó có thể được thực hiện tĩnh thì làm như vậy. Nó cho thấy rằng không có một yêu cầu về nhà nước, và về mặt kỹ thuật (ít nhất là trong C#) nó là một chút nhanh hơn.

Điều đó đang được nói, tất cả đều phụ thuộc vào thành phần của mã xung quanh các phương pháp và cách ứng dụng sẽ phát triển.

Các vấn đề liên quan