Introduction
Parameter names are identifiers used in method or constructor definitions. Choosing good parameter names improves code readability and maintainability.
Basic Syntax
returnType methodName(dataType parameterName) {
// Use parameterName
}
Simple Example
class Calculator {
// Good parameter names
int add(int firstNumber, int secondNumber) {
return firstNumber + secondNumber;
}
// Bad parameter names
int multiply(int a, int b) {
return a * b;
}
}
Naming Conventions
Rules:
- Use camelCase (start with lowercase)
- Use descriptive names
- Use full words (avoid abbreviations)
- Match field names when setting values
- Be consistent
Examples:
// Good
void setStudentName(String studentName) { }
void calculateInterest(double principal, double rate, int years) { }
void createUser(String username, String password, String email) { }
// Bad
void set(String s) { } // Not descriptive
void calc(double p, double r, int y) { } // Abbreviations
void create(String u, String p, String e) { } // Single letters
Matching Field Names
Using ‘this’ Keyword:
class Student {
private String name;
private int rollNo;
// Parameter names match field names
public Student(String name, int rollNo) {
this.name = name; // this.name = field, name = parameter
this.rollNo = rollNo;
}
public void setName(String name) {
this.name = name;
}
}
Different Parameter Names:
class Student {
private String name;
private int rollNo;
// Different parameter names (avoid this pattern)
public Student(String n, int r) {
name = n; // Less clear
rollNo = r;
}
}
Best Practice: Match parameter names with field names and use this.
Descriptive Names
Good Examples:
class BankAccount {
void deposit(double amount) {
// Clear what 'amount' means
}
void transfer(String fromAccount, String toAccount, double amount) {
// Each parameter clearly named
}
void calculateInterest(double principal, double rate, int years) {
// Self-documenting
}
}
Bad Examples:
class BankAccount {
void deposit(double d) { // What is 'd'?
}
void transfer(String a1, String a2, double amt) { // Confusing
}
void calculateInterest(double x, double y, int z) { // Not clear
}
}
Multiple Parameters
class Person {
private String firstName;
private String lastName;
private int age;
private String email;
private String phone;
// Clear parameter names
public Person(String firstName, String lastName, int age,
String email, String phone) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.email = email;
this.phone = phone;
}
}
Boolean Parameters
Use Meaningful Names:
// Good
void setActive(boolean isActive) { }
void enableDebug(boolean debugEnabled) { }
void checkPassword(String password, boolean caseSensitive) { }
// Bad
void set(boolean b) { }
void enable(boolean flag) { }
void check(String s, boolean b) { }
Array and Collection Parameters
class ArrayExample {
// Clear array parameter names
void printNumbers(int[] numbers) {
for (int number : numbers) {
System.out.println(number);
}
}
void printNames(String[] names) {
for (String name : names) {
System.out.println(name);
}
}
void addStudents(ArrayList<Student> students) {
for (Student student : students) {
// Process student
}
}
}
Similar Parameters
class Rectangle {
private double length;
private double width;
// Distinguish similar parameters
public Rectangle(double length, double width) {
this.length = length;
this.width = width;
}
// Clear difference
void resize(double newLength, double newWidth) {
this.length = newLength;
this.width = newWidth;
}
}
class Point {
private int x;
private int y;
// x and y are standard for coordinates
public Point(int x, int y) {
this.x = x;
this.y = y;
}
}
Constructor Parameter Names
class Employee {
private String employeeId;
private String employeeName;
private double salary;
private String department;
// Constructor with descriptive parameters
public Employee(String employeeId, String employeeName,
double salary, String department) {
this.employeeId = employeeId;
this.employeeName = employeeName;
this.salary = salary;
this.department = department;
}
}
Method Parameter Names
class MathOperations {
// Clear what each parameter represents
double calculateAreaOfRectangle(double length, double width) {
return length * width;
}
double calculateAreaOfCircle(double radius) {
return Math.PI * radius * radius;
}
double calculateDistance(double x1, double y1, double x2, double y2) {
double dx = x2 - x1;
double dy = y2 - y1;
return Math.sqrt(dx * dx + dy * dy);
}
}
Getter and Setter Parameter Names
class Product {
private String productName;
private double price;
private int quantity;
// Getter - no parameters
public String getProductName() {
return productName;
}
// Setter - parameter matches field name
public void setProductName(String productName) {
this.productName = productName;
}
public void setPrice(double price) {
if (price > 0) {
this.price = price;
}
}
public void setQuantity(int quantity) {
if (quantity >= 0) {
this.quantity = quantity;
}
}
}
Common Patterns
Pattern 1: Value Parameters
void setValue(int value) { }
void setAmount(double amount) { }
void setCount(int count) { }
Pattern 2: Source/Target
void copy(String source, String target) { }
void move(File sourceFile, File targetFile) { }
Pattern 3: Old/New
void update(String oldValue, String newValue) { }
void replace(int oldIndex, int newIndex) { }
Pattern 4: Start/End
void setRange(int startIndex, int endIndex) { }
void substring(int startPos, int endPos) { }
Avoid These
// ❌ Single letters (except i, j in loops)
void method(int a, int b, int c) { }
// ❌ Abbreviations
void method(String fn, String ln) { // firstName, lastName?
}
// ❌ Meaningless names
void method(String temp, int data, double value) { }
// ❌ Numbers
void method(int num1, int num2, int num3) { }
Complete Example
class Student {
private String studentId;
private String studentName;
private int age;
private String course;
private double marks;
// Constructor with clear parameter names
public Student(String studentId, String studentName, int age,
String course, double marks) {
this.studentId = studentId;
this.studentName = studentName;
this.age = age;
this.course = course;
this.marks = marks;
}
// Setters with matching parameter names
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public void setMarks(double marks) {
if (marks >= 0 && marks <= 100) {
this.marks = marks;
}
}
// Method with descriptive parameters
public void updateCourse(String newCourse) {
this.course = newCourse;
}
public void incrementAge(int years) {
this.age += years;
}
}
Quick Reference
// ✓ Good parameter names
void deposit(double amount) { }
void setName(String name) { }
void calculate(double principal, double rate, int years) { }
void transfer(String fromAccount, String toAccount) { }
// ✗ Bad parameter names
void deposit(double d) { }
void setName(String s) { }
void calculate(double p, double r, int y) { }
void transfer(String a1, String a2) { }
Benefits of Good Parameter Names
- Readability: Code is self-documenting
- Maintainability: Easier to understand later
- Debugging: Clear what values represent
- Collaboration: Others understand quickly
- Fewer Errors: Less confusion
Exam Tips
Remember:
- Use camelCase for parameters
- Use descriptive names
- Match field names in constructors/setters
- Use this to distinguish field from parameter
- Avoid single letters (except loops)
- Avoid abbreviations
- Be consistent
- Use full words
- Make parameters self-documenting
- Follow Java naming conventions
Common Questions:
- What are parameter names?
- Naming conventions for parameters?
- Why match field names?
- When to use ‘this’?
- Benefits of good parameter names?
- What to avoid in parameter names?