Làm thế nào để ta chỉ ra được các phẩm chất tốt trong phần mềm và loại bỏ những đoạn mã lệnh tồi. Một trong các thủ tục cơ sở của cải tiến mã lệnh là việc bổ sung gián tiếp.
Gián tiếp hầu hết các dạng của nó có ý nghĩa là xác định các cấu trúc (chẳng hạn, các lớp, các phương thức) và đặt tên cho chúng. Sử dụng các cấu trúc được đặt tên làm cho mã lệnh dễ hiểu, bởi vì nó cho bạn cách thức để giải thích mục đích (dựa vào tên của các lớp và các phương thức) và chức năng (cấu trúc các lớp và thân các phương thức) của các lớp và các phương thức một cách rõ ràng. Kỹ thuật tương tự cho phép sự phân chia logic (chẳng hạn, các phương thức được gọi ở những nơi khác nhau hoặc các phương thức trong lớp cha được chia sẻ bởi các lớp con). Sự phân chia logic, ngược lại, giúp bạn quản lý sự thay đổi trong các hệ thống. Cuối cùng, tính đa hình (một dạng khác của gián tiếp) cung cấp một cách mềm dẻo, không tường minh để biểu diễn lập luận có điều kiện.
Giống như hầu hết các kỹ thuật khác, chìa khoá của thành công với kỹ thuật gián tiếp là chỉ đặt một số lượng vừa phải của nó ở nơi có thể thực hiện được. Có quá nhiều các kết quả gián tiếp được đưa vào hoặc các kết quả gián tiếp tồi được đưa vào trong một hệ thống chưa được hoàn thiện là điều không
nên làm. Kỹ thuật gián tiếp không có tác dụng thường được tìm thấy trong
một thành phần được dùng chung hoặc được dùng ở nhiều dạng, nhưng không làm thay đổi thêm gì nữa trong quá trình phát triển. Một danh mục cải tiến mã
lệnh cho bạn biết thời điểm bắt đầu để quyết định kỹ thuật gián tiếp nên được sử dụng ở đâu và sử dụng như thế nào.Về căn bản, nếu bạn gặp kỹ thuật gián tiếp và thấy rằng nó không có lợi, bạn cần loại bỏ nó.