Thông thường, một nhà phát triển sẽ phải đối mặt với sự lựa chọn giữa hai cách khả thi để giải quyết một vấn đề - một cách dễ hiểu và dễ đọc, và một cách khác ít trực quan hơn, nhưng có thể hoạt động tốt hơn. Ví dụ, trong các ngôn ngữ dựa trên C, có hai cách để nhân một số với 2:
int SimpleMultiplyBy2(int x)
{
return x * 2;
}
và
int FastMultiplyBy2(int x)
{
return x << 1;
}
Phiên bản đầu tiên đơn giản hơn để nhận cho cả người đọc kỹ thuật và không kỹ thuật, nhưng phiên bản thứ hai có thể hoạt động tốt hơn, vì dịch chuyển bit là một hoạt động đơn giản hơn phép nhân. (Hiện tại, hãy giả sử rằng trình tối ưu hóa của trình biên dịch sẽ không phát hiện ra điều này và tối ưu hóa nó, mặc dù đó cũng là một điều cần cân nhắc).
Là một nhà phát triển, điều nào sẽ tốt hơn nếu là một nỗ lực ban đầu?