[Thực hành] Refactoring – đổi tên biến và tách hằng

Mục tiêu

Luyện tập kỹ thuật đổi tên biến.

Điều kiện:

– Biết cách sử dụng kỹ thuật tái cấu trúc được sử dụng: Đổi tên biến và Tách hằng.

Mô tả

Trong phần này, chúng ta sẽ thực hiện thao tác tái cấu trúc mã nguồn của một ứng dụng có sẵn: https://github.com/codegym-vn/java-cleancode-refactoring-renaming

Kỹ thuật tái cấu trúc được sử dụng: Đổi tên biến và Tách hằng.

Hướng dẫn

Bước 1: Chạy dự án có sẵn

Clone dự án từ địa chỉ: https://github.com/codegym-vn/java-cleancode-refactoring-renaming

Mở mã nguồn dự án trong file Calculator và CalculatorTest để tìm hiểu mã nguồn.

Bước 2: Đổi tên biến ab và o trong lớp Calculator

Trong mã nguồn hiện tại, các tên biến ab và o không diễn đạt được ý nghĩa của nó. Cần thực hiện việc đổi tên biến này.

  • Biến a: firstOperand – toán hạng đầu tiên
  • Biến b: secondOperand – toán hạng thứ hai
  • Biến o: operator – toán tử

Mã nguồn sau khi đổi tên:

public static int calculate(int firstOperand, int secondOperand, char operator) {
switch (operator) {
case '+':
return firstOperand + secondOperand;
case '-':
return firstOperand - secondOperand;
case '*':
return firstOperand * secondOperand;
case '/':
if (secondOperand != 0)
return firstOperand / secondOperand;
else
throw new RuntimeException("Can not divide by 0");
default:
throw new RuntimeException("Unsupported operation");
}
}

Bước 3: Đổi tên biến ab và o trong lớp CalculatorTest

Mã kiểm thử cũng cần đảm bảo tiêu chí “clean”, do đó chúng ta cần thực hiện thao tác đổi tên các biến ab và o tương tự như trong lớp Calculator

Bước 4: Tách hằng

Trong mã nguồn hiện tại, các giá trị ‘+’, ‘-‘‘*’ và ‘/’ được coi là các giá trị “thần kỳ”. Chúng ta cần tách các giá trị này thành các hằng số để mã nguồn clean hơn.

  • Giá trị ‘+’: ADDITION – toán tử cộng
  • Giá trị ‘-‘: SUBTRACTION – toán tử trừ
  • Giá trị ‘*’: MULTIPLICATION – toán tử nhân
  • Giá trị ‘/’: DIVISION – toán tử chia

Mã nguồn sau khi tách hằng:

public static final char ADDITION = '+';
public static final char SUBTRACTION = '-';
public static final char MULTIPLICATION = '*';
public static final char DIVISION = '/';

public static int calculate(int firstOperand, int secondOperand, char operator) {
switch (operator) {
case ADDITION:
return firstOperand + secondOperand;
case SUBTRACTION:
return firstOperand - secondOperand;
case MULTIPLICATION:
return firstOperand * secondOperand;
case DIVISION:
if (secondOperand != 0)
return firstOperand / secondOperand;
else
throw new RuntimeException("Can not divide by 0");
default:
throw new RuntimeException("Unsupported operation");
}
}

Lưu ý: Sau mỗi bước refactor thì cần chạy lại các test case để đảm bảo mã nguồn vẫn hoạt động tốt.

Hướng dẫn nộp bài

– Up bài lên Github

– Paste link vào phần nộp bài và nhấn submit


Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.

Bài viết liên quan

Leave a Reply

Your email address will not be published.

TÀI LIỆU DEV WORLD
Cẩm nang phát triển bền vững với nghề lập trình!