Khá là kỳ diệu.
Ý tôi là, tại sao bạn đang truy cập phần tử thứ 6? Các ngữ nghĩa cần được áp dụng cho số đó là gì? Vì nó đứng tất cả chúng ta biết là "số 6 (không dựa trên số)". Nếu chúng tôi biết tuyên bố của arrayOfNumbers
, chúng tôi sẽ biết thêm về loại hình này (ví dụ: int
hoặc double
).
Nhưng nếu bạn nói:
arrayOfNumbers[kDistanceToSaturn];
... bây giờ nó có ý nghĩa nhiều hơn nữa cho người đọc mã.
Nói chung một lần lặp qua một mảng, thực hiện một số thao tác trên mỗi phần tử, bởi vì không biết mảng đó dài bao nhiêu và bạn không thể truy cập nó theo cách được mã hóa cứng.
Tuy nhiên, đôi khi các phần tử mảng có ý nghĩa cụ thể, ví dụ như trong lập trình đồ họa. Đôi khi một mảng luôn có cùng kích thước vì dữ liệu yêu cầu nó (ví dụ: một số ma trận biến đổi). Trong những trường hợp này, có thể hoặc không thể truy cập yếu tố cụ thể theo số: các chuyên gia miền sẽ biết bạn đang làm gì, nhưng những người tổng quát có lẽ sẽ không làm như vậy. Cho số chỉ số ma thuật một tên làm cho nó rõ ràng hơn cho những người có để duy trì mã của bạn, và giúp bạn ngăn chặn gõ nhầm một cách vô tình.
Trong ví dụ trên, tôi giả sử mảng của bạn giữ khoảng cách từ mặt trời đến một hành tinh. Mặt trời sẽ là yếu tố zeroth, do đó arrayOfNumbers [kDistanceToSun] = 0. Khi bạn tăng, mỗi phần tử chứa khoảng cách đến hành tinh xa nhất tiếp theo: thủy ngân, venus, v.v. Điều này dễ đọc hơn nhiều so với việc gõ số hành tinh bạn muốn. Trong trường hợp này mảng có kích thước cố định bởi vì có một số lượng cố định các hành tinh (tốt, ngoại trừ toàn bộ Pluto debacle).
Vấn đề khác là "arrayOfNumbers" không cho chúng tôi biết gì về nội dung của mảng.Chúng tôi đã biết một loạt các con số bởi vì chúng tôi đã nhìn thấy tờ khai ở đâu đó mà bạn nói int arrayOfNumers[12345];
hoặc tuy nhiên bạn đã khai báo nó. Thay vào đó, một cái gì đó như:
int distanceToPlanetsFromSol[kNumberOfPlanets];
... cho chúng ta một ý tưởng tốt hơn về những gì các dữ liệu thực sự là gì và ngữ nghĩa của nó là. Một trong những mục tiêu của bạn là một lập trình viên nên viết mã tự tài liệu theo cách này.
Và sau đó chúng ta có thể tranh luận ở nơi khác nếu kNumberOfPlanets
nên 8 hoặc 9. :)
'#define ONE 1' ...' i + = ONE; ' –
để tránh điều đó, Thiên Chúa đã cho chúng tôi i + +: P – Leo
Có. 6 là một số ma thuật. Nó luôn luôn là tốt hơn để tránh số ma thuật trong mã, ví dụ: '#define PI 3.1416', mà là tốt hơn so với sử dụng' 3.1416' trên tất cả các mã của bạn, nên giá trị của pi thay đổi. –