2013-04-01 7 views
5

Chciałbym, aby nazwy moich zmiennych były krótkie, ale czytelne.Nazwy zmiennych: Jak skrócić "indeks"?

Nadal, gdy na przykład nazywanie zmiennej, która zawiera indeks jakiegoś elementu na jakiejś liście, mam tendencję do używania elemIndex, ponieważ nie znam właściwego (i powszechnie rozumianego) sposobu skracania słowa "index" ".

Czy istnieje kanoniczna metoda skracania "indeksu"? Czy też najlepiej jest przeliterować to w całości, aby uniknąć nieporozumień?

+5

Nigdy nie zakładaj, że inny programista zrozumie Twoje skróty. Dla dobra ludzkości, przeliteruj je. –

+0

@BradM: Więc użycie 'Idx' jak Alan jest również złym pomysłem? –

+0

@mareser Jeśli jesteś o to surowy, to tak, to zły pomysł.Staram się jedynie skracać rzeczy, które są naprawdę długie, lub powinny być wyraźnie widoczne z kontekstu, aw każdym przypadku skomentować pierwsze/kluczowe wystąpienie tego skrótu w sekcji. W praktyce, chociaż unikanie skrótów jest dobrą zasadą, istnieje punkt, w którym może to negatywnie wpłynąć na czytelność kodu (i zwiększyć liczbę literówek). To kwestia osądu ... lub trzymania się przewodnika po swojej organizacji. – Alan

Odpowiedz

7

Z mojego doświadczenia wynika, że ​​zależy to od kontekstu. Zazwyczaj mogę stwierdzić, czy coś jest indeksem od tego, do czego jest używane, więc często jestem bardziej zainteresowany tym, co jest indeksem.

Moja zasada idzie mniej więcej tak:

Jeśli jest to tylko wskaźnik pętla w krótkiej pętli (np: wszystko mieści się na ekranie na raz) i kontekst informuje czytelnika, co indeks robi, wtedy prawdopodobnie możesz uciec z czymś prostym, takim jak i.

Przykład: wartości odcięcia obraz

//For each pixel in the image, threshold it 
for (int i = 0; i < height; i++) { 
    for (int j = 0; j < width; j++) { 
    if (image[i][j] < 128) { 
     image[i][j] = 0; 
    } else { 
     image[i][j] = 255; 
    } 
    } 
} 

Jeżeli sekcja kodu jest większa, lub masz wiele indeksami dzieje, wskazać, które wymienione jest indeksem do:

File[] files_in_dir = ...; 
int num_files = files_in_dir.length(); 
for (int fileIdx = 0; fileIdx < num_files; fileIdx++) { //for each file in dir. 
    ... 
} 

Jeżeli jednak indeks jest rzeczywiście ważny dla znaczenia kodu, a następnie dokładnie go określić, na przykład:

int imageToDeleteIdx = 3; //index of the image to be deleted. 
image_list.delete(imageToDeleteIdx); 

Jednak kod należy uważać za "napisz raz, czytaj wiele", a twój wysiłek powinien zostać przydzielony jako taki; tj .: mnóstwo na piśmie, więc czytanie jest łatwe. W tym celu, jak wspomniał Brad M, nigdy nie zakładaj, że czytelnik rozumie twoje skróty. Jeśli zamierzasz używać skrótów, to przynajmniej zadeklaruj je w komentarzach.

1

Trzymaj się ustalonych i dobrze znanych konwencji. Jeśli używasz wspólnych konwencji, ludzie będą mieli mniej niespodzianek podczas czytania Twojego kodu.

Programistów używa się do używania wielu konwencji z matematyki. Na przykład. matematycznych Zwykle etykieta indeksach:

i, j, k 

jednocześnie na przykład Współrzędne są określane literami, takimi jak:

x, y, z 

Zależy to oczywiście od kontekstu. Na przykład. stosując i oznaczający jakiś globalny wskaźnik byłby straszny pomysł. Używaj krótkich nazw dla bardzo lokalnych zmiennych i dłuższych nazw dla bardziej globalnych funkcji i zmiennych, jest dobrą zasadą.

Dla mnie ten styl był pod wpływem Rob Pike, który precyzuje więcej na ten here. Jako ktoś, kto interesuje się projektowaniem i doświadczeniem w zakresie interfejsu użytkownika, napisałem o tym obszerniej.