Số lượng tham số đối đa trong một method Java

Đã bao giờ các bạn tự hỏi liệu một method trong Java có thể nhận tối đa bao nhiêu tham số chưa? Bản thân mình đi làm máy năm nay rất hiếm khi viết một method nhiều hơn 10 tham số. Mà thông thường chỉ từ 3 đến 4 tham số là tối đa rồi, nên con số được đưa ra trong bài viết này chỉ nhầm mục đích “biết thì biết vậy thôi”, các bạn không cần nhớ đâu nhé.

Số lượng tham số tối đa trong một method được JVM specification định nghĩa như sau:

The number of method parameters is limited to 255 by the definition of a method descriptor (§4.3.3), where the limit includes one unit for this in the case of instance or interface method invocations.

Trong section §4.3.3 còn cung cấp một số thông tin sau

A method descriptor is valid only if it represents method parameters with a total length of 255 or less, where that length includes the contribution for this in the case of instance or interface method invocations.

The total length is calculated by summing the contributions of the individual parameters, where a parameter of type long or double contributes two units to the length and a parameter of any other type contributes one unit.

Như vậy có nghĩa là một method có thể nhận tối đa 255 tham số, tuy nhiên mặc định chứa một tham số this nên chính xác sẽ còn 254.

Tuy nhiên chúng ta có thể nhận thấy trong mục 4.3.3 có nói đến việc tính toán số lượng tham số dựa trên kích thước của các tham số mặc định là 4 bytes, trong khi long và double có kích thước 8 bytes nên những tham số loại này được tính 4 thay vì các tham số kiểu dữ liệu thông thường có kích thước 4 bytes.

Quay trở lại với đầu bài mình có nói rằng việc một method chứa quá nhiều  số sẽ có một số vấn đề như sau:

  • Method chứa quá nhiều logic thực thi bên trong, nó nên được chia nhỏ hơn thành nhiều method khác, mỗi method chỉ nên triển khai một logic nhỏ.
  • Hoặc là có một object đang ẩn bên trong đó. Bạn có thể đang khởi tạo một object khác yêu cầu rất nhiều tham số để khởi tạo nó.

Ngày trước khi mình làm ở một công ty lớn thì thông thường một method cũng không quá 4 tham số, nếu nhiều hơn thì trong khâu review code sẽ bị nhắc nhở. 

Nguồn

https://stackoverflow.com/questions/30581531/maximum-number-of-parameters-in-java-method-declaration

https://softwareengineering.stackexchange.com/questions/145055/are-there-guidelines-on-how-many-parameters-a-function-should-accept

 

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x