Code Smell 10 - Too Many Arguments

Code Smell 10 - Too Many Arguments

Play this article

Objects or functions need too many arguments to work.

TL;DR: Don't pass more than three arguments to your functions.


  • Low maintainability

  • Low Reuse

  • Coupling


  • Find cohesive relations among arguments

  • Create a "context".

  • Consider using a Method Object Pattern.

  • Avoid "basic" Types: strings, arrays, integers, etc. Think on objects.


  • Operations in real world needing not cohesive collaborators.

Sample Code


public class Printer {   
  void print(String documentToPrint, 
         String papersize,
           String orientation, 
           boolean grayscales,
           int pagefrom,
           int pageTo,
           int copies,
           float marginLeft,
           float marginRight,
           float marginTop,
           float marginBotton         
final public class PaperSize {

final public class Document {

final public class PrintMargins {

final public class PrintRange {

final public class ColorConfiguration {

final public class PrintOrientation {

final public class PrintSetup {
    public PrintSetup(PaperSize papersize,
           PrintOrientation orientation, 
           ColorConfiguration color,
           PrintRange range,
           int copiesCount,
           PrintMargins margins

final public class Printer {   
  void print(Document documentToPrint, 
         PrintSetup setup        


Most linters warn when the arguments list is too large.


  • primitive


Relate arguments and group them. Always favor real world mappings. Find in real world how to group the arguments in cohesive objects.

If a function gets too many arguments, some of them might be related to the class construction. This is a design smell too.



Photo by Tobias Tullius on Unsplash

This article is part of the CodeSmell Series.

Last update: 2021/06/13