Sự thật:
i ++ và ++ tôi đều dễ đọc như nhau. Bạn không thích nó bởi vì bạn không quen với nó, nhưng về cơ bản không có gì bạn có thể hiểu sai về nó, vì vậy không còn phải đọc hay viết nữa.
Trong ít nhất một số trường hợp, toán tử postfix sẽ kém hiệu quả hơn.
Tuy nhiên, trong 99,99% trường hợp, điều đó không thành vấn đề bởi vì (a) nó sẽ hoạt động theo kiểu đơn giản hoặc nguyên thủy và nó chỉ là vấn đề nếu sao chép một vật thể lớn (b) nó sẽ không hoạt động phần quan trọng của mã (c) bạn không biết trình biên dịch sẽ tối ưu hóa nó hay không, nó có thể làm được.
Vì vậy, tôi khuyên bạn nên sử dụng tiền tố trừ khi bạn đặc biệt cần hậu tố là một thói quen tốt để tham gia, chỉ vì (a) đó là thói quen tốt để chính xác với những thứ khác và (b) một lần trong trăng xanh bạn sẽ có ý định sử dụng tiền tố và hiểu sai về cách làm tròn: nếu bạn luôn viết những gì bạn muốn nói, điều đó ít có khả năng. Luôn có sự đánh đổi giữa hiệu suất và tối ưu hóa.
Bạn nên sử dụng ý thức chung của bạn và không tối ưu hóa vi mô cho đến khi bạn cần, nhưng không phải là không hiệu quả vì lợi ích của nó. Thông thường, điều này có nghĩa là: trước tiên, loại trừ bất kỳ cấu trúc mã nào không hiệu quả ngay cả trong mã không quan trọng về thời gian (thông thường một cái gì đó đại diện cho một lỗi khái niệm cơ bản, như chuyển các đối tượng 500MB theo giá trị mà không có lý do); và thứ hai, trong mọi cách viết mã khác, hãy chọn cách rõ ràng nhất.
Tuy nhiên, ở đây, tôi tin rằng câu trả lời rất đơn giản: Tôi tin rằng viết tiền tố trừ khi bạn đặc biệt cần postfix là (a) rất rõ ràng hơn và (b) rất có khả năng hiệu quả hơn, vì vậy bạn nên luôn viết nó theo mặc định, nhưng không lo lắng về nó nếu bạn quên
Sáu tháng trước, tôi cũng nghĩ giống như bạn, rằng i ++ tự nhiên hơn, nhưng đó hoàn toàn là những gì bạn đã quen.
EDIT 1: Scott Meyers, trong "C ++ hiệu quả hơn", người mà tôi thường tin tưởng vào điều này, nói chung bạn nên tránh sử dụng toán tử postfix trên các loại do người dùng xác định (bởi vì việc triển khai duy nhất của hàm tăng hậu tố là để thực hiện sao chép đối tượng, gọi hàm tăng tiền tố để thực hiện tăng và trả về bản sao, nhưng thao tác sao chép có thể tốn kém).
Vì vậy, chúng tôi không biết liệu có bất kỳ quy tắc chung nào về (a) liệu điều đó có đúng ngày hôm nay hay không, (b) liệu nó có áp dụng (ít hơn) cho các loại nội tại (c) hay không, liệu bạn có nên sử dụng "++" hay không bất cứ điều gì nhiều hơn một lớp lặp nhẹ bao giờ. Nhưng với tất cả các lý do tôi đã mô tả ở trên, điều đó không thành vấn đề, hãy làm những gì tôi đã nói trước đó.
EDIT 2: Điều này đề cập đến thực hành chung. Nếu bạn nghĩ nó KHÔNG quan trọng trong một số trường hợp cụ thể, thì bạn nên lập hồ sơ và xem. Hồ sơ là dễ dàng và giá rẻ và làm việc. Trích từ các nguyên tắc đầu tiên, những gì cần được tối ưu hóa là khó khăn và tốn kém và không hoạt động.
i++
trước khi tôi biết nó có thể ảnh hưởng đến hiệu suất hơn++i
, vì vậy tôi đã chuyển đổi. Lúc đầu trông có vẻ hơi lạ, nhưng sau một thời gian tôi đã quen với nó và bây giờ nó cảm thấy tự nhiên nhưi++
.